(57)【要約】【課題】電子データに付された署名の正当性を低コストで検証できる署名検証システムを提供する。【解決手段】署名検証システムは、通信装置と検証装置とがネットワークを介して接続される。通信装置は、第１の乱数から第１のハッシュ値を導出し、一方向性関数を用いて、電子データと、第１のハッシュ値及び通信装置の公開鍵を含む通信装置の証明書と、を含むデータから、第２のハッシュ値を導出し、第２のハッシュ値に対し、通信装置の秘密鍵を用いて署名を生成し、電子データ、証明書、及び署名を、検証装置に送信する。検証装置は、電子データ、証明書、及び署名を受信し、証明書に含まれる第１のハッシュ値を用いて通信装置を認証し、一方向性関数を用いて、電子データと証明書とを含むデータから第２のハッシュ値を導出し、証明書に含まれる通信装置の公開鍵と導出された第２のハッシュ値とを用いて署名を検証する。【選択図】図１
2015226132.tif 000002
【特許請求の範囲】
【請求項１】
通信装置と検証装置とがネットワークを介して接続された署名検証システムであって、
前記通信装置は、
第１の乱数を生成する第１の乱数生成部と、
一方向性関数を用いて、前記第１の乱数から第１のハッシュ値を導出する第１の一方向性関数処理部と、
前記通信装置の秘密鍵及び公開鍵を生成する公開鍵ペア生成部と、
一方向性関数を用いて、電子データと、前記第１のハッシュ値及び前記通信装置の公開鍵を含む通信装置の証明書と、を含むデータから、第２のハッシュ値を導出する第２の一方向性関数処理部と、
前記第２のハッシュ値に対し、前記通信装置の秘密鍵を用いて署名を生成する署名生成部と、
前記電子データ、前記証明書、及び前記署名を、前記検証装置に送信する第１の通信部と、
を備え、
前記検証装置は、
前記通信装置からの前記電子データ、前記証明書、及び前記署名を受信する第２の通信部と、
前記証明書に含まれる前記第１のハッシュ値を用いて、前記通信装置を認証する認証処理部と、
一方向性関数を用いて、前記電子データと前記証明書とを含むデータから、第２のハッシュ値を導出する第３の一方向性関数処理部と、
前記証明書に含まれる前記通信装置の公開鍵と前記導出された第２のハッシュ値とを用いて、前記署名を検証する署名検証部と、
を備える署名検証システム。
【請求項２】
請求項１に記載の署名検証システムは、
前記通信装置は、前記通信装置の証明書を生成する証明書生成部を備える、署名検証システム。
【請求項３】
請求項１または２に記載の署名検証システムは、
前記検証装置は、
第２の乱数を生成する第２の乱数生成部と、
前記第２の乱数と前記通信装置の公開鍵とを用いて、第１の暗号化データを生成する第２のデータ暗号化部を備え、
前記第２の通信部は、前記第１の暗号化データを前記通信装置へ送信し、
前記第１の通信部は、前記検証装置からの前記第１の暗号化データを受信し、
前記通信装置は、
前記通信装置の秘密鍵を用いて、第１の暗号化データを復号して前記前記第２の乱数を取得する第１のデータ復号部と、
前記第１の乱数及び前記第２の乱数を用いて、第２の暗号化データを生成する第１のデータ暗号化部と、
を備え、
前記第１の通信部は、前記第２の暗号化データを前記検証装置へ送信し、
前記第２の通信部は、前記通信装置からの前記第２の暗号化データを受信し、
前記検証装置は、
前記第２の乱数を用いて、前記第２の暗号化データを復号して前記第１の乱数を取得する第２のデータ復号部を備え、
前記第３の一方向性関数処理部は、前記第１の乱数から第１のハッシュ値を導出し、
前記認証処理部は、前記導出された第１のハッシュ値と、前記証明書に含まれる第１のハッシュ値と、に基づいて、前記通信装置を認証する、署名検証システム。
【請求項４】
請求項３に記載の署名検証システムは、
前記通信装置は、前記通信装置と前記検証装置とが共有する共通鍵を記憶する第１の記憶部を備え、
前記検証装置は、前記共通鍵を記憶する第２の記憶部を備え、
前記第２のデータ暗号化部は、前記第２の乱数、前記通信装置の公開鍵、及び前記共通鍵を用いて、前記第１の暗号化データを生成し、
前記第１のデータ復号部は、前記通信装置の秘密鍵及び前記共通鍵を用いて、前記第１の暗号化データを復号して前記第２の乱数を取得する、署名検証システム。
【請求項５】
ネットワークを介して検証装置に接続される通信装置であって、
第１の乱数を生成する乱数生成部と、
一方向性関数を用いて、前記第１の乱数から第１のハッシュ値を導出する第１の一方向性関数処理部と、
前記通信装置の秘密鍵及び公開鍵を生成する公開鍵ペア生成部と、
一方向性関数を用いて、電子データと、前記第１のハッシュ値及び前記通信装置の公開鍵を含む通信装置の証明書と、を含むデータから、第２のハッシュ値を導出する第２の一方向性関数処理部と、
前記第２のハッシュ値に対し、前記通信装置の秘密鍵を用いて署名を生成する署名生成部と、
前記電子データ、前記証明書、及び前記署名を、前記検証装置に送信する通信部と、
を備える通信装置。
【請求項６】
ネットワークを介して通信装置に接続される検証装置であって、
前記通信装置から、電子データと、前記通信装置により生成された乱数から導出された第１のハッシュ値及び前記通信装置の公開鍵を含む通信装置の証明書と、一方向性関数を用いて前記電子データと前記証明書とを含むデータから導出された第２のハッシュ値に対して、前記通信装置の秘密鍵を用いて生成された署名と、を受信する通信部と、
前記証明書に含まれる前記第１のハッシュ値を用いて、前記通信装置を認証する認証処理部と、
一方向性関数を用いて、前記電子データと前記証明書とを含むデータから、第２のハッシュ値を導出する一方向性関数処理部と、
前記証明書に含まれる前記通信装置の公開鍵と前記導出された第２のハッシュ値とを用いて、前記署名を検証する署名検証部と、
を備える検証装置。
【請求項７】
ネットワークを介して検証装置に接続される通信装置における署名生成方法であって、
第１の乱数を生成するステップと、
一方向性関数を用いて、前記第１の乱数から第１のハッシュ値を導出するステップと、
前記通信装置の秘密鍵及び公開鍵を生成するステップと、
電子データと、前記第１のハッシュ値及び前記通信装置の公開鍵を含む通信装置の証明書と、を含むデータから、第２のハッシュ値を導出するステップと、
前記第２のハッシュ値に対し、前記通信装置の秘密鍵を用いて署名を生成するステップと、
を備える署名生成方法。
【請求項８】
ネットワークを介して通信装置に接続される検証装置における署名検証方法であって、
前記通信装置により生成された乱数から導出された第１のハッシュ値及び前記通信装置の公開鍵を含む前記通信装置の証明書に含まれる前記第１のハッシュ値を用いて、前記通信装置を認証するステップと、
一方向性関数を用いて、電子データと前記証明書とを含むデータから、第２のハッシュ値を導出するステップと、
前記証明書に含まれる前記通信装置の公開鍵と前記導出された第２のハッシュ値とを用いて、署名を検証するステップと、
を備え、
前記署名は、前記通信装置により前記電子データと前記証明書とを含むデータから導出された第２のハッシュ値に対して、前記通信装置の秘密鍵を用いて生成された署名である、署名検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、署名検証システム、通信装置、検証装置、署名生成方法、及び署名検証方法に関する。
【背景技術】
【０００２】
従来、記録された電子データが改竄されていないことを証明するために、電子データに対して、デジタル署名と、デジタル署名を検証するためのデジタル証明書と、が付与されることが知られている。デジタル署名を単に「署名」とも記載し、デジタル証明書を単に「証明書」とも記載する。
【０００３】
電子データの有効性を検証する方法として、二つの装置が、同じ認証局により署名された証明書を用いて、電子データの出所を認証する出所認証方法が知られている（例えば、特許文献１参照）。
【０００４】
電子データに付与される署名を検証するシステムとして、以下の電子証明書有効性確認システムが知られている。この電子証明書有効性確認システムでは、電子データの送信元が、電子データの送信元及び送信先以外の第三者としての認証局から有効性確認情報を入手し、電子データの送信先に有効性確認情報を送付する（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平９−３０５６６１号公報
【特許文献２】特開２００５−２５２３１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１，２に記載された技術では、電子データに付された署名の正当性を検証することが低コストでは困難であった。
【０００７】
本発明は、上記事情に鑑みてなされたものであり、電子データに付された署名の正当性を低コストで検証できる署名検証システム、通信装置、検証装置、署名生成方法、及び署名検証方法を提供する。
【課題を解決するための手段】
【０００８】
本発明の署名検証システムは、通信装置と検証装置とがネットワークを介して接続された署名検証システムであって、前記通信装置は、第１の乱数を生成する第１の乱数生成部と、一方向性関数を用いて、前記第１の乱数から第１のハッシュ値を導出する第１の一方向性関数処理部と、前記通信装置の秘密鍵及び公開鍵を生成する公開鍵ペア生成部と、一方向性関数を用いて、電子データと、前記第１のハッシュ値及び前記通信装置の公開鍵を含む通信装置の証明書と、を含むデータから、第２のハッシュ値を導出する第２の一方向性関数処理部と、前記第２のハッシュ値に対し、前記通信装置の秘密鍵を用いて署名を生成する署名生成部と、前記電子データ、前記証明書、及び前記署名を、前記検証装置に送信する第１の通信部と、を備え、前記検証装置は、前記通信装置からの前記電子データ、前記証明書、及び前記署名を受信する第２の通信部と、前記証明書に含まれる前記第１のハッシュ値を用いて、前記通信装置を認証する認証処理部と、一方向性関数を用いて、前記電子データと前記証明書とを含むデータから、第２のハッシュ値を導出する第３の一方向性関数処理部と、前記証明書に含まれる前記通信装置の公開鍵と前記導出された第２のハッシュ値とを用いて、前記署名を検証する署名検証部と、を備える。
【０００９】
本発明の通信装置は、ネットワークを介して検証装置に接続される通信装置であって、第１の乱数を生成する乱数生成部と、一方向性関数を用いて、前記第１の乱数から第１のハッシュ値を導出する第１の一方向性関数処理部と、前記通信装置の秘密鍵及び公開鍵を生成する公開鍵ペア生成部と、一方向性関数を用いて、電子データと、前記第１のハッシュ値及び前記通信装置の公開鍵を含む通信装置の証明書と、を含むデータから、第２のハッシュ値を導出する第２の一方向性関数処理部と、前記第２のハッシュ値に対し、前記通信装置の秘密鍵を用いて署名を生成する署名生成部と、前記電子データ、前記証明書、及び前記署名を、前記検証装置に送信する通信部と、を備える。
【００１０】
本発明の検証装置は、ネットワークを介して通信装置に接続される検証装置であって、前記通信装置から、電子データと、前記通信装置により生成された乱数から導出された第１のハッシュ値及び前記通信装置の公開鍵を含む通信装置の証明書と、一方向性関数を用いて前記電子データと前記証明書とを含むデータから導出された第２のハッシュ値に対して、前記通信装置の秘密鍵を用いて生成された署名と、を受信する通信部と、前記証明書に含まれる前記第１のハッシュ値を用いて、前記通信装置を認証する認証処理部と、一方向性関数を用いて、前記電子データと前記証明書とを含むデータから、第２のハッシュ値を導出する一方向性関数処理部と、前記証明書に含まれる前記通信装置の公開鍵と前記導出された第２のハッシュ値とを用いて、前記署名を検証する署名検証部と、を備える。
【００１１】
本発明の署名生成方法は、ネットワークを介して検証装置に接続される通信装置における署名生成方法であって、第１の乱数を生成するステップと、一方向性関数を用いて、前記第１の乱数から第１のハッシュ値を導出するステップと、前記通信装置の秘密鍵及び公開鍵を生成するステップと、前記電子データと、前記第１のハッシュ値及び前記通信装置の公開鍵を含む通信装置の証明書と、を含むデータから、第２のハッシュ値を導出するステップと、前記第２のハッシュ値に対し、前記通信装置の秘密鍵を用いて署名を生成するステップと、を備える。
【００１２】
本発明の署名検証方法は、ネットワークを介して通信装置に接続される検証装置における署名検証方法であって、前記通信装置により生成された乱数から導出された第１のハッシュ値及び前記通信装置の公開鍵を含む前記通信装置の証明書に含まれる前記第１のハッシュ値を用いて、前記通信装置を認証するステップと、一方向性関数を用いて、電子データと前記証明書とを含むデータから、第２のハッシュ値を導出するステップと、前記証明書に含まれる前記通信装置の公開鍵と前記導出された第２のハッシュ値を用いて、署名を検証するステップと、を備え、前記署名は、前記通信装置により前記電子データと前記証明書とを含むデータから導出された第２のハッシュ値に対して、前記通信装置の秘密鍵を用いて生成された署名である。
【発明の効果】
【００１３】
本発明によれば、電子データに付された署名の正当性を低コストで検証できる。
【図面の簡単な説明】
【００１４】
【図１】実施形態おける署名検証システムの構成例を示すブロック図
【図２】実施形態おける装置パスワード登録シーケンスの一例を示すシーケンス図
【図３】実施形態おける証明書作成シーケンスの一例を示すシーケンス図
【図４】実施形態おける署名作成シーケンスの一例を示すシーケンス図
【図５】実施形態おける装置認証シーケンスの一例を示すシーケンス図
【図６】実施形態おける装置認証シーケンスの一例を示すシーケンス図（図５の続き）
【図７】実施形態おける装置認証シーケンスの一例を示すシーケンス図（図６の続き）
【図８】実施形態おける署名検証シーケンスの一例を示すシーケンス図
【発明を実施するための形態】
【００１５】
以下、本発明の実施形態について、図面を用いて説明する。
【００１６】
（本発明の一形態を得るに至った経緯）
近年、インターネットの進展に伴って、例えば、複合機、カメラ、スマート家電（ネットワークに接続される家電）が、ネットワークに接続されることで、付加価値を提供する商品やシステムが増えている。ネットワークに接続される端末を、ネットワーク端末とも呼ぶ。
【００１７】
例えば、ネットワーク端末としての監視カメラが記録する電子データ（例えば映像データ、音声データ）加工又は編集が容易であるので、容易に改竄され得る。従って、電子データは、裁判等における証拠能力が不十分となる可能性がある。
【００１８】
記録された電子データが改竄されていないことを証明するために、電子データに対して、署名と証明書とが付与されることがある。従来の署名システムでは、電子データの送信元から配布された署名と証明書とが、実際に送信元により生成されたものか否かを低コストで証明することが困難である。例えば、電子データに付される証明書に、第三者が信頼できる方法で署名する場合、コストが高くなり、署名検証の処理時間が長くなる。また、例えば、証明書として送信元が署名した自己署名証明書を用いる場合、改竄等が起こり易く、署名の信頼性が乏しい。
【００１９】
特許文献１の技術では、電子データの送信元が証明書を保持しても、電子データの送信先が証明書を保持していない場合、電子データが改竄されていないことを証明することは困難である。
【００２０】
特許文献２の技術では、電子データの送信元及び送信先以外の第三者としての認証局と通信する必要がある。そのため、署名を検証するためのコストが高くなり、署名検証の処理時間が長くなる。
【００２１】
以下、電子データに付された署名の正当性を低コストで検証できる署名検証システム、通信装置、検証装置、署名生成方法、及び署名検証方法について説明する。
【００２２】
（実施形態）
図１は、実施形態おける署名検証システム１０の構成例を示すブロック図である。署名検証システム１０は、ネットワーク端末としての通信装置２０、検証装置５０、及び管理装置７０を備える。通信装置２０、検証装置５０、及び管理装置７０は、インターネット８０を介して接続される。インターネット８０は、ネットワークの一例である。
【００２３】
通信装置２０は、例えば、ネットワークに接続されるカメラ、複合機、テレビ、スマートフォン、タブレット端末である。通信装置２０は、乱数生成部２１、一方向性関数処理部２２、証明書生成部２３、公開鍵ペア生成部２４、署名生成部２５、共通鍵復号部２７、電子データ生成部２８、共通鍵暗号化部２９、秘密鍵復号部３０、第１通信部３１、第２通信部３２、及び記憶部３３を有する。
【００２４】
乱数生成部２１は、乱数を生成する。乱数生成部２１は、例えば、一般的な擬似乱数生成アルゴリズムを用いて擬似乱数を生成してもよいし、乱数生成ハードウェアを用いて真性乱数を生成してもよい。乱数生成部２１は、第１の乱数生成部の一例である。
【００２５】
一方向性関数処理部２２は、例えば、一方向性関数を用いて、各種データ（例えば乱数）からハッシュ値を生成する。一方向性関数処理部２２は、第１の一方向性関数処理部及び第２の一方向性関数処理部の一例である。
【００２６】
証明書生成部２３は、例えば、通信装置２０の公開鍵の情報を基に、通信装置２０の秘密鍵により署名し、通信装置２０の証明書を生成する。
【００２７】
公開鍵ペア生成部２４は、例えば、乱数を用いて、通信装置２０の公開鍵ペア（公開鍵と秘密鍵のペア）を生成する。
【００２８】
署名生成部２５は、例えば、通信装置２０の秘密鍵を用いて、所定の署名アルゴリズムにより署名を生成する。この場合、署名生成部２５は、通信装置２０の秘密鍵を用いて、所定のデータを暗号化する。署名アルゴリズムは、例えば、公開鍵暗号方式とハッシュ関数との組み合わせによる署名アルゴリズムを含む。
【００２９】
署名アルゴリズムは、例えば、ＲＳＡＳＳＡ（ＲＳＡ  Ｓｉｇｎａｔｕｒｅ  Ｓｃｈｅｍｅ  ｗｉｔｈ  Ａｐｐｅｎｄｉｘ）−ＰＫＣＳ（Ｐｕｂｌｉｃ  Ｋｅｙ  Ｃｒｙｐｔｏｇｒａｐｈｙ  Ｓｔａｎｄａｒｄｓ）１  ｖ１．５を含む。署名アルゴリズムは、例えば、ＲＳＡＳＳＡ−ＰＳＳ（Ｐｒｏｂａｂｉｌｉｓｔｉｃ  Ｓｉｇｎａｔｕｒｅ  Ｓｃｈｅｍｅ）を含む。署名アルゴリズムは、例えば、ＤＳＡ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｔｕｒｅ  Ａｌｇｏｒｉｔｈｍ）、又はＥＣＤＳＡ（Ｅｌｌｉｐｔｉｃ  Ｃｕｒｖｅ  ＤＳＡ）を含む。
【００３０】
共通鍵復号部２７は、検証装置５０との間で共有する共通鍵を用いて、検証装置５０から送信される暗号化データを復号する。共通鍵復号部２７は、第１のデータ復号部の一例である。
【００３１】
電子データ生成部２８は、証拠性の担保を必要とする電子データを作成する。この電子データは、例えば、映像データ、音声データ、通信装置２０のアクセスログ、を含む。電子データ生成部２８は、生成された電子データと他のデータとを結合してもよい。
【００３２】
共通鍵暗号化部２９は、共通鍵を用いて、所定の共通鍵暗号アルゴリズム（例えばＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ））を用いて、各種データを暗号化する。共通鍵暗号化部２９は、第１のデータ暗号化部の一例である。
【００３３】
秘密鍵復号部３０は、通信装置２０の秘密鍵を用いて、所定の公開鍵アルゴリズムに従って、通信装置２０の公開鍵により暗号化された暗号化データを復号する。秘密鍵復号部３０は、第１のデータ復号化部の一例である。
【００３４】
第１通信部３１は、例えば、通信装置２０の設置工程において使用され、管理装置７０と通信する。第１通信部３１は、例えば、シリアルＩ／Ｆ（Ｉｎｔｅｒｆａｃｅ）、通信インタフェースを含む。シリアルＩ／Ｆは、例えば、ＲＳ−２３２Ｃ（Ｒｅｃｏｍｍｅｎｄｅｄ  Ｓｔａｎｄａｒｄ  ２３２  ｖｅｒｓｉｏｎ  Ｃ）を含む。通信インタフェースは、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、Ｔｈｕｎｄｅｒｂｏｌｔ（登録商標）を含む。
【００３５】
第２通信部３２は、インターネット８０を介して検証装置５０と通信するインタフェースを含む。第２通信部３２は、例えば、有線インタフェース、又は無線インタフェースを含む。有線インタフェースは、例えば、有線ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）インタフェースを含む。無線インタフェースは、例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）、無線ＬＡＮインタフェースを含む。第２通信部３２は、第１の通信部の一例である。
【００３６】
記憶部３３は、各種データを記憶する。記憶部３３は、例えば、通信装置２０の公開鍵ペア、共通鍵、検証装置５０の公開鍵、を記憶する。記憶部３３は、第１の記憶部の一例である。
【００３７】
通信装置２０は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を備える。例えば、ＣＰＵが、ＲＯＭに記憶されたプログラムを実行することで、通信装置２０内の各部における各種機能を実現する。
【００３８】
管理装置７０は、装置パスワード生成部７１、第１通信部７２、及び第２通信部７３を有する。
【００３９】
装置パスワード生成部７１は、装置パスワードを生成する。装置パスワードは、例えば任意の値である。装置パスワードは、例えば、通信装置２０の設置工程において、通信装置２０及び検証装置５０に設定される。
【００４０】
第１通信部７２は、通信装置２０の設置工程において使用され、通信装置２０及び検証装置５０と通信する。第１通信部７２は、例えば、シリアルＩ／Ｆ、通信インタフェースを含む。シリアルＩ／Ｆは、例えば、ＲＳ−２３２Ｃを含む。通信インタフェースは、例えば、ＵＳＢ、Ｔｈｕｎｄｅｒｂｏｌｔ（登録商標）を含む。
【００４１】
第２通信部７３は、インターネット８０を介して通信装置２０及び検証装置５０と通信するインタフェースを含む。第２通信部７３は、例えば、有線インタフェース、又は無線インタフェースを含む。有線インタフェースは、例えば、有線ＬＡＮインタフェースを含む。無線インタフェースは、例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）、無線ＬＡＮインタフェースを含む。
【００４２】
管理装置７０は、例えば、ＣＰＵ、ＲＯＭ、ＲＡＭを備える。例えば、ＣＰＵが、ＲＯＭに記憶されたプログラムを実行することで、管理装置７０内の各部における各種機能を実現する。
【００４３】
検証装置５０は、例えば、電子データに付された署名の正当性を検証する。検証装置５０は、乱数生成部５１、一方向性関数処理部５２、署名検証部５３、認証処理部５４、共通鍵暗号化部５５、公開鍵暗号化部５６、共通鍵復号部５７、第１通信部５８、第２通信部５９、記憶部６０、及びデータ結合部６１を有する。
【００４４】
乱数生成部５１は、乱数を生成する。乱数生成部５１は、例えば、一般的な擬似乱数生成アルゴリズムを用いて擬似乱数を生成してもよいし、乱数生成ハードウェアを用いて真性乱数を生成してもよい。乱数生成部５１は、第２の乱数生成部の一例である。
【００４５】
一方向性関数処理部５２は、例えば、一方向性関数を用いて、各種データ（例えば乱数）からハッシュ値を生成する。一方向性関数処理部５２は、第３の一方向性関数処理部の一例である。
【００４６】
署名検証部５３は、例えば、通信装置２０の公開鍵を用いて、公開鍵アルゴリズムに従って、通信装置２０の秘密鍵によって暗号化されたデータを復号する。署名検証部５３は、復号されたデータに基づいて、電子データに付された署名を検証する。署名検証部５３は、署名検証部の一例である。
【００４７】
認証処理部５４、２つのデータを比較し、一致するか否かを認証し、認証結果を出力する。認証処理部５４は、例えば、通信装置２０からセキュアな通信路を介して取得された証明書と、セキュアな通信路８５を介さず取得された証明書と、を比較して認証する。
【００４８】
共通鍵暗号化部５５は、通信装置２０との間で共有する共通鍵を用いて、所定の共通鍵暗号アルゴリズム（例えばＡＥＳ）を用いて、各種データを暗号化する。共通鍵暗号化部５５は、第２のデータ暗号化部の一例である。
【００４９】
公開鍵暗号化部５６は、通信装置２０の公開鍵を用いて、各種データを暗号化する。公開鍵暗号化部５６は、第２のデータ暗号化部の一例である。
【００５０】
共通鍵復号部５７は、通信装置２０との間で共有する共通鍵を用いて、通信装置２０から送信される暗号化データを復号する。共通鍵復号部５７は、第２のデータ復号部の一例である。
【００５１】
第１通信部５８は、通信装置２０との間で通信する。第１通信部５８は、例えば、シリアルＩ／Ｆ、通信インタフェースを含む。シリアルＩ／Ｆは、例えば、ＲＳ−２３２Ｃ）を含む。通信インタフェースは、例えば、ＵＳＢ、Ｔｈｕｎｄｅｒｂｏｌｔ（登録商標）を含む。
【００５２】
第２通信部５９は、インターネット８０を介して通信装置２０及び管理装置７０との間で通信するインタフェースを含む。第２通信部５９は、例えば、有線インタフェース、又は無線インタフェースを含む。有線インタフェースは、例えば、有線ＬＡＮインタフェースを含む。無線インタフェースは、例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）、無線ＬＡＮインタフェースを含む。第２通信部５９は、第２の通信部の一例である。
【００５３】
記憶部６０は、各種データを記憶する。記憶部６０は、例えば、検証装置５０の公開鍵ペア、共通鍵、通信装置２０の公開鍵、を記憶する。記憶部６０は、第２の記憶部の一例である。
【００５４】
データ結合部６１は、複数のデータを結合する。
【００５５】
検証装置５０は、例えば、ＣＰＵ、ＲＯＭ、ＲＡＭを備える。例えば、ＣＰＵが、ＲＯＭに記憶されたプログラムを実行することで、検証装置５０内の各部における各種機能を実現する。
【００５６】
図１では、検証装置５０と管理装置７０とが別々の装置として構成されることを例示したが、１つの装置で構成されてもよい。管理装置７０と検証装置５０とは、インターネット８０により接続されることを例示したが、例えばＬＡＮ接続されてもよい。
【００５７】
次に、署名検証システム１０の動作例について説明する。
【００５８】
図２〜図７は、署名検証システム１０の動作例を示すシーケンス図である。まず、図２〜図７において用いられる記号の定義について説明する。
【００５９】
記号ｒ１，ｒ２は、乱数を表す。乱数は、例えば、疑似乱数、真正乱数を含む。乱数の生成には、例えば、一般的な擬似乱数生成アルゴリズム又は乱数生成ハードウェアが用いられてもよい。乱数の生成には、ＦＩＰＳ（Ｆｅｄｅｒａｌ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｔａｎｄａｒｄｉｚａｔｉｏｎ）  １８６−２、ＮＩＳＴ（Ｎａｔｉｏｎａｌ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｓｔａｎｄａｒｄｓ  ａｎｄ  Ｔｅｃｈｎｏｌｏｇｙ）  ＳＰ（Ｓｐｅｃｉａｌ  Ｐｕｂｌｉｃａｔｉｏｎ）  ８００−９０が用いられてもよい。乱数列の生成には、ＡＮＳＩ（Ａｍｅｒｉｃａｎ  Ｎａｔｉｏｎａｌ  Ｓｔａｎｄａｒｄｓ  Ｉｎｓｔｉｔｕｔｅ）  Ｘ９．３１−１９９８  Ａｐｐｅｎｄｉｘ  Ｃが用いられてもよい。
【００６０】
記号Ｋは、共通鍵を表す。例えば、乱数から共通鍵が生成される場合、一方向性関数及び擬似乱数器を用いて鍵長を合わせて、共通鍵が作成されてもよい。例えば、乱数の半分がパスワード、乱数の残り半分がソルトとして、ＰＢＫＤＦ２に入力されることに応じて、共通鍵が生成されてもよい。ＰＢＫＤＦ２は、Ｐａｓｓｗｏｒｄ−Ｂａｓｅｄ  Ｋｅｙ  Ｄｅｒｉｖａｔｉｏｎ  Ｆｕｎｃｔｉｏｎ  ２（ＲＦＣ（Ｒｅｑｕｅｓｔ  ｆｏｒ  Ｃｏｍｍｅｎｔｓ）２８９８  ＰＫＣＳ（Ｐｕｂｌｉｃ  Ｋｅｙ  Ｃｒｙｐｔｏｇｒａｐｈｙ  Ｓｔａｎｄａｒｄｓ）＃５  ｖ２）を指す。
【００６１】
記号Ｋ＿Ａは、装置Ａの公開鍵ペアを表す。装置Ａは、通信装置２０である。記号Ｋ＿Ａ［Ｐ］は、装置Ａの公開鍵ペアＫ_Ａのうち、公開鍵を表す。記号Ｋ＿Ａ［Ｓ］は、装置Ａの公開鍵ペアＫ_Ａのうち、秘密鍵を表す。
【００６２】
記号ＥＫ（Ｍ）は、平文Ｍに対して共通鍵Ｋを用いて暗号化した結果を表す。この暗号化には、例えば、ＰＢＥＳ（Ｐａｓｓｗｏｒｄ−Ｂａｓｅｄ Ｅｎｃｒｙｐｔｉｏｎ Ｓｃｈｅｍｅ）１、ＰＢＥＳ２が用いられる。
【００６３】
記号Ｅ２Ｋ（Ｍ）は、記号ＥＫ（Ｍ）と比較して、「Ｅ２」と表記することで、暗号アルゴリズムが異なる場合に、暗号アルゴリズムを識別可能に区別する。
【００６４】
記号ＰＫ＿Ａ（Ｍ）は、平文Ｍに対して公開鍵ペアＫ＿Ａの公開鍵Ｋ＿Ａ［Ｐ］を用いて暗号化した結果を表す。この暗号化には、例えば、ＲＳＡ（Ｒｉｖｅsｔ  Ｓｈａｍｉｒ  Ａｄｌｅｍａｎ）暗号、ＤＨ（Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ）鍵交換、ＥｌＧａｍａｌ暗号、楕円曲線暗号が用いられる。
【００６５】
記号ＳＫ＿Ａ（Ｍ）は、平文Ｍに対して公開鍵ペアＫ＿Ａの秘密鍵Ｋ＿Ａ［Ｓ］を用いて暗号化した結果を表す。
【００６６】
記号Ｈ（Ｍ）は、平文Ｍに対して一方向性関数で計算した結果であるハッシュ値を表す。一方向性関数には、例えば、ＭＤ５（Ｍｅｓｓａｇｅ  Ｄｉｇｅｓｔ  Ａｌｇｏｒｉｔｈｍ  ５）、ＳＨＡ（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）１、ＳＨＡ２５６、ＳＨＡ５１２、が用いられてもよい。
【００６７】
記号Ｃ＿Ａは、装置Ａの証明書を表す。
【００６８】
上記では、主に装置Ａに対して用いる記号を例示したが、装置Ｂに対して同様に記号を用いる場合、上記の記号の「Ａ」の部分が、適宜「Ｂ」に置換される。
【００６９】
署名検証システム１０の動作は、装置パスワード登録シーケンス、証明書作成シーケンス、署名作成シーケンス、装置認証シーケンス、署名検証シーケンスの順に進行する。装置パスワード登録シーケンスは、装置パスワードを登録するためのシーケンスである。証明書作成シーケンスは、証明書（例えば自己署名証明書）を作成するためのシーケンスである。署名作成シーケンスは、デジタル署名を作成するためのシーケンスである。装置認証シーケンスは、通信装置２０の正当性を認証するためのシーケンスである。署名検証シーケンスは、デジタル署名の正当性を認証するためのシーケンスである。
【００７０】
図２〜図８では、装置Ｍが通信装置２０であり、装置Ｖが検証装置５０であることを想定する。装置Ｍは、装置Ａの一例であり、装置Ｖは、装置Ｂの一例である。
【００７１】
図２は、署名検証システム１０により実行される装置パスワード登録シーケンスの一例を示すシーケンス図である。
【００７２】
まず、管理装置７０では、装置パスワード生成部７１は、装置パスワード、つまり平文であるパスワードＭを生成する（Ｓ１）。
【００７３】
第１通信部７２は、生成されたパスワードＭを通信装置２０に送信し、通信装置２０に書き込む（Ｓ２）。つまり、通信装置２０では、第１通信部３１は、パスワードＭを受信し、記憶部３３は、パスワードＭを記憶する。
【００７４】
第１通信部７２は、生成されたパスワードＭを検証装置５０に送信し、検証装置５０に書き込む（Ｓ３）。つまり、検証装置５０では、第１通信部５８は、パスワードＭを受信し、記憶部６０は、パスワードＭを記憶する。
【００７５】
尚、管理装置７０の装置パスワード生成部７１は、装置パスワードを生成する場合、例えば、鍵導出関数に基づいてパスワードＭを生成してもよいし、管理装置７０のプログラムコードにハードコーティングされたパスワードＭを読み出してもよい。
【００７６】
通信装置２０へのパスワードＭの書き込みと検証装置５０へのパスワードＭの書き込みとの順序は、どちらが先でもよく、図２の例とは逆でもよい。パスワードＭは、後述する装置認証シーケンスが実行されるまでに、書き込まれればよい。
【００７７】
図２に示した装置パスワード登録シーケンスによれば、例えば通信装置２０の設置工程において、通信装置２０及び検証装置５０に対してパスワードＭを書き込みでき、後のシーケンスにおいてパスワードＭを利用できる。
【００７８】
図３は、署名検証システム１０により実行される証明書作成シーケンスの一例を示すシーケンス図である。
【００７９】
証明書作成シーケンスは、通信装置２０により行われる。
【００８０】
まず、公開鍵ペア生成部２４は、通信装置２０の公開鍵ペアＫ＿Ｍを生成する（Ｓ１１）。乱数生成部２１は、乱数ｒ１を生成する（Ｓ１２）。乱数ｒ１は、第１の乱数の一例である。一方向性関数処理部２２は、生成された乱数ｒ１から、ハッシュ値Ｈ（ｒ１）を導出（例えば計算）する（Ｓ１３）。ハッシュ値（ｒ１）は、第１のハッシュ値の一例である。
【００８１】
証明書生成部２３は、通信装置２０の公開鍵Ｋ＿Ｍ［Ｐ］を用いて、通信装置２０の証明書Ｃ＿Ｍを作成する（Ｓ１４）。通信装置２０の証明書Ｃ＿Ｍは、例えば、自己署名証明書であり、通信装置２０の秘密鍵Ｋ＿Ｍ［Ｓ］により署名される。通信装置２０の証明書Ｃ＿Ｍは、例えば、ハッシュ値Ｈ（ｒ１）と、通信装置２０にＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔｓ  Ｌａｙｅｒ）を介してアクセスするためのＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）と、を含む。
【００８２】
尚、証明書作成シーケンスは、図２に示した装置パスワード登録シーケンスの前に実行されてもよい。また、通信装置２０により作成される証明書は、自己署名証明書ではなく、他の認証局（例えばＣＡ：Ｃｅｒｔｉｆｉｃａｔｅ  Ａｕｔｈｏｒｉｔｙ）により署名された証明書でもよい。この場合、他の認証局は、通信装置２０の確認を厳密に行わなくてもよく、信頼性の低い認証局でもよい。
【００８３】
図３に示した証明書作成シーケンスによれば、所有者情報の１つであるハッシュ値を通信装置２０の証明書Ｃ＿Ｍに挿入することで、検証側（例えば検証装置５０）により証明書Ｃ＿Ｍの送信元を特定できる。
【００８４】
図４は、署名検証システム１０により実行される署名作成シーケンスの一例を示すシーケンス図である。
【００８５】
署名作成シーケンスは、通信装置２０により行われる。署名作成シーケンスの開始時には、記憶部３３に、通信装置２０の証明書Ｃ＿Ｍ、通信装置２０の公開鍵ペアＫ＿Ｍ、及び乱数ｒ１が保持されている。
【００８６】
まず、電子データ生成部２８は、電子データＤを生成する（Ｓ２１）。電子データＤは、例えば、映像データ、音声データを含む。電子データ生成部２８は、電子データＤと通信装置２０の証明書Ｃ＿Ｍとを、所定の方法により結合する（Ｓ２２）。所定の方法とは、例えば電子データＤと通信装置２０の証明書Ｃ＿Ｍをデータ結合する方法が考えられる。また、電子データ生成部２８は、電子データＤと証明書Ｃ＿Ｍの他に、通信装置２０を特定する情報（例えば、ＭＡＣアドレスを含む）を結合してもよい。一方向性関数処理部２２は、結合されたデータに対し、ハッシュ値Ｈ（Ｄ，Ｃ＿Ｍ）を計算する（Ｓ２２）。ハッシュ値Ｈ（Ｄ，Ｃ＿Ｍ）は、第２のハッシュ値の一例である。
【００８７】
署名生成部２５は、ハッシュ値Ｈ（Ｄ，Ｃ＿Ｍ）に対し、通信装置２０の秘密鍵Ｋ＿Ｍ［Ｓ］を用いて、署名ＳＫ＿Ｍ（Ｈ（Ｄ，Ｃ＿Ｍ））を生成する（Ｓ２３）。
【００８８】
図４に示した署名作成シーケンスによれば、電子データＤと証明書Ｃ＿Ｍをまとめてハッシュ値を導出し、このハッシュ値に署名を付す。従って、検証側では、署名を検証することで、証明書Ｃ＿Ｍの正当性を検証でき、電子データＤの改竄の有無を検証できる。
【００８９】
図５〜図７は、署名検証システム１０により実行される装置認証シーケンスの一例を示すシーケンス図である。
【００９０】
装置認証シーケンスの開始時には、通信装置２０の記憶部３３に、通信装置２０の証明書Ｃ＿Ｍ、通信装置２０の公開鍵ペアＫ＿Ｍ、乱数ｒ１、パスワードＭ、署名ＳＫ＿Ｍ（Ｈ（Ｄ，Ｃ＿Ｍ））、及び電子データＤが保持されている。検証装置５０の記憶部６０に、パスワードＭが保持されている。
【００９１】
通信装置２０では、第２通信部３２は、電子データＤ、通信装置２０の証明書Ｃ＿Ｍ、及び署名ＳＫ＿Ｍ（Ｈ（Ｄ，Ｃ＿Ｍ））を、検証装置５０に送信（配布）する（Ｓ３１）。
【００９２】
検証装置５０では、第２通信部５９は、電子データＤ´、通信装置２０の証明書Ｃ´＿Ｍ、及び署名Ｓ´Ｋ＿Ｍ（Ｈ（Ｄ，Ｃ＿Ｍ））を受信する（Ｓ３１）。受信されたデータは、例えば、記憶部６０に保持される。
【００９３】
尚、各データを示す記号に「´」が付されることで、各データ（例えば電子データＤ´、証明書Ｃ´＿Ｍ及び署名Ｓ´Ｋ＿Ｍ（Ｈ（Ｄ，Ｃ＿Ｍ）））が、正規の情報であるか否か不明であることを表している（以下同様）。
【００９４】
第２通信部５９は、通信装置２０の第２通信部３２との間で、例えば、ＳＳＬにより暗号化されたセキュアな通信路８５を確立する。第２通信部５９は、セキュアな通信路８５を用いて、通信装置２０にアクセスするためのＵＲＬを用いて、通信装置２０とＳＳＬ通信する（Ｓ３２）。このＵＲＬは、例えば、通信装置２０の証明書Ｃ´＿Ｍに含まれる。尚、ＳＳＬは、セキュアな通信路８５の一例であり、ＳＳＬ以外のセキュアな通信路が用いられてもよい。
【００９５】
通信装置２０では、第２通信部３２は、確立されたＳＳＬを介して、通信装置２０の証明書Ｃ＿Ｍを送信する。検証装置５０では、第２通信部５９は、確立されたＳＳＬを介して、通信装置２０から証明書Ｃ＿Ｍを受信する（Ｓ３３）。Ｓ３３において取得された証明書Ｃ＿Ｍは、通信装置２０の正規の証明書である。受信された通信装置２０の証明書Ｃ＿Ｍは、例えば、記憶部６０に保持される。
【００９６】
検証装置５０では、認証処理部５４は、Ｓ３３においてセキュアな通信路８５を介して受信された証明書Ｃ＿Ｍと、Ｓ３１においてセキュアな通信路８５を介さず受信された証明書Ｃ´＿Ｍと、を比較し、両者が一致しているか否かを判定する（Ｓ３４）。
【００９７】
両者が一致していない場合、認証処理部５４は、通信装置２０の証明書Ｃ＿Ｍの認証、つまり通信装置２０の認証に失敗したと判定し、装置認証シーケンスを終了する。一方、両者が一致している場合、認証処理部５４は、Ｓ３１において受信された通信装置２０の証明書Ｃ´＿Ｍは正規の証明書であると判定し、装置認証シーケンスを継続する。続いて、図６に進む。
【００９８】
図６の開始時には、通信装置２０の記憶部３３に、通信装置２０の証明書Ｃ＿Ｍ、通信装置２０の公開鍵ペアＫ＿Ｍ、乱数ｒ１、パスワードＭ、署名ＳＫ＿Ｍ（Ｈ（Ｄ，Ｃ＿Ｍ））、及び電子データＤが保持されている。検証装置５０の記憶部６０に、パスワードＭ、通信装置２０の証明書Ｃ＿Ｍ、電子データＤ´、及び署名Ｓ´Ｋ＿Ｍ（Ｈ（Ｄ，Ｃ＿Ｍ））が保持されている。
【００９９】
検証装置５０では、乱数生成部５１は、乱数ｒ２を生成する（Ｓ４１）。乱数ｒ２は、第２の乱数の一例である。公開鍵暗号化部５６は、通信装置２０の公開鍵Ｋ＿Ｍ［Ｐ］を用いて乱数ｒ２を暗号化し、暗号化乱数ＰＫ＿Ｍ（ｒ２）を得る（Ｓ４２）。この通信装置２０の公開鍵Ｋ＿Ｍ［Ｐ］は、通信装置２０の証明書Ｃ＿Ｍに含まれる。
【０１００】
共通鍵暗号化部５５は、パスワードＭを共通鍵として、暗号化乱数ＰＫ＿Ｍ（ｒ２）を暗号化し、２重暗号化乱数ＥＭ（ＰＫ＿Ｍ（ｒ２））を得る（Ｓ４３）。第２通信部５９は、２重暗号化乱数ＥＭ（ＰＫ＿Ｍ（ｒ２））を通信装置２０に送信する（Ｓ４４）。
【０１０１】
通信装置２０では、第２通信部３２は、通信装置２０からの２重暗号化乱数ＥＭ（ＰＫ＿Ｍ（ｒ２））を受信する。共通鍵復号部２７は、パスワードＭを共通鍵として、２重暗号化乱数ＥＭ（ＰＫ＿Ｍ（ｒ２））を復号し、暗号化乱数ＰＫ＿Ｍ（ｒ２）´を得る（Ｓ４５）。秘密鍵復号部３０は、秘密鍵Ｋ＿Ｍ［Ｓ］を用いて、暗号化乱数ＰＫ＿Ｍ（ｒ２）´を復号し、乱数ｒ２´を得る（Ｓ４６）。
【０１０２】
共通鍵暗号化部２９は、乱数ｒ２´を共通鍵として、乱数ｒ１を暗号化し、暗号化乱数Ｅ２ｒ２´（ｒ１）を得る（Ｓ４７）。第２通信部３２は、暗号化乱数Ｅ２ｒ２´（ｒ１）を検証装置５０に送信する（Ｓ４８）。
【０１０３】
検証装置５０では、第２通信部５９は、通信装置２０からの暗号化乱数Ｅ２ｒ２´（ｒ１）を受信する。続いて、図７に進む。
【０１０４】
図７の開始時には、通信装置２０の記憶部３３に、通信装置２０の証明書Ｃ＿Ｍ、通信装置２０の公開鍵ペアＫ＿Ｍ、乱数ｒ１、パスワードＭ、署名ＳＫ＿Ｍ（Ｈ（Ｄ，Ｃ＿Ｍ））、電子データＤ、及び２重暗号化乱数ＥＭ（ＰＫ＿Ｍ（ｒ２））が保持されている。検証装置５０の記憶部６０には、パスワードＭ、通信装置２０の証明書Ｃ＿Ｍ、電子データＤ´、署名Ｓ´Ｋ＿Ｍ（Ｈ（Ｄ，Ｃ＿Ｍ））、乱数ｒ２、及び暗号化乱数Ｅ２ｒ２´（ｒ１）が保持されている。
【０１０５】
検証装置５０では、共通鍵暗号化部５５は、乱数ｒ２を共通鍵として、暗号化乱数Ｅ２ｒ２´（ｒ１）を復号し、乱数ｒ１´を得る（Ｓ５１）。一方向性関数処理部５２は、乱数ｒ１´からハッシュ値Ｈ（ｒ１´）を計算して得る（Ｓ５２）。
【０１０６】
認証処理部５４は、計算して得られたハッシュ値Ｈ（ｒ１´）と、通信装置２０の証明書Ｃ＿Ｍに含まれるハッシュ値Ｈ（ｒ１）とを比較し、両者が一致するか否かを判定する（Ｓ５３）。
【０１０７】
両者が一致しない場合、認証処理部５４は、通信装置２０の認証に失敗したと判定し、検証装置５０は、装置認証シーケンスを終了する。一方、両者が一致した場合、認証処理部５４は、通信装置２０の認証に成功したと判定する（Ｓ５４）。
【０１０８】
図５〜７に示した装置認証シーケンスによれば、証明書Ｃ＿Ｍと証明書Ｃ＿Ｍ´とが一致するか否かに応じて、通信装置２０の正当性を検証できる。また、乱数ｒ１と乱数ｒ１のハッシュ値Ｈ（ｒ１），Ｈ（ｒ１´）を用いて、通信装置２０の正当性を検証できる。ハッシュ値Ｈ（ｒ１）は、通信装置２０と検証装置５０との間に存在する中間者によっては識別できないため、通信装置２０の正当性の検証精度を向上できる。
【０１０９】
また、乱数ｒ１，ｒ２は短時間で生成できるので、装置認証シーケンスに要する時間を短縮できる。また、乱数ｒ１，ｒ２は、生成される度に値が変更されるので、リプライ攻撃に対する耐性を向上できる。
【０１１０】
図８は、署名検証システム１０により実行される署名検証シーケンスの一例を示すシーケンス図である。
【０１１１】
署名検証シーケンスは、検証装置５０により行われる。署名検証シーケンスの開始時には、検証装置５０の記憶部６０に、パスワードＭ、通信装置２０の証明書Ｃ＿Ｍ、電子データＤ´、署名Ｓ´Ｋ＿Ｍ（Ｈ（Ｄ，Ｃ＿Ｍ））、乱数ｒ２、及び暗号化乱数Ｅ２ｒ２´（ｒ１）が保持されている。
【０１１２】
検証装置５０では、データ結合部６１は、電子データＤ´と通信装置２０の証明書Ｃ＿Ｍとを、所定の方法により結合する（Ｓ６１）。所定の方法とは、例えば電子データＤと通信装置２０の証明書Ｃ＿Ｍをデータ結合する方法が考えられる。また、データ結合部６１は、電子データＤと通信装置２０の証明書Ｃ＿Ｍの他に、通信装置２０を特定する情報（例えば、ＭＡＣアドレスを含む）を結合してもよい。一方向性関数処理部５２は、結合されたデータに対し、ハッシュ値Ｈ（Ｄ´，Ｃ＿Ｍ）を計算する（Ｓ６１）。
【０１１３】
署名検証部５３は、通信装置２０の公開鍵Ｋ＿Ｍ［Ｐ］を用いて、Ｓ３１において受信された署名Ｓ´Ｋ＿Ｍ（Ｈ（Ｄ，Ｃ＿Ｍ））を検証する（Ｓ６２）。ここでは、署名検証部５３は、通信装置２０の公開鍵Ｋ＿Ｍ［Ｐ］を用いて、署名Ｓ´Ｋ＿Ｍ（Ｈ（Ｄ，Ｃ＿Ｍ））を復号し、ハッシュ値Ｈ（Ｄ，Ｃ＿Ｍ）を得る。署名検証部５３は、復号されたハッシュ値Ｈ（Ｄ，Ｃ＿Ｍ）と、Ｓ６１において計算されたハッシュ値Ｈ（Ｄ´，Ｃ＿Ｍ）と、が一致するか否かを判定する。
【０１１４】
両者が一致しない場合、署名検証部５３は、電子データＤが改竄されたと判定し、署名検証シーケンスを終了する。一方、両者が一致した場合、署名検証部５３は、署名検証に成功したと判定する（Ｓ６３）。
【０１１５】
図８に示した署名検証シーケンスによれば、検証装置５０は、図４に示した通信装置２０による電子データＤに基づくハッシュ値の導出方法と同様の方法で、通信装置２０から取得された電子データＤ´に基づくハッシュ値を導出する。検証装置５０は、導出されたハッシュ値と、通信装置２０により生成された署名から復号されたハッシュ値と、が一致するか否かに基づいて、署名を検証する。
【０１１６】
これにより、検証装置５０は、署名の生成者の正当性を検証でき、署名の正当性に応じて、電子データＤ´の改竄の有無も検証できる。また、装置認証シーケンスと署名検証シーケンスとを組み合わせて実施する場合、装置の正当性も検証でき、電子データの通信における安全性を更に向上できる。
【０１１７】
署名検証システム１０によれば、信頼性が比較的低い装置（例えば通信装置２０自身）により署名された場合でも、署名を二者間（例えば通信装置２０と検証装置５０）において検証でき、署名が付された証明書の信頼性を向上できる。これにより、電子データの改竄の有無も検証できる。
【０１１８】
従って、第三者としての信頼できる認証局により署名が付された証明書が発行されない場合でも、署名の検証に要するコストと処理時間とを低減できる。このように、電子データに付された署名の正当性を容易に検証でき、低コストで検証できる。
【０１１９】
以上、図面を参照しながら各種の実施形態について説明したが、本発明はかかる例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【０１２０】
例えば、上記実施形態では、署名検証システム１０は、乱数列と通信装置２０の識別情報を含む乱数を用いて、署名検証してもよい。この場合、乱数生成部２１は、乱数列を生成し、乱数列と通信装置２０の識別情報を組み合わせて乱数を生成する。これにより、仮に同じ乱数列が生成された場合でも、通信装置２０の識別情報が異なることで、乱数を一意に識別できる。つまり、識別精度の高い乱数を容易に生成できる。尚、通信装置２０の識別情報は、例えば、通信装置２０のシリアル番号、通信装置２０のＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスを含む。
【０１２１】
（本発明の一態様の概要）
本発明の一態様の署名検証システムは、通信装置と検証装置とがネットワークを介して接続された署名検証システムであって、前記通信装置は、第１の乱数を生成する乱数生成部と、一方向性関数を用いて、前記第１の乱数から第１のハッシュ値を導出する第１の一方向性関数処理部と、前記通信装置の秘密鍵及び公開鍵を生成する公開鍵ペア生成部と、一方向性関数を用いて、電子データと、前記第１のハッシュ値及び前記通信装置の公開鍵を含む通信装置の証明書と、を含むデータから、第２のハッシュ値を導出する第２の一方向性関数処理部と、前記第２のハッシュ値に対し、前記通信装置の秘密鍵を用いて署名を生成する署名生成部と、前記電子データ、前記証明書、及び前記署名を、前記検証装置に送信する第１の通信部と、を備え、前記検証装置は、前記通信装置からの前記電子データ、前記証明書、及び前記署名を受信する第２の通信部と、前記証明書に含まれる前記第１のハッシュ値を用いて、前記通信装置を認証する認証処理部と、一方向性関数を用いて、前記電子データと前記証明書とを含むデータから、第２のハッシュ値を導出する第３の一方向性関数処理部と、前記証明書に含まれる前記通信装置の公開鍵と前記導出された第２のハッシュ値とを用いて、前記署名を検証する署名検証部と、を備える。
【０１２２】
この構成によれば、仮に信用性の低い装置により署名が付された通信装置の証明書を用いる場合でも、署名の正当性を容易に検証でき、署名が付された通信データの安全性を容易に確認できる。また、署名の検証を容易に実施でき、電子データが改竄されていないことを容易に証明できる。また、通信装置及び検証装置以外の第三者としての認証局との通信を必要としないので、この認証局による署名検証に要するコスト及び処理時間を省くことができる。
【０１２３】
本発明の一態様の署名検証システムは、前記通信装置が、前記通信装置の証明書を生成する証明書生成部を備える。
【０１２４】
この構成によれば、自装置により署名を付した証明書（自己署名証明書）を用いる場合でも、署名の正当性を容易に検証でき、署名が付された通信データの安全性を容易に確認できる。
【０１２５】
本発明の一態様の署名検証システムは、前記検証装置が、第２の乱数を生成する第２の乱数生成部と、前記第２の乱数と前記通信装置の公開鍵とを用いて、第１の暗号化データを生成する第２のデータ暗号化部を備え、前記第２の通信部が、前記第１の暗号化データを前記通信装置へ送信し、前記第１の通信部が、前記検証装置からの前記第１の暗号化データを受信し、前記通信装置が、前記通信装置の秘密鍵を用いて、第１の暗号化データを復号して前記前記第２の乱数を取得する第１のデータ復号部と、前記第１の乱数及び前記第２の乱数を用いて、第２の暗号化データを生成する第１のデータ暗号化部と、を備え、前記第１の通信部が、前記第２の暗号化データを前記検証装置へ送信し、前記第２の通信部が、前記通信装置からの前記第２の暗号化データを受信し、前記検証装置が、前記第２の乱数を用いて、前記第２の暗号化データを復号して前記第１の乱数を取得する第２のデータ復号部を備え、前記第３の一方向性関数処理部が、前記第１の乱数から第１のハッシュ値を導出し、前記認証処理部は、前記導出された第１のハッシュ値と、前記証明書に含まれる第１のハッシュ値と、に基づいて、前記通信装置を認証する。
【０１２６】
この構成によれば、乱数は短時間で生成できるので、前期通信装置の認証に要する時間を短縮できる。また、第２の乱数は、生成される度に値が変更されるので、リプライ攻撃に対する耐性を向上できる。
【０１２７】
本発明の一態様の署名検証システムは、前記通信装置が、前記通信装置と前記検証装置とが共有する共通鍵を記憶する第１の記憶部を備え、前記検証装置が、前記共通鍵を記憶する第２の記憶部を備え、前記第２のデータ暗号化部が、前記第２の乱数、前記通信装置の公開鍵、及び前記共通鍵を用いて、前記第１の暗号化データを生成し、前記第１のデータ復号部が、前記通信装置の秘密鍵及び前記共通鍵を用いて、前記第１の暗号化データを復号して前記第２の乱数を取得する。
【０１２８】
この構成によれば、通信装置と検証装置との間の中間者を識別できる。例えば、検証装置は、共通鍵を保持しているので、第２の乱数を取得できるが、中間者は、共通鍵を保持していないので、第２の乱数を取得できず、通信装置の認証（装置認証）に失敗する。そのため、署名の検証精度を向上でき、中間者の成りすましによる被害を抑制できる。
【０１２９】
本発明の一態様の通信装置は、ネットワークを介して検証装置に接続される通信装置であって、第１の乱数を生成する乱数生成部と、一方向性関数を用いて、前記第１の乱数から第１のハッシュ値を導出する第１の一方向性関数処理部と、前記通信装置の秘密鍵及び公開鍵を生成する公開鍵ペア生成部と、一方向性関数を用いて、電子データと、前記第１のハッシュ値及び前記通信装置の公開鍵を含む通信装置の証明書と、を含むデータから、第２のハッシュ値を導出する第２の一方向性関数処理部と、前記第２のハッシュ値に対し、前記通信装置の秘密鍵を用いて署名を生成する署名生成部と、前記電子データ、前記証明書、及び前記署名を、前記検証装置に送信する通信部と、を備える。
【０１３０】
この構成によれば、仮に信用性の低い装置により署名が付された通信装置の証明書を用いる場合でも、検証装置により、署名の正当性を容易に検証でき、署名が付された電子データの安全性を容易に確認できる。また、通信装置及び検証装置以外の第三者としての認証局との通信を必要としないので、この認証局による署名検証に要するコスト及び処理時間を省くことができる。
【０１３１】
本発明の一態様の検証装置は、ネットワークを介して通信装置に接続される検証装置であって、前記通信装置から、電子データと、前記通信装置により生成された乱数から導出された第１のハッシュ値及び前記通信装置の公開鍵を含む通信装置の証明書と、一方向性関数を用いて前記電子データと前記証明書とを含むデータから導出された第２のハッシュ値に対して、前記通信装置の秘密鍵を用いて生成された署名と、を受信する通信部と、前記証明書に含まれる前記第１のハッシュ値を用いて、前記通信装置を認証する認証処理部と、一方向性関数を用いて、前記電子データと前記証明書とを含むデータから、第２のハッシュ値を導出する一方向性関数処理部と、前記証明書に含まれる前記通信装置の公開鍵と前記導出された第２のハッシュ値とを用いて、前記署名を検証する署名検証部と、を備える。
【０１３２】
この構成によれば、仮に信用性の低い装置により署名が付された通信装置の証明書を用いる場合でも、検証装置により、署名の正当性を容易に検証でき、署名が付された電子データの安全性を容易に確認できる。また、通信装置及び検証装置以外の第三者としての認証局との通信を必要としないので、この認証局による署名検証に要するコスト及び処理時間を省くことができる。
【０１３３】
本発明の一態様の署名生成方法は、ネットワークを介して検証装置に接続される通信装置における署名生成方法であって、第１の乱数を生成するステップと、一方向性関数を用いて、前記第１の乱数から第１のハッシュ値を導出するステップと、前記通信装置の秘密鍵及び公開鍵を生成するステップと、前記電子データと、前記第１のハッシュ値及び前記通信装置の公開鍵を含む通信装置の証明書と、を含むデータから、第２のハッシュ値を導出するステップと、前記第２のハッシュ値に対し、前記通信装置の秘密鍵を用いて署名を生成するステップと、を備える。
【０１３４】
この方法によれば、仮に信用性の低い装置により署名が付された通信装置の証明書を用いる場合でも、検証装置により、署名の正当性を容易に検証でき、署名が付された電子データの安全性を容易に確認できる。また、通信装置及び検証装置以外の第三者としての認証局との通信を必要としないので、この認証局による署名検証に要するコスト及び処理時間を省くことができる。
【０１３５】
本発明の一態様の署名検証方法は、ネットワークを介して通信装置に接続される検証装置における署名検証方法であって、前記通信装置により生成された乱数から導出された第１のハッシュ値及び前記通信装置の公開鍵を含む前記通信装置の証明書に含まれる前記第１のハッシュ値を用いて、前記通信装置を認証するステップと、一方向性関数を用いて、電子データと前記証明書とを含むデータから、第２のハッシュ値を導出するステップと、前記証明書に含まれる前記通信装置の公開鍵と前記導出された第２のハッシュ値とを用いて、署名を検証するステップと、を備え、前記署名が、前記通信装置により前記電子データと前記証明書とを含むデータから導出された第２のハッシュ値に対して、前記通信装置の秘密鍵を用いて生成された署名である。
【０１３６】
この方法によれば、仮に信用性の低い装置により署名が付された通信装置の証明書を用いる場合でも、検証装置により、署名の正当性を容易に検証でき、署名が付された電子データの安全性を容易に確認できる。また、通信装置及び検証装置以外の第三者としての認証局との通信を必要としないので、この認証局による署名検証に要するコスト及び処理時間を省くことができる。
【産業上の利用可能性】
【０１３７】
本発明は、電子データに付された署名の正当性を低コストで検証できる署名検証システム、通信装置、検証装置、署名生成方法、及び署名検証方法等に有用である。
【符号の説明】
【０１３８】
１０  署名検証システム
２０  通信装置
２１、５１  乱数生成部
２２、５２  一方向性関数処理部
２３  証明書生成部
２４  公開鍵ペア生成部
２５  署名生成部
２７、５７  共通鍵復号部
２８  電子データ生成部
２９、５５  共通鍵暗号化部
３０  秘密鍵復号部
３１、５８、７２  第１通信部
３２、５９、７３  第２通信部
３３、６０  記憶部
５０  検証装置
５３  署名検証部
５４  認証処理部
５６  公開鍵暗号化部
６１  データ結合部
７０  管理装置
７１  装置パスワード生成部
８０  インターネット
８５  セキュアな通信路
【図１】
2015226132.tif 000003
【図２】
2015226132.tif 000004
【図３】
2015226132.tif 000005
【図４】
2015226132.tif 000006
【図５】
2015226132.tif 000007
【図６】
2015226132.tif 000008
【図７】
2015226132.tif 000009
【図８】
2015226132.tif 000010