以下、本発明の実施形態について、図面を用いて説明する。
(本発明の一形態を得るに至った経緯)
例えば、デジタルスチルカメラにより撮像された現場写真が、裁判で証拠として採用されることがある。しかし、デジタルスチルカメラにより撮像された写真は、デジタル画像データであるので、意図的にデータを改竄し、又は連続的な複数枚の写真の中から1枚抜き取って消去される可能性がある。このため、デジタル画像データは、裁判では証拠能力に乏しいと指摘されている。
従来のデジタル署名技術では、例えば、複数のデジタル画像データに対して、1枚分のデジタル画像データ毎に署名データを生成する場合、個々のデジタル画像データが改竄されていないことを証明できる。しかし、連続して撮像された複数枚のデジタル画像データの中から、1枚あるいは複数枚の画像データが抜き取られた場合、この抜き取りを認識することは困難である。つまり、複数枚の画像データ間の関連性を保証することが困難である。
以下、複数のデータ間の関連性を保証できる署名生成装置、署名検証装置、署名生成方法及び署名検証方法について説明する。
以下の実施形態の署名生成装置は、例えば、デジタル画像データ(以下、画像データともいう)を生成するデジタルスチルカメラ(以下、単にカメラともいう)に適用される。また、以下の実施形態の署名検証装置は、例えば、PC(Personal Computer)に適用される。
以下の実施形態では、画像データが部分的に消されることは、例えば「改竄」と称し、画像データそのものが消されることは、例えば「消去」と称する。また、「画像」は、例えば、動画像(例えば映像)、静止画像(例えば写真)を含む。また、デジタル署名については単に「署名」とも称する。
(第1の実施形態)
図1は、第1の実施形態における署名処理システム10の概略構成例を示す模式図である。署名処理システム10は、カメラ20及びPC50から構成される。カメラ20とPC50とは、特に通信部を持たず、これらの間では、例えば記録媒体を介してデータの受け渡しが行われる。なお、カメラ20及びPC50が、通信ケーブルを介して直接に又は通信ネットワークを介して接続される構成でもよい。
署名処理システム10では、例えば、カメラ20で撮像された画像データと、この画像データに対する署名データと、を含む合成データFGは、PC50に読み込まれる。PC50は、例えば、合成データFGに含まれる署名データを検証し、この検証の結果をモニタ部53に表示する。
カメラ20は、例えば、被写体を撮像し、撮像した画像データを生成する画像データ生成機能20zと、カメラ20の秘密鍵KSEで画像データを含むデータを暗号化し、署名データを生成する署名機能20yと、を有する。カメラ20は、例えば端末であり、署名生成装置の一例である。
PC50は、例えば、カメラ20の公開鍵KPEを取得する公開鍵取得機能50zと、署名データを公開鍵KPEで復号する署名復号機能50yと、署名検証機能50xと、を有する。署名検証機能50xは、復号されたデータに基づき、画像データの改竄の有無や複数の画像データ間の関連性(例えば連続性)の有無を判定する機能を有する。本実施形態や以下の実施形態では、関連性の有無として連続性の有無を主に例示する。
署名検証機能50xによる判定の結果、モニタ部53は、画像データに改竄無しかつ連続性が担保される場合に、「OK」を表示し、改竄有り又は連続性が担保されない場合に、「NG」を表示する。
図2は、合成データFGのファイル構造の一例を示す模式図である。図2では、合成データFGとして、連続する2枚の画像を含む合成データFGA、FGBが示される。
合成データFGAは、画像データ部GA0、第1メタデータ部GA1、及び第2メタデータ部GA2を含む。画像データ部GA0には画像データGAが含まれる。第2メタデータ部GA2には、署名データSAが含まれる。
合成データFGBは、画像データ部GB0、第1メタデータ部GB1、及び第2メタデータ部GB2を含む。画像データ部GB0には画像データGBが含まれる。第1メタデータ部GB1には、画像データ部GA0の画像データGAに対して算出されたハッシュ値HA´´´が含まれる。第2メタデータ部GB2には、署名データSBが含まれる。
尚、ハッシュ値HA´´´は、画像データ部GA0の画像データGAと第1メタデータ部GA1とに対して算出されたハッシュ値(画像データGAと第1メタデータ部GA1とのハッシュ値)であってもよい。
尚、「A」に対して算出された又は算出されるハッシュ値を、「A」のハッシュ値とも記載する。
第1メタデータ部GB1には、相関情報が格納される。この相関情報は、複数のデータ間(例えば画像データGA,GB間)の相関関係(関連性)を示す。本実施形態では、相関情報として、画像データGAのハッシュ値が例示されている。
次に、カメラ20の構成例について説明する。
図3は、カメラ20のハードウェア構成例を示すブロック図である。
カメラ20は、画像を撮像し、撮像された画像データに署名データを合成して合成データを生成する。カメラ20は、例えば、CPU(Central Processing
Unit)/RAM(Random Access Memory)部21、HDD(Hard Disk Drive)部22、及びASIC(Application Specific Integrated Circuit)部23を有する。
尚、カメラ20は、通信ネットワークを介してPC50と通信し、合成データを送信する場合、通信ネットワークのデータ転送を制御するMAC(Media Access Control)/PHY(Physical layer)部(図示せず)を備えてもよい。
CPU/RAM部21は、例えばCPUやRAMで構成され、ID(Identification)生成部31、署名処理部32、及びデータ合成部33を有する。
ID生成部31は、画像データが生成される毎に、この画像データと紐付けられる通し番号(ID番号)を、その値が画像データ単位でカウントアップするように、生成する。なお、本実施形態では、ID生成部31は使用されず、後述する変形例において使用される。ID生成部31は、識別情報生成部の一例である。
署名処理部32は、ハッシュ計算部34及び暗号処理部39を有し、データのハッシュ値を暗号化することで、署名データを生成する。
ハッシュ計算部34は、一方向性関数としてハッシュ関数(例えば、SHA(Secure Hash Algorithm)、MD5(Message Digest 5))を用いて、ハッシュ値を導出(例えば算出)する。暗号処理部39は、秘密鍵KSEで画像データを含むデータを暗号化する。ハッシュ計算部34は、一方向性関数導出部の一例である。
データ合成部33は、画像データ生成部42で生成された画像データと、署名処理部32で生成された署名データと、を合成し、合成データを生成する。
HDD部22は、例えば、ID記憶部35、署名鍵記憶部36、合成データ記憶部37、及びハッシュデータ記憶部38を有する。ここではHDDを例示するが、HDD以外の記憶媒体(例えばSSD(Solid State Drive)、フラッシュメモリ)でもよい。
ID記憶部35は、例えば、フレームの識別情報である、前回撮像された画像データと紐付けられたID番号(前回のID番号)を記憶し、新たにID番号が生成されると、ID番号を更新する。尚、ID生成部31と同様、本実施形態では、ID記憶部35は、使用されず、後述する変形例において使用される。
署名鍵記憶部36は、例えば、公開鍵暗号方式(例えばRSA(Rivest Shamir Adleman))で用いられる秘密鍵(署名鍵の一例)を記憶する。尚、暗号化処理は、例えば共通鍵暗号方式により行われても良く、この場合、署名鍵記憶部36は、共通鍵(署名鍵の一例)を記憶する。
合成データ記憶部37は、例えば、画像データ生成部42で生成された画像データと、署名処理部32で生成された署名データと、を合成した合成データを記憶する。
ハッシュデータ記憶部38は、例えば、ハッシュ計算部34によって計算されたハッシュ値を記憶する。
ASIC部23は、例えば、撮像部41及び画像データ生成部42を有する。画像データ生成部42は、データ取得部の一例である。
撮像部41は、撮像指示を受け付けると、被写体を撮像して、その画像信号を出力する。撮像部41は、例えば、CCD(Charge Coupled Device)やCMOS(Complementary Metal Oxide Semiconductor)を含んで構成される。
画像データ生成部42は、撮像部41から画像信号を入力すると、画像データを生成し、画像データに付加データを添付する。付加データには、例えば、GPS(Global
Positioning System)による位置情報やタイムスタンプ(日時情報)が含まれる。尚、付加データは添付されなくてもよい。
図4は、カメラ20の機能的構成例を示すブロック図である。ここでは、画像データに付加データが付加されたデータについても、画像データとして取り扱うことにする。
カメラ20は、署名処理部32、データ合成部33、署名鍵記憶部36、合成データ記憶部37、ハッシュデータ記憶部38、撮像部41、及び画像データ生成部42備える。
ハッシュデータ記憶部38は、例えば、ハッシュ計算部34で計算された画像データのハッシュ値を時系列に記憶する。ハッシュデータ記憶部38に時系列に記憶される画像データのハッシュ値の数は任意の値でよい。画像データのハッシュ値の数が2つ以上である場合、後述する図8に示すように、画像データの関連性が得られる。
署名処理部32は、前述したように、ハッシュ計算部34及び暗号処理部39を有する。署名処理部32は、署名生成部の一例である。
ハッシュ計算部34は、画像データ生成部42によって生成された画像データと、ハッシュデータ記憶部38に記憶された前回のハッシュ値とに対し、ハッシュ関数を用いてハッシュ値を計算する。ハッシュ計算部34は、この計算されたハッシュ値を今回のハッシュ値として、ハッシュデータ記憶部38に記憶させる。
暗号処理部39は、今回のハッシュ値を、署名鍵記憶部36に記憶された秘密鍵KSEで暗号化し、署名データを生成する。
データ合成部33は、生成された署名データと、画像データ生成部42によって生成された画像データと、を合成して合成データとし、合成データ記憶部37に記憶させる。
次に、PC50の構成例について説明する。
図5は、PC50のハードウェア構成例を示すブロック図である。
PC50は、署名データが合成された画像データを検証する。PC50は、例えば、CPU/RAM部51、HDD部52、及びモニタ部53を有する。尚、PC50は、通信ネットワークを介してカメラ20と通信し、合成データを受信する場合、通信ネットワークのデータ転送を制御するMAC/PHY部(図示せず)を備えてもよい。
CPU/RAM部51は、例えばCPUやRAMで構成され、データ読取部61、ハッシュ計算部62、署名復号部63、署名データ検証部64、判定部65、及び結果出力部66を有する。
データ読取部61は、例えば、カメラ20から、記憶媒体やUSB(Universal Serial Bus)等のインタフェースや通信ネットワークを介して、合成データやカメラ20の公開鍵KPEを取得する。データ読取部61は、データ取得部の一例である。
ハッシュ計算部62は、例えば、一方向性関数としてのハッシュ関数(例えばSHA、MD5)を用いて、ハッシュ値を導出(例えば算出)する。
署名復号部63は、例えば、署名データを公開鍵(検証鍵の一例)で復号し、画像データを含むデータのハッシュ値を得る。
署名データ検証部64は、例えば、後述するように、ハッシュ計算部62によって計算されたハッシュ値と、署名復号部63によって復号されたハッシュ値と、を比較し、署名データを検証する。
判定部65は、例えば、ハッシュ計算部62によって計算されたハッシュ値と、署名復号部63によって復号されたハッシュ値とが等しい場合、第2メタデータ部のハッシュ値を用いて、合成データに含まれる画像データの連続性の有無を判定する。判定部65は、関連性判定部の一例である。
結果出力部66は、例えば、判定部65による判定結果をモニタ部53に出力する。
モニタ部53は、この判定結果を表示する表示部73を有する。尚、モニタ部53は、PC50に含まれてもよいし、PC50とは別体に設けられてもよい。
HDD部52は、例えば、検証鍵記憶部71を有する。ここではHDDを例示するが、HDD以外の記憶媒体(例えばSSD、フラッシュメモリ)でもよい。
検証鍵記憶部71は、例えば、公開鍵暗号方式で用いられる公開鍵KPE(検証鍵の一例)を記憶する。尚、暗号化処理は、例えば共通鍵暗号方式により行われてもよく、この場合、検証鍵記憶部71は、共通鍵(検証鍵の一例)を記憶する。
検証鍵記憶部71に記憶される公開鍵KPEは、カメラ20から取得されてもよいし、画像データに埋め込まれている画像から取得されてもよいし、予めPC50に登録されてもよい。尚、復号処理は、例えば共通鍵暗号方式に対応する復号方式により行われても良く、この場合には、共通鍵が記憶される。
図6は、PC50の機能的構成例を示すブロック図である。
PC50は、データ読取部61、ハッシュ計算部62、署名復号部63、検証鍵記憶部71、署名データ検証部64、判定部65、及び結果出力部66を有する。PC50は、表示部73を含んでも良い。
データ読取部61は、例えば、カメラ20から連続した合成データFGA,FGBを読み取る。また、データ読取部61は、カメラ20の公開鍵を取得し、検証鍵記憶部71に記憶させる。
ここでは、合成データFGAは、例えば、図2に示すように、画像データ部GA0、第1メタデータ部GA1、及び第2メタデータ部GA2を含んで構成される。同様に、合成データFGBは、例えば、画像データ部GB0、第1メタデータ部GB1、及び第2メタデータ部GB2を含んで構成される。
第1メタデータ部GB1には、図2に示すように、例えば、画像データ部GA0の画像データGAと第1メタデータ部GA1のハッシュ値HA´´´が記憶される。
同様に、第1メタデータ部GA1には、例えば、前回の画像データ部の画像データと第1メタデータ部のデータのハッシュ値が記憶される。このハッシュ計算は、例えば、カメラ20により行われている。
ハッシュ計算部62は、データ読取部61で読み取られた画像データ部GA0の画像データGAと第1メタデータ部GA1に対し、ハッシュ関数を用いてハッシュ値HA´を計算する。
同様に、ハッシュ計算部62は、データ読取部61で読み取られた画像データ部GB0の画像データGBと第1メタデータ部GB1に対し、ハッシュ関数を用いてハッシュ値HB´を計算する。
署名復号部63は、データ読取部61で読み取られた合成データFGAの第2メタデータ部GA2に記憶された署名データSAを復号し、画像データ部GA0の画像データGAと第1メタデータ部GA1のハッシュ値HA´´を得る。
同様に、署名復号部63は、データ読取部61で読み取られた合成データFGBの第2メタデータ部GB2に記憶された署名データSBを復号し、画像データ部GB0の画像データGBと第1メタデータ部GB1のハッシュ値HB´´を得る。
署名データ検証部64は、ハッシュ計算部62で計算されたハッシュ値HA´,HB´と、署名復号部63で得られたハッシュ値HA´´,HB´´とをそれぞれ比較する。HA´≠HA´´又はHB´≠HB´´である場合、署名データ検証部64は、画像データGA,GBの検証に失敗したと判断し、この判断結果を結果出力部66に出力する。結果出力部66は、検証結果が失敗したことを表す「NG」(NG表示)をモニタ部53の表示部73に表示させる。
ここでの画像データの検証に失敗したとは、署名生成装置としてのカメラ20により生成された画像データと、署名検証装置としてのPC50により取得された画像データと、が異なると判断されたことを意味する。よって、署名データ検証部64は、カメラ20での画像データとPC50での画像データとが一致しておらず、画像データが改竄されていると判断できる。
一方、HA´=HA´´且つHB´=HB´´である場合、署名データ検証部64は、この比較結果を判定部65に出力する。
判定部65は、データ読取部61で読み取られた合成データFGBの第1メタデータ部GB1に含まれる画像データGAのハッシュ値HA´´´を得る。判定部65は、このハッシュ値HA´´´と、前述したハッシュ値HA´(=HA´´)とを比較する。
HA´≠HA´´´である場合、判定部65は、画像データGA,GBの連続性が得られず、画像データの検証に失敗したと判断し、この判断結果を結果出力部66に出力する。結果出力部66は、検証結果が失敗したことを表す「NG」(NG表示)をモニタ部53の表示部73に表示させる。
一方、HA´=HA´´´である場合、判定部65は、画像データGA,GBの連続性が担保され、画像データの検証に成功したと判断し、この判断結果を結果出力部66に出力する。結果出力部66は、検証結果が成功したことを表す「OK」(OK表示)をモニタ部53の表示部73に表示させる。
このように、PC50は、HA´=HA´´且つHB´=HB´´であることで、画像データGA,GBの正当性、即ち画像データ毎に改竄されていないことを検証できる。更に、PC50は、HA´=HA´´´であることで、画像データGBを含む合成データFGBに含まれる画像データGAに関する相関情報を用いて、画像データGA,GBの連続性を保証できる。
次に、合成データのファイル構造例について説明する。
図2に示した合成データのファイル構造の他、例えば以下の合成データのファイル構造が挙げられる。
図7(A),(B)は、カメラ20が生成する合成データのファイル構造例を示す模式図である。
図7(A)は、画像データ部とメタデータ部とが1つのファイルで構成されたExif(Exchangeable image file format)フォーマットを示す。Exifフォーマットでは、例えば、メタデータ部には署名データが含まれ、画像データ部には画像データが含まれる。署名データには、付加データが結合されてもよい。画像データには、付加データが結合されてもよい。付加データは、例えば、画像データの撮像場所や日付の情報を含む。Exifフォーマットを用いると、データ管理を容易化できる。
図7(B)は、画像データと署名データとが別々のファイルで構成された例である。この場合も、画像データ又は署名データに付加データが結合されてもよい。
図8(A)〜(C)は、様々なファイル構造を持つ合成データにおける画像データの関連性を説明するための模式図である。
図8(A)では、合成データFGBの署名データSBは、画像データGBと前回の画像データGAのハッシュ値HAとに対し、ハッシュ関数を用いてハッシュ値を計算し、このハッシュ値を、署名鍵記憶部36に記憶された秘密鍵(署名鍵)を使って暗号化することで生成される。
即ち、過去の画像データに基づく相関情報(ここでは、画像データのハッシュ値)を用いて署名データが生成されるので、署名検証により画像データの連続性(関連性)を判定できる。尚、図8(A)に示したファイル構造は、図2に示したファイル構造と同様である。
図8(B)では、合成データが時系列で3つ連続し、過去(前回以前)の各画像データのハッシュ値を相関情報として用いる場合を例示する。3枚目の合成データFGCに含まれる署名データSCは、今回の合成データFGCに含まれる画像データGCと、前々回の画像データGAのハッシュ値HAと、前回の画像データGBのハッシュ値HBと、に基づいて生成される。
具体的には、署名処理部32は、画像データGC、ハッシュ値HA、及びハッシュ値HBに対し、ハッシュ関数を用いてハッシュ値を計算し、署名鍵を使ってこのハッシュ値を暗号化することで、署名データSCを生成する。図8(B)では、署名生成は、今回のデータ取得時に行われる。
従って、検証しようとしている画像データの過去の複数の画像データを用いて署名データが生成されるので、過去の複数の画像データとの連続性を保証できる。また、関連付けされた画像データの枚数が増加することで、関連付けされた範囲での画像データの抜け等を確認でき、連続性の保証能力を向上できる。
図8(C)では、図8(B)と同様に、合成データが時系列で3つ連続し、前回及び次回に取得される各画像データのハッシュ値を相関情報として用いる場合を例示する。合成データFGBの署名データSBは、画像データGBと、前回の画像データGAのハッシュ値HAと、次回の画像データGCのハッシュ値HCと、に基づいて生成される。
具体的には、署名処理部32は、画像データGB、ハッシュ値HA、及びハッシュ値HCに対し、ハッシュ関数を用いてハッシュ値を計算し、署名鍵を使ってこのハッシュ値を暗号化することで、署名データSBを生成する。図8(C)では、署名生成は、次回のデータ取得時に行われる。
従って、検証しようとしている画像データの前後の画像データを用いて署名データが生成されるので、前後の画像データとの連続性を保証できる。また、関連付けされた画像データの枚数が増加することで、関連付けされた範囲での画像データの抜け等を確認でき、連続性の保証能力を向上できる。
次に、署名処理システム10の動作例について説明する。
図9は、カメラ20による署名動作手順の一例を示すフローチャートである。
撮像部41は、撮像指示を受け付けるまで待ち、撮像指示を受け付けると、被写体を撮像してその画像信号を出力する(S1)。撮像指示は、例えば図示しない操作部(ボタン等)により受け付けられる。
画像データ生成部42は、撮像部41から画像信号を入力すると、付加データを添付した画像データを生成する(S2)。
署名処理部32は、前回のハッシュ値をハッシュデータ記憶部38から読み込む(S3)。
ハッシュ計算部34は、今回の画像データと、ステップS3でハッシュデータ記憶部38から読み込まれた前回のハッシュ値と、に対し、ハッシュ関数を用いて今回のハッシュ値を計算する(S4)。
署名処理部32は、今回のハッシュ値をハッシュデータ記憶部38に記憶させる。また、署名処理部32は、このハッシュ値を署名鍵記憶部36に記憶された秘密鍵で暗号化して、署名データを生成する(S5)。
データ合成部33は、画像データ生成部42で生成された画像データと、署名処理部32で生成された署名データと、を合成して合成データを生成し、合成データ記憶部37に記憶させる(S6)。この後、カメラ20は本動作を終了する。
次に、PC50の動作例について説明する。PC50の事前準備として、画像データを復号するための公開鍵を取得する場合、前述したように、種々の方法がある。
例えば、画像データに公開鍵が埋め込まれている場合、PC50が画像データに対し画像処理を行うことで、公開鍵が抽出されてもよい。また、PC50の例えばROM(Read Only Memory)に公開鍵が予め記憶されている場合、PC50がこの公開鍵を読み出すことで、公開鍵が取得されてもよい。また、PC50がカメラ20と通信可能に接続されている場合、PC50がカメラ20から公開鍵を受信してもよい。また、PC50が特定のサーバ装置と通信ネットワークを介して接続され、このサーバ装置から公開鍵を取得してもよい。
図10は、PC50による事前準備動作手順の一例を示すフローチャートである。図10では、通信ネットワークを介して公開鍵を取得することを例示する。
通信ネットワークを介してサーバ装置から公開鍵を取得する場合、例えば、公開鍵暗号基盤(PKI:Public Key Infrastructure)を使った暗号通信プロトコルが広く利用される。この暗号通信プロトコルは、例えば、SSL(Secure Sockets Layer)/TLS(Transport Layer Security)を含む。PKIでは、ネットワークに繋がった互いの装置が、それぞれ信頼した認証局によって発行されるデジタル証明書を使って認証が行われる。
PC50の通信部(図示せず)は、通信ネットワーク40を介して公開鍵KPEを登録しているサーバ装置(図示せず)に接続されるまで待つ(S11)。
データ読取部61は、通信部を介してサーバ装置と接続されると、カメラ20が保持する秘密鍵KSに対応する公開鍵KPEを読み取る(S12)。ここでは、カメラ毎に公開鍵が設定されているが、各々の画像データ毎に公開鍵が異なる場合、データ読取部61は、画像データに対応する公開鍵を読み取ってもよい。
検証鍵記憶部71は、データ読取部61によって読み取られた公開鍵を記憶する(S13)。この後、PC50は公開鍵取得動作を終了する。
図11は、PC50による検証動作手順の一例を示すフローチャートである。
データ読取部61は、カメラ20で撮像された合成データを入力するまで待つ(S21)。ここでは、連続する2枚の画像を含む合成データFGA,FGBが入力されることを想定する。
データ読取部61によって合成データFGA,FGBが読み取られると、ハッシュ計算部62は、合成データFGAの画像データ部GA0の画像データGAと第1メタデータ部GA1のハッシュ値HA´を計算する(S22)。同様に、ハッシュ計算部62は、合成データFGBの画像データ部GB0と第1メタデータ部GB1の画像データGBのハッシュ値HB´を計算する(S22)。
署名復号部63は、合成データFGAの第2メタデータ部GA2の署名データSAを公開鍵KPEで復号し、ハッシュ値HA´´を得る(S23)。同様に、署名復号部63は、合成データFGBの第2メタデータ部GB2の署名データSBを公開鍵KPEで復号し、ハッシュ値HA´´を得る(S23)。
署名データ検証部64は、ハッシュ値HA´とハッシュ値HA´´とが等しく、且つ、ハッシュ値HB´とハッシュ値HB´´とが等しいか否かを判別する(S24)。
ハッシュ値HA´とハッシュ値HA´´とが等しく、かつハッシュ値HB´とハッシュ値HB´´とが等しい場合、署名データ検証部64は、合成データFGA,FGBそれぞれの正当性の検証に成功したと判断する。この場合、判定部65は、データ読取部61で読み取られた第1メタデータ部GB1のハッシュ値HA´´´を取得する(S25)。
判定部65は、ハッシュ値HA´(=HA´´)とハッシュ値HA´´´とを比較する(S26)。
ハッシュ値HA´とハッシュ値HA´´´とが等しい場合、判定部65は、画像データGA,GBそれぞれが正当であり、且つ、画像データGA,GBの連続性が担保されたと判断する。この場合、結果出力部66は、表示部73に検証成功を表す「OK」を表示させる(S27)。この後、PC50は本動作を終了する。
一方、S24でハッシュ値HA´とハッシュ値HA´´とが異なる、又は、ハッシュ値HB´とハッシュ値HA´´とが異なる場合、判定部65は、画像データGA,GBの正当性の検証に失敗した(改竄された)と判断する。
また、S26でハッシュ値HA´(=HA´´)とハッシュ値HA´´´とが異なる場合、判定部65は、画像データGA,GBの連続性が担保されなかったと判断する。
結果出力部66は、画像データGA,GBが正当でなかった場合、又は、画像データGA,GBの連続性が担保されなかった場合、表示部73に検証失敗を表す「NG」を表示させる(S28)。この後、PC50は本動作を終了する。
このように、署名処理システム10は、複数の画像データの各々を検証できるとともに、連続性を有する画像データの信頼性を向上できる。これにより、データの改竄や消去が行われていないことを担保でき、複数の画像データの相関関係を保証できる。従って、画像データの証拠性を向上できる。
(変形例)
図12は、変形例における画像データの関連性を説明するための模式図である。合成データFGBの第1メタデータ部GB1には、前回の画像データGAのハッシュ値HAと今回のID番号(ID2)とが記憶される。今回のID番号(ID2)は、例えば、前回のID番号(ID1)から値1カウントアップした値であるが、今回データと前回データとの関係性(例えば連続性)を識別できれば、他の値でもよい。ID番号は、ID生成部31により、画像データ毎に生成される。
第2メタデータ部GB2に記憶される署名データSBは、今回の画像データGBと、前回の画像データGAのハッシュ値HBと、今回のID番号(ID2)と、に基づいて生成される。具体的には、署名処理部32は、画像データGB、ハッシュ値HB、及び今回のID番号に対し、ハッシュ関数を用いてハッシュ値を計算し、署名鍵を使ってこのハッシュ値を暗号化することで、署名データSBを生成する。
このように、変形例では、第1メタデータ部にID番号が含まれるので、ID番号を確認することで、撮像された順番を迅速に確認できる。また、ID番号を画像データに電子透かし等により視認可能に埋め込んだ場合、ID番号の視認性が向上し、画像データの連続性をユーザが容易に認識できる。また、前回の画像データのハッシュ値とID番号とを用いて署名データが生成されるので、証拠性が向上し、連続性を容易かつ高精度に確認できる。
また、相関情報として、ID番号とハッシュ値とを連携させることで、複数の画像データ間の連続性の証拠能力を向上させることができる。これにより、異なるカメラ20により撮像されたが偶然に画像データが連結されている場合、ID及びハッシュ値の双方を加味することで、証拠性を一層向上できる。
尚、図12の変形例では、ID番号を用いた場合を示したが、ID番号を用いる代わりに、前回の署名データ、前回の画像データ、又はこれらの組み合わせを用いてもよい。つまり、第2メタデータ部GB2に記憶される署名データSBは、画像データGBと、前回の画像データGAのハッシュ値HAと、今回のID番号、前回の署名データ及び前回の画像データのいずれか1つ又は組み合わせと、に基づいて生成されてもよい。
具体的には、署名処理部32は、画像データGBと、ハッシュ値HAと、今回のID番号、前回の署名データ、及び前回の画像データのいずれか1つ又は組み合わせと、に対し、ハッシュ関数を用いてハッシュ値を計算してもよい。署名処理部32は、署名鍵を使ってこのハッシュ値を暗号化することで、署名データSBを生成してもよい。
このように、今回のID番号、前回の署名データ及び前回の画像データのいずれか1つ又は組み合わせを用いて署名データが生成されることで、PC50は、複数の相関情報を用いて署名検証できる。従って、PC50、署名処理システム10は、複数の画像データの連続性の高精度に判定でき、複数の画像データ間の関連性を担保できる。
(第2の実施形態)
第1の実施形態では、第1メタデータ部に、画像データのハッシュ値を記憶し、相関情報としてハッシュ値を用いることで、画像データの連続性が担保されることを例示した。第2の実施形態では、ハッシュ値を用いることなく、ID番号を用いることで、画像データの連続性を担保することを例示する。
図13は第2の実施形態におけるカメラ20Aの機能的構成例を示すブロック図である。第2の実施形態の署名処理システムにおいて、第1の実施形態の署名処理システムと同一の構成要素については、同一の符号を用いることで、その説明を省略又は簡略化する。
カメラ20Aは、ID生成部31、ID記憶部35、撮像部41、画像データ生成部42、署名鍵記憶部36、署名処理部32A、データ合成部33、及び合成データ記憶部37を備える。
カメラ20Aは、撮像部41によって撮像される画像データと通し番号(ID番号)とを紐付けて、デジタル署名を行う。カメラ20Aは、第1の実施形態と比較すると、ハッシュ計算部34及びハッシュデータ記憶部38を省き、署名処理部32Aを有する。また、第1の実施形態では使用されなかった、ID生成部31及びID記憶部35を使用する。
ID生成部31は、今回の画像データに対し、通し番号となるように、ID記憶部35に記憶された前回のID番号に値1カウントアップされたID番号を生成し、署名処理部32Aに送る。また、ID生成部31は、更新されたID番号をID記憶部35に記憶させる。
署名処理部32Aは、画像データ生成部42から送られた画像データと、ID生成部31で生成されたID番号と、に対し、署名鍵記憶部36に記憶された秘密鍵を用いて、暗号処理部39で暗号化することで署名し、署名データを生成する。
データ合成部33は、画像データ生成部42で生成された画像データ及び署名処理部32Aで生成された署名データを合成し、合成データを生成する。データ合成部33は、合成データを合成データ記憶部37に記憶させる。
図14は、カメラ20Aによる署名動作手順の一例を示すフローチャートである。図14において、第1の実施形態における図9のステップと同一のステップについては、同一のステップ番号を付すことで、その説明を省略又は簡略化する。
S2において、画像データ生成部42が、画像データ又は付加データが付された画像データを生成すると、ID生成部31は、ID記憶部35から前回のID番号を読み込む(S3A)。
ID生成部31は、例えば、画像データ単位での通し番号となるように、前回のID番号に値1をカウントアップして、今回のID番号を生成する(S4A)。
ID記憶部35は、ID生成部31で生成されたID番号を、例えば上書きするように更新して記憶する(S4B)。
署名処理部32Aは、画像データ生成部42で生成された画像データと、ID生成部31で生成されたID番号と、に対し、署名鍵記憶部36に記憶された秘密鍵で暗号化して、署名データを生成する(S5A)。データ合成部33が画像データと署名データとを合成して合成データを生成する動作は、第1の実施形態と同様である。
一方、PCは、図示はしていないが、第1の実施形態のPC50と同様、データ読取部61、署名復号部63、検証鍵記憶部71、及び判定部65を有する。署名復号部63は、公開鍵を用いて署名データを復号して署名データに含まれるID番号を読み出す。判定部65は、このID番号と前後の画像データのID番号とを比較することで、連続性の有無を判定する。また、署名データの正当性についても検証できる。
つまり、本実施形態のPCは、今回の画像データと相関のある前回の画像データのハッシュ値に代わり、前回の画像データに付されるID番号と相関がある今回のID番号を用いて、画像データの正当性及び連続性を検証する。
このように、第2の実施形態では、例えば、相関情報として連番となるID番号を用いて署名データを生成することで、画像データの連続性(関連性)を検証できる。
図15(A),(B)は、様々なファイル構造を持つ合成データにおける画像データの関連性の一例を説明するための模式図である。
図15(A)は、画像データ部GA0(GB0)の画像データGA(GB)と、第1メタデータ部GA1(GB1)のID番号と、に対し、秘密鍵で暗号化して署名データSA(SB)を得る場合を示す。ID番号は、前述したように、例えば通し番号となる連番である。
図15(B)は、画像データ部GA0(GB0)の画像データGA(GB)に、ID番号が透かしや画像として挿入され、画像データGA(GB)を公開鍵で暗号化して署名データSA(SB)を得る場合を示す。このように、例えば、連番となるID番号を用いて署名データが生成されることで、画像データの関連性が得られる。
尚、第2の実施形態では、相関情報として、ハッシュ値を用いることなく、ID番号(識別番号)を用いて、画像データの連続性を担保する場合を示した。これ以外でも、相関情報として、署名データや前後の画像データそのものを用いてもよい。この場合、PCは、ID番号と同様、署名データや画像データを用いて、合成データの正当性や連続性の有無を判定してもよい。
このように、相関情報としてのID番号を用いて、複数の画像データ間の関連性を容易に保証できる。
(第3の実施形態)
第3の実施形態では、相関情報として、ハッシュ値を用いることなく、署名データを用いることを想定する。
図16は、第3の実施形態におけるカメラ20Bの構成例を示すブロック図である。カメラ20Bは、撮像部41、画像データ生成部42、署名処理部32B、署名鍵記憶部36、署名データ記憶部38B、データ合成部33、及び合成データ記憶部37を備える。
カメラ20Bにおいて、カメラ20,20Aと同一の構成要素については、同一の符号を用いることで、その説明を省略又は簡略化する。
署名処理部32Bは、画像データ生成部42から送られた画像データと、署名データ記憶部38Bに記憶された署名データ(前回の署名データ)と、に対し、署名鍵記憶部36に記憶された秘密鍵を用いて、暗号処理部39で暗号化することで署名し、署名データを生成する。生成された署名データ(今回の署名データ)は、署名データ記憶部38Bに送られる。
署名データ記憶部38Bは、例えば、署名処理部32Cにより生成された署名データ(今回の署名データ)を記憶する。
図17は、本実施形態におけるファイル構造を持つ合成データにおける画像データの関連性の一例を説明するための模式図である。
図17は、図8(A)、図12、図15(A)等に対応する。図17では、合成データFGBの第1メタデータ部GB1に、署名データSAが格納されること以外は、図8(A)等と同様である。つまり、相関情報が、署名データとされている。相関情報が、合成データ3つ以上のデータから生成される場合も、同様である。
このように、相関情報としての署名データを用いて、複数の画像データ間の関連性を保証できる。
(第4の実施形態)
第4の実施形態では、相関情報として、ハッシュ値を用いることなく、画像データそのものを用いることを想定する。
図18は、第3の実施形態におけるカメラ20Bの構成例を示すブロック図である。カメラ20Cは、撮像部41、画像データ生成部42、署名処理部32C、署名鍵記憶部36、画像データ記憶部38C、データ合成部33、及び合成データ記憶部37を備える。
カメラ20Cにおいて、カメラ20,20A,20Bと同一の構成要素については、同一の符号を用いることで、その説明を省略又は簡略化する。
署名処理部32Cは、画像データ生成部42から送られた画像データと、画像データ記憶部38Cに記憶された画像データ(前回の署名データ)と、に対し、署名鍵記憶部36に記憶された秘密鍵を用いて、暗号処理部39で暗号化することで署名し、署名データを生成する。
画像データ記憶部38Cは、例えば、画像データ生成部42により生成された画像データ(今回の画像データ)を記憶する。
図19は、本実施形態におけるファイル構造例を示す模式図である。図19は、図8(A)、図12、図15(A)、図18等に対応する。図19では、合成データFGBの第1メタデータ部GB1に、画像データGAが格納されること以外は、図8(A)等と同様である。つまり、相関情報が、画像データそのものとされている。相関情報が、合成データ3つ以上のデータから生成される場合も、同様である。
このように、相関情報としての画像データそのものを用いて、複数の画像データ間の関連性を保証できる。
以上のように、上記実施形態の署名処理システム10のカメラ20,20A〜20Cは、撮像部41及び署名処理部32,32A〜32Cを備える。撮像部41は、相互に関連する第1の画像データを含む複数の画像データを取得する。署名処理部32,32A〜32Cは、第1の画像データ、複数の画像データ間の相関関係を示す相関情報、及び署名鍵に基づいて、第1のデータ及び相関情報に対する第1の署名データを生成する。
これにより、カメラ20,20A〜20Cは、相関情報で関連付けされた複数の画像データに対する改竄や消去(抜け等)をPC50が確認できるように、署名データを生成できる。従って、カメラ20,20A、PC50、署名処理システムは、画像データに対する関連性(例えば連続性)の保証能力を向上させることができる。
よって、カメラ20,20A〜20C、PC50、署名処理システム10は、例えば、1度だけ書き込み可能なワンタイムの高価な記憶媒体を用いなくても、証拠能力を向上させることができる。また、カメラ20,20A〜20Cは、署名処理して生成された合成データを書き込む記憶媒体の種類によらずに、PC50により合成データを検証可能な状態にできる。
よって、PC50は、例えば、ワンタイム記憶媒体から読み出しして画像データが改竄された場合でも、ハッシュ値等を用いて画像データの改竄を確認でき、更に画像データの関連性の有無も確認できる。
従って、PC50は、20,20A〜20Cの所有者や管理者が、例えば、意図的に改竄や消去していない、連続写真(連続する複数の画像データ)の中から不都合な写真を1枚又は一部消去していない、ことを容易に保証できる。
また、撮像部41は、時系列に連続する複数のデータを取得してもよい。これにより、カメラ20,20A〜20C、署名処理システムは、画像データに対する関連性の保証能力を向上させることができる。
また、撮像部41は、第1の画像データと第2の画像データとを撮像してもよい。署名処理部32,32Aは、第1の画像データ、第1の画像データと第2の画像データとの相関関係を示す相関情報、及び署名鍵に基づいて、第1の署名データを生成してもよい。
これにより、PC50は、例えば2つの画像データが連続する場合に、相関情報を参照することで、2つの画像データの関連性の有無を確認できる。
また、署名処理部32,32Aは、相関情報としての第2の画像データのハッシュ値に基づいて、第1の署名データを生成してもよい。
これにより、カメラ20、署名処理システムは、画像データに関する一方向性の固有の値を用いて、第1の画像データと第2の画像データとの関連性の有無を判別できる。また、カメラ20は、ハッシュ値を用いることで、相関情報を容易に生成できる。
また、カメラ20,20Aは、画像データのIDを生成するID生成部31を備えてもよい。署名処理部32,32Aは、相関情報としての第1の画像データのIDに基づいて、第1の署名データを生成してもよい。
これにより、カメラ20,20A、署名処理システムは、画像データ毎に付されるIDを用いて、第1の画像データと第2の画像データとの関連性の有無を判別できる。また、カメラ20,20Aは、IDを例えば連番で生成すればよいので、相関情報を容易に生成できる。
また、署名処理部32Bは、相関情報としての第2の画像データに対する第2の署名データに基づいて、第1の署名データを生成してもよい。
これにより、例えば、第1の画像データに連続する第2の画像データに基づいて生成された第2の署名データが相関情報となるので、PC50は、第1の画像データと第2の画像データとの関連性の有無を判断できる。
また、署名処理部32Cは、相関情報としての第2の画像データに基づいて、第1の署名データを生成してもよい。
これにより、カメラ20C、署名処理システムは、相関情報として例えば連続する画像データそのものを用いることができるので、相関情報を簡単に得ることができ、容易に署名生成できる。
また、第1の画像データのIDは、表示部73により第1のデータに付加された可視データとして表示されてもよい。
これにより、カメラ20,20A、署名処理システムは、例えば、改竄や前後の画像データとの関連性を調査すべき第1の画像データにおいて、電子透かし等によりIDの視認性を向上できる。また、カメラ20,20A、署名処理システムは、可視データとするこことで、相関情報の扱いを容易化できる。IDは、例えば、第1の画像データの空きフォーマットの部分に書き込まれてもよい。
また、カメラ20,20A〜20Cは、複数の画像データと第1の署名データとを送信する送信部(不図示)を備えてもよい。
これにより、カメラ20,20A〜20Cは、関連性の探査対象としての画像データと署名データとを簡単にPC50へ送信できる。
また、PC50は、データ読取部61、署名復号部63と、署名データ検証部64、及び判定部65を備える。データ読取部61、相互に関連する第1の画像データを含む複数の画像データと、第1の署名データと、を取得する。第1の署名データは、第1の画像データと複数の画像データ間の相関関係を示す相関情報とに対して署名処理されたデータである。署名復号部63は、検証鍵を用いて、第1の署名データを復号する。判定部65は、相関情報に基づいて、複数のデータ間の関連性の有無を判定する。
これにより、PC50は、相関情報で関連付けされた複数の画像データに対する改竄や消去(抜け等)を確認できる。従って、カメラ20,20A〜20C、PC50、及び署名処理システムは、画像データに対する関連性(例えば連続性)の保証能力を向上させることができる。
よって、カメラ20,20A〜20C、PC50、署名処理システム10は、例えば、1度だけ書き込み可能なワンタイムの高価な記憶媒体を用いなくても、証拠能力を向上させることができる。また、PC50は、署名処理して生成された合成データを書き込む記憶媒体の種類によらずに、画像データを検証できる。
また、PC50は、例えば、ワンタイム記憶媒体から読み出しして画像データが改竄された場合でも、ハッシュ値等を用いて画像データの改竄を確認でき、更に画像データの関連性の有無も確認できる。
従って、PC50は、カメラ20,20Aの所有者や管理者が、例えば、意図的に改竄や消去していない、連続写真(連続する複数の画像データ)の中から不都合な写真を1枚又は一部消去していない、ことを容易に保証できる。
また、データ読取部61は、時系列に連続する複数のデータを取得してもよい。これにより、カメラ20,20A〜20C、PC50、及び署名処理システムは、画像データに対する関連性の保証能力を向上させることができる。
また、データ読取部61は、第1の画像データと第2の画像データとを取得してもよい。判定部65は、相関情報としての第2の画像データのハッシュ値に基づいて、複数の画像データ間の関連性の有無を判定してもよい。
これにより、画像データから容易に導出可能であり、一方向性の特性により安全性の高いハッシュ値を、相関情報として用いる。従って、PC50は、署名検証に係る負荷を低減して、複数の画像データ間の改竄の有無や関連性の有無を判定できる。
また、PC50は、第2の画像データのハッシュ値である第1のハッシュ値(例えばHA´)を導出するハッシュ計算部62を備えてもよい。署名復号部63は、検証鍵を用いて第1の署名データを復号し、第2のハッシュ値(例えばHA´´)を得てもよい。判定部65は、第1のハッシュ値と、第2のハッシュ値と、第1の画像データに含まれる第2の画像データのハッシュ値である第3のハッシュ値(例えばHA´´´)と、に基づいて、第1の画像データと第2の画像データとの関連性の有無を判定してもよい。
これにより、PC50は、例えば第1のハッシュ値と第2のハッシュ値とが一致することで、署名生成装置としてのカメラ20,20Aでの第2の画像データと、署名検証装置としてのPC50での第2の画像データと、が一致することを確認できる。つまり、PC50は、第2の画像データが改竄されていないことを確認できる。
更に、PC50は、第1のハッシュ値又は第2のハッシュ値と第3のハッシュ値とが一致することで、例えば、第1の画像データを含む合成データに含まれる第2の画像データのハッシュ値と、第2の画像データから算出されたハッシュ値と、が一致することを確認できる。従って、相互に関連する2つの画像データから、同じ画像データ(第2の画像データ)の一致が確認できるので、PC50は、例えば、カメラ20,20Aの所有者により2つの画像データの間から画像データが消去されていないことを保証できる。
以上、図面を参照しながら各種の実施形態について説明したが、本発明はかかる例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
上記実施形態では、署名生成装置が、静止画像を撮像可能なデジタルスチルカメラに適用されることを例示したが、これに限らず、例えば、動画像を撮像可能な監視カメラ等のビデオカメラに適用されてもよい。
また、署名生成装置は、例えば、収音装置(マイクロホン)により音声を収音して音声データを記録するレコーダ(録音装置)や、音声を録音可能なPBX(Private Branch eXchange)(構内交換機)、に適用されてもよい。この場合、音声データの正当性や連続性や証拠性を向上できる。また、音声データと画像データとの双方を含むデータに対して、上記実施形態の署名生成や署名検証が適用されてもよい。
上記実施形態では、関連する複数のデータとして、カメラ20,20Aにより連続して撮像された複数の画像データ等、時系列に並ぶデータを例示した。これに限られず、関連する複数のデータとして、種々のデータ(例えば、数珠つなぎのように前後のデータとの関連が決まっているデータ、一群のデータの中で他のデータと一部に共通する値を持つデータ)、が挙げられる。
また、関連する複数のデータのうち、1つ前又は1つ後のデータのように全データを関連するデータの対象とするのではなく、例えば時系列に並ぶ2つおき、3つおき、に連続するデータの相関情報を用いてもよい。この場合、署名処理システムは、例えば複数のデータにおいてある程度の間隔を空けて、関連性があるか否かを判断できる。
また、連続した複数のデータでない場合でも、任意の複数のデータの関連性を知りたい場合、カメラは、例えば、関連性を検査したい複数のデータのうちの1つのデータに、複数のデータのうちの他のデータに基づく相関情報を埋め込んでもよい。これにより、PC50は、任意の複数のデータの関連性の有無を判定できる。