説明

情報処理装置及び演算方法

【課題】通信オーバヘッドや、演算能力の乏しい装置の演算負荷を削減し、マルチパーティプロトコルを短時間で完了させる。
【解決手段】計算実行装置301では、通信部311が計算依頼装置201により暗号化された入力データを入力し、暗号部312が暗号化された入力データを復号し、耐タンパ領域310内に配置された演算部314は、復号後の入力データの内容を耐タンパ領域外に配置された演算部321に秘匿しながら演算部321と通信を行って依頼計算プロトコルに基づいて入力データに対する演算を行い、入力データに対する演算結果を演算部321に秘匿して取得する。そして、暗号部312が、演算部314から復号後の入力データに対する演算結果を入力し、入力した演算結果を暗号化し、通信部311が暗号化された演算結果を計算依頼装置201に対して送信する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マルチパーティプロトコルに基づく計算を行う情報処理装置等に関する。
【背景技術】
【0002】
基本的な暗号技術を複合的に利用し、高度な機能を実現するものを暗号プロトコルと呼ぶが、この一つにマルチパーティプロトコル(またはSecure Computation)がある。
マルチパーティプロトコルを利用すると、例えばエンティティAが秘密の値xを、エンティティBが秘密の値yを保持しているときに、双方の秘密を保ったままある関数値f(x,y)を計算することが可能となる。
【0003】
さらに、マルチパーティプロトコルの特別な形として、依頼計算プロトコルと呼ばれるものがある。
これは、エンティティAの計算能力が低く、エンティティBが高い計算能力を持ちかつ秘密情報を保持していない場合に相当する。
依頼計算プロトコルを利用すると、例えば計算能力の低いエンティティAが秘密の値xに関数fを適用した値f(x)を求めたいときに、その計算の大半を計算能力の高いエンティティBに依頼することで高速にf(x)を取得でき、かつエンティティBに対して入力x、出力f(x)に関する情報を一切漏らさないということが可能になる。
非特許文献1では、依頼計算プロトコルを利用してべき乗剰余演算を行う具体的な方法が記載されている。
また、特許文献1では、べき乗剰余演算を実行する依頼計算装置が開示されている。
【0004】
さらに、マルチパーティプロトコルの別の形として、ゼロ知識証明プロトコルと呼ばれるものがある。
ゼロ知識証明プロトコルを利用すると、例えば「エンティティAの持つ情報がある性質を満たすという事実」を、その事実以外の一切の情報を漏らすことなく、エンティティBに対して証明することができるため、認証への応用などが可能である。
【特許文献1】特開平6−19393号公報
【非特許文献1】岡本龍明,山本博資著,「現代暗号」,産業図書,1997年6月30日,pp.236−238.
【発明の開示】
【発明が解決しようとする課題】
【0005】
特許文献1又は非特許文献1で記載された具体例(依頼計算プロトコル)を始めとするマルチパーティプロトコルは、一般に多くの通信量や通信回数を必要とする。
従って、例えば依頼計算プロトコルがインターネットなどのネットワークを介して実行される場合(例えば、図1に示すように計算依頼装置201と計算実行装置301とがネットワーク101を介して依頼計算プロトコルを実行する場合)、依頼計算プロトコル実行中に計算依頼装置201と計算実行装置301が多くの通信を行う必要が生じるため、プロトコルの完了までに多くの時間がかかってしまうという課題がある。
さらに、通信量や通信回数が多いと、複数の計算実行装置301に対して同時に計算を依頼することが困難となり、グリッドコンピューティングのような大規模なシステムを構成することが難しくなるという課題がある。
【0006】
また、ゼロ知識証明プロトコルを利用して、ユーザの情報をサーバに対して秘匿したままユーザ認証を行うシステム(例えば、図8に示すようにクライアント装置901とサーバ装置1001とがネットワーク101を介してゼロ知識証明プロトコルを利用してユーザ認証を行うシステム)を考えた場合、一般に、ゼロ知識証明プロトコルは同じ手順を何度も繰り返すことによって「ユーザの持つ情報がある性質を満たすという事実」をサーバに確信させるため、クライアント装置901とサーバ装置1001が多くの演算・通信を行う必要が生じる。
特に、クライアント装置901として例えば携帯電話のような、演算能力の乏しい装置を利用する場合、クライアント装置901の演算負荷が大きくなり、プロトコルの完了までに多くの時間がかかってしまうという課題がある。
【0007】
本発明は上記のような問題点を解決するためになされたもので、マルチパーティプロトコルにおける通信オーバヘッドや、演算能力の乏しい装置の演算負荷を削減し、マルチパーティプロトコルを短時間で完了させることを主な目的とする。
【課題を解決するための手段】
【0008】
本発明に係る情報処理装置は、
入力データに対する演算を行う情報処理装置であって、
入力データを入力するデータ入力部と、
外部から内部の情報を読み取られることに対する耐性を持つ耐タンパ領域内に配置された耐タンパ領域演算部と、
前記情報処理装置内の前記耐タンパ領域外に配置された非耐タンパ領域演算部とを有し、
前記耐タンパ領域演算部は、
前記データ入力部により入力された入力データの内容を前記非耐タンパ領域演算部に秘匿しながら前記非耐タンパ領域演算部と通信を行って前記非耐タンパ領域演算部と協働して前記入力データに対する演算を行い、前記入力データに対する演算結果を取得することを特徴とする。
【発明の効果】
【0009】
本発明によれば、情報処理装置内の耐タンパ演算部と非耐タンパ演算部とを用いて情報処理装置の内部だけで演算を実行することで、マルチパーティプロトコルにおける通信オーバヘッドを削減し、また、演算能力の乏しい装置の演算負荷を削減し、マルチパーティプロトコルの高速化を達成することができる。
また、耐タンパ領域演算部の耐タンパ性により、入力データの内容が非耐タンパ領域演算部に対して秘匿された状態で演算が実行されるので、秘匿性を保持してマルチパーティプロトコルを実行することができる。
【発明を実施するための最良の形態】
【0010】
実施の形態1.
本実施の形態では、マルチパーティプロトコルとして、依頼計算プロトコルを扱う。
図1は、本実施の形態に係る依頼計算システムの構成例を示す。
計算依頼装置201と計算実行装置301は、ネットワーク101で接続されており、計算実行装置301は計算依頼装置201からの入力データに対する演算を実行する。
計算実行装置301は、情報処理装置の例である。
【0011】
図2は、依頼計算システム(図1)において、計算依頼装置201の構成例を表すブロック図である。
図2において、通信部211は計算実行装置301と通信を行う手段である。
暗号部212は共通鍵・公開鍵暗号を用いた暗号化・復号・認証、乱数生成などを行う手段である。
鍵記憶領域213は暗号鍵を、計算実行装置IDと関連付けて記憶するデータ記憶手段である。
【0012】
図4は、鍵記憶領域213が記憶するデータの一例を表す。
計算実行装置IDとしては、計算実行装置301を特定できるもの、例えばマシン名やIPアドレスなどが利用できる。
【0013】
図3は、依頼計算システム(図1)において、計算実行装置301(情報処理装置)の構成例を表すブロック図である。
図3において、耐タンパ領域310は、外部から物理的・論理的に内部の情報を読み取られることに対する耐性を持つ領域である。
すなわち、たとえ計算実行装置301の構成要素であっても、耐タンパ領域外から耐タンパ領域310内部に直接アクセスすることはできない。
耐タンパ領域310を利用するためには、鍵記憶領域313が保持する暗号鍵に対応する暗号鍵を、あらかじめ保持しておく必要がある。
耐タンパ領域310の一例としては、耐タンパ暗号装置、ICカード、耐タンパUSBトークンなどが挙げられる。
通信部311は計算依頼装置201と通信を行う手段である。通信部311は、計算依頼装置201から、依頼計算の元になる入力データを入力し、また、依頼計算の演算結果を計算依頼装置201に出力する。通信部311は、データ入力部及びデータ出力部の例である。
暗号部312は、共通鍵・公開鍵暗号を用いた暗号化・復号・認証、乱数生成などを行う手段である。暗号部312は、耐タンパ領域暗号化部の例である。
鍵記憶領域313は暗号鍵を、計算依頼者IDと関連付けて記憶するデータ記憶手段である。
【0014】
図5は鍵記憶領域313が記憶するデータの一例を表す。
計算依頼者IDとしては、計算依頼者(ユーザでも装置でも良い)を特定できるもの、例えばユーザ名、マシン名やIPアドレスなどが利用できる。
【0015】
演算部314は、耐タンパ領域外にある演算部321との間で依頼計算を行う手段である。演算部314は、耐タンパ領域演算部の例である。
計算手順記憶領域315は、演算部314と演算部321との間で行われる依頼計算の手順を記憶するデータ記憶手段である。
【0016】
図6は計算手順記憶領域315が記憶するデータの一例を表す。
図6では自然言語を用いて手順を記述しているが、プログラム言語などを用いて手順を記述することもできる。
【0017】
演算部321は、耐タンパ領域310内部にある演算部314との間で依頼計算を行う手段である。演算部321は、非耐タンパ領域演算部の例である。
計算手順記憶領域322は、演算部321と演算部314との間で行われる依頼計算の手順を記憶するデータ記憶手段であり、一例として、図6と同様の形式のデータを記憶する。但し、計算手順記憶領域322に記憶されている計算手順の内容自体は、計算手順記憶領域315に記憶されている計算手順の内容と異なる。つまり、耐タンパ領域310内に配置されている計算手順記憶領域315に記憶されている計算手順は、耐タンパ領域310内の演算部314が行う計算の手順が示されており、耐タンパ領域310外に配置されている計算手順記憶領域322に記憶されている計算手順は、耐タンパ領域310外の演算部321が行う計算の手順が示されている。
【0018】
ここで、計算実行装置301における処理の流れを概説しておく。
計算実行装置301では、通信部311が計算依頼装置201により暗号化された入力データを入力し、暗号部312が通信部311により入力された暗号化された入力データを復号し、復号後の入力データを耐タンパ領域内に配置された演算部314に対して出力する。
演算部314は、復号後の入力データの内容を耐タンパ領域外に配置された演算部321に秘匿しながら演算部321と通信を行って演算部321と協働して依頼計算プロトコルに基づいて入力データに対する演算を行い、入力データに対する演算結果を演算部321に秘匿して取得する。
また、演算に際しては、演算部314は、演算部321以外とは通信を行うことなく(つまり、計算実行装置301の外部と通信することなく)、演算部321と協働して入力データに対する演算を行い、入力データに対する演算結果を取得する。
そして、暗号部312は、演算部314から演算結果を入力し、入力した演算結果を暗号化し、通信部311は暗号化された演算結果を計算依頼装置201に対して送信する。
【0019】
図7は、本実施の形態における依頼計算処理を説明するためのフローチャートである。依頼計算処理における動作について、図7のフローチャートを参照しながら説明する。
【0020】
依頼計算処理を行う前に、あらかじめ計算依頼装置201と耐タンパ領域310とで、暗号鍵を共有しておく(ステップS701、S702)。
ここでは、鍵記憶領域213、鍵記憶領域313に、同じ共通鍵kが格納されているものとする。
また、あらかじめ計算実行装置301の耐タンパ領域310と耐タンパ領域外とで、依頼計算手順を共有しておく(ステップS702、S703)。
ここでは、計算手順記憶領域315、計算手順記憶領域322に、依頼計算を適用したい関数fに対応する依頼計算手順が格納されているものとする。
【0021】
以下、計算依頼装置201が、入力xに関数fを適用した値f(x)の計算を、計算実行装置301に依頼して、f(x)を取得する手順について説明する。
【0022】
まず、計算依頼装置201の暗号部212が、計算実行装置301に対応する暗号鍵kを鍵記憶領域213から取得し、この暗号鍵kを用いて、入力xに対して暗号化・認証処理を行い、E(k,x)を生成する(ステップS704)。
暗号化は入力xを耐タンパ領域310以外に秘匿するために、認証処理は入力xが改ざんされていないことを耐タンパ領域310が確認できるようにするために実行される。これらは、既存の暗号・認証技術を用いることで実現できる。
次に、計算依頼装置201の通信部211が、耐タンパ領域310の通信部311にE(k,x)を送信する(ステップS705)。
計算実行装置301では、通信部311がE(k,x)を受信する(ステップS706)(データ入力ステップ)。
その後、耐タンパ領域310の暗号部312が、計算依頼装置201に対応する暗号鍵kを鍵記憶領域313から取得し、この暗号鍵kを用いて、E(k,x)に対して復号・認証処理を行う(ステップS707)。ここでは、既存の暗号・認証技術を用いることで、入力xを取得し、かつ入力xが改ざんされていないことを確認する。
【0023】
その後、耐タンパ領域310の演算部314、耐タンパ領域外の演算部321が、それぞれの計算手順記憶領域315、322に格納されている依頼計算手順に従って相互に通信を行い、依頼計算プロトコルを実行することで、耐タンパ領域310が保持する入力xを秘密にしたまま、耐タンパ領域310だけが目的関数の値f(x)を得る(ステップS708)(演算ステップ)。ここでは、既存の依頼計算技術が利用できる。
つまり、既存の依頼計算技術における計算依頼装置の役割を耐タンパ領域内の演算部314が担い、計算実行装置の役割を耐タンパ領域外の演算部321が担うことにより、計算実行装置301の内部のみで依頼計算が実行できる。
【0024】
依頼計算プロトコルの終了後、耐タンパ領域310の暗号部312が、暗号鍵kを用いて、出力f(x)に対して暗号化・認証処理を行い、E(k,f(x))を生成する(ステップS709)。
暗号化は出力f(x)を計算依頼装置201以外に秘匿するために、認証処理は出力f(x)が改ざんされていないことを計算依頼装置201が確認できるようにするために実行される。これらは、既存の暗号・認証技術を用いることで実現できる。
次に、耐タンパ領域310の通信部311が、計算依頼装置201の通信部211にE(k,f(x))を送信する(ステップS710、S711)。
その後、計算依頼装置201の暗号部212が、暗号鍵kを用いて、E(k,f(x))に対して復号・認証処理を行う(ステップS712)。ここでは、既存の暗号・認証技術を用いることで、出力f(x)を取得、かつ出力f(x)が改ざんされていないことを確認し、全体の処理を終了する。
【0025】
以上のように、依頼計算プロトコルを計算実行装置301の内部だけで実行することで、ネットワーク101を介した依頼計算プロトコルが実行される場合に比べ、通信オーバヘッド削減による高速化を達成することができる。計算依頼装置201が保持する秘密情報は、耐タンパ領域310の耐タンパ性によって守られる。
前述のように、従来は、計算依頼装置と計算実行装置との間で通信を行いながら依頼計算を実行していたので、計算依頼装置と計算実行装置との間で多くの通信量や通信回数が必要であり、計算の完了までに時間がかかっていた。
本実施の形態によれば、従来の計算依頼装置の役割を計算実行装置301内の耐タンパ領域310に配置された演算部314に担わせ、従来の計算実行装置の役割を計算実行装置301内の耐タンパ領域310外に配置された演算部321に担わせているので、依頼計算自体は、計算実行装置301内の演算部314と演算部321との間の通信を通じて実行される。このため、依頼計算における計算依頼装置201と計算実行装置301との間の通信は、計算依頼装置201から計算実行装置301への入力データの送信と、計算実行装置301から計算依頼装置201への演算結果の送信のみである。
【0026】
また、依頼計算プロトコルの実行中(ステップS708)は、計算依頼装置201には一切の計算負荷がかからないため、複数の計算実行装置301に対して同時に計算を依頼するという、グリッドコンピューティングのような大規模システムを構成することも容易となる。
【0027】
なお、本実施の形態では、計算依頼装置と計算実行装置が協調して依頼計算プロトコルを実行するシステムについて記述しているが、同様の構成で、ゼロ知識証明を始めとする一般のマルチパーティプロトコルを実行するシステムを構成することも可能である。
例えばゼロ知識証明の場合、証明者が計算依頼装置に、検証者が計算実行装置に相当する。
なお、ゼロ知識証明プロトコルを実行する例については、実施の形態2で説明する。
【0028】
また、本実施の形態では、耐タンパ領域内外であらかじめ依頼計算手順が共有されているが、依頼計算プロトコル(ステップS708)実行前に手順を共有することも可能である。
この場合、計算依頼装置が耐タンパ領域に送信した依頼計算手順を、耐タンパ領域内外の計算手順記憶領域に格納することになる。必要に応じて、本実施の形態で示したものと同様の暗号・認証技術が利用できる。
【0029】
また、本実施の形態では、暗号や認証を行うために共通鍵暗号を利用しているが、公開鍵暗号を利用することも可能である。
この場合、鍵記憶領域は、公開鍵(もしくは公開鍵証明書)や秘密鍵を記憶することになる。
【0030】
また、本実施の形態では、計算実行装置の耐タンパ領域が暗号部と演算部を持っているが、これらは一部機能を共有していても良い。また、同一であっても良い。
【0031】
また、本実施の形態では、計算実行装置の耐タンパ領域が通信部を持っているが、かわりに、計算実行装置の耐タンパ領域外に通信部を持たせることも可能である。
この場合、計算依頼装置−耐タンパ領域間の情報のやり取りは、耐タンパ領域外にある通信部を介して行うことになる。
【0032】
また、本実施の形態では、計算実行装置の耐タンパ領域、耐タンパ領域外にそれぞれ計算手順記憶領域が存在するが、一方だけに計算手順記憶領域が存在するようにすることも可能である。
この場合、ステップS708の依頼計算プロトコルにおいて、計算手順記憶領域を持つ方が、持たない方に指示を出しながらプロトコルが実行されることになる。
【0033】
また、本実施の形態では、計算依頼装置が保持する秘密情報を入力xとしているが、xはスカラー値に限らず、一般のベクトル値であっても良い。
【0034】
以上、本実施の形態では、マルチパーティプロトコル実行システムにおいて、計算を実行する片方の装置の中に、もう片方の装置が信用し、かつコントロールできる耐タンパ領域を持たせることで、マルチパーティプロトコルの処理時間を短縮する方式について説明した。
【0035】
また、本実施の形態では、依頼計算システムにおいて、計算を実行する装置の中に、計算を依頼する装置が信用し、かつコントロールできる耐タンパ領域を持たせることで、依頼計算の処理時間を短縮する方式について説明した。
【0036】
また、本実施の形態では、計算を実行する装置と、耐タンパ領域の間で行われる依頼計算の手順を、あらかじめ計算実行装置と耐タンパ領域に組み込んでおく方式について説明した。
【0037】
また、本実施の形態では、計算を実行する装置と、耐タンパ領域の間で行われる依頼計算の手順を、計算を依頼する装置が耐タンパ領域に送信し、この手順に基づいて依頼計算を行う方式について説明した。
【0038】
実施の形態2.
本実施の形態では、マルチパーティプロトコルとしてゼロ知識証明プロトコルを扱い、これを利用して、ユーザの情報をサーバに対して秘匿したままユーザ認証を行うシステムについて述べる。
特に、ユーザの情報として生体情報を用いる、生体認証システムについて説明する。
【0039】
図8は、本実施の形態に係る生体認証システムの構成例を示す。
クライアント装置901とサーバ装置1001は、ネットワーク101で接続されており、サーバ装置1001はクライアント装置901で取得された人の生体情報(認証対象データ)に対する認証演算を実行する。
クライアント装置901は、認証依頼装置の例であり、サーバ装置1001は、情報処理装置の例である。
生体情報とは、例えば、人の指紋、静脈、虹彩、網膜、顔、筆跡、声、DNA等の情報である。
【0040】
図9は、生体認証システム(図8)において、クライアント装置901(認証依頼装置)の構成例を表すブロック図である。
図9において、通信部911はサーバ装置1001と通信を行う手段である。
暗号部912は共通鍵・公開鍵暗号を用いた暗号化・復号・認証、乱数生成などを行う手段である。
鍵記憶領域913はサーバ装置1001が持つ耐タンパ領域1010の公開鍵、およびユーザが生体情報の暗号化に利用する共通鍵を、サーバ装置IDと関連付けて記憶するデータ記憶手段である。
図11は鍵記憶領域913が記憶するデータの一例を表す。サーバ装置IDとしては、サーバ装置を特定できるもの、例えばマシン名やIPアドレスなどが利用できる。
【0041】
図10は、生体認証システム(図8)において、サーバ装置1001(情報処理装置)の構成例を表すブロック図である。
図10において、耐タンパ領域1010は、外部から物理的・論理的に内部の情報を読み取られることに対する耐性を持つ領域である。すなわち、たとえサーバ装置1001の構成要素であっても、耐タンパ領域外から耐タンパ領域1010内部に直接アクセスすることはできない。耐タンパ領域1010の一例としては、耐タンパ暗号装置、ICカード、耐タンパUSBトークンなどが挙げられる。
通信部1011は、クライアント装置901と通信を行う手段である。通信部1011は、データ入力部及びデータ出力部の例である。
暗号部1012は、共通鍵・公開鍵暗号を用いた暗号化・復号・認証、乱数生成などを行う手段である。暗号部1012は、耐タンパ領域暗号化部の例である。
鍵記憶領域1013は耐タンパ領域1010の公開鍵ペアを記憶するデータ記憶手段である。
演算部1014は、耐タンパ領域外にある演算部1021との間でゼロ知識証明などを行う手段である。演算部1014は、耐タンパ領域演算部の例である。
計算手順記憶領域1015は、演算部1014と演算部1021との間で行われるゼロ知識証明の手順を記憶するデータ記憶手段であり、一例として、図6と同様のデータを記憶する。
演算部1021は、耐タンパ領域1010内部にある演算部1014との間でゼロ知識証明などを行う手段である。演算部1021は、非耐タンパ領域演算部の例である。
計算手順記憶領域1022は、演算部1021と演算部1014との間で行われるゼロ知識証明の手順を記憶するデータ記憶手段であり、一例として、図6と同様のデータを記憶する。
生体情報記憶領域1023は、暗号化された各ユーザの生体情報を、クライアントIDと関連付けて記憶するデータ記憶手段である。つまり、生体情報記憶領域1023は、クライアント装置901で取得された生体情報(認証対象データ)に対する認証演算に先立ち、認証演算に使用するユーザの生体情報を暗号化された状態で予め記憶している。記憶されている生体情報は暗号登録認証データの例であり、また、生体情報記憶領域1023は、登録認証データ記憶部の例である。
図12は生体情報記憶領域1023が記憶するデータの一例を表す。
【0042】
ここで、サーバ装置1001における処理の流れを概説しておく。
サーバ装置1001では、通信部1011がクライアント装置901により暗号化された認証演算の対象となる生体情報(認証対象データ)を入力し、暗号部1012が通信部1011により入力された暗号化された生体情報を復号し、復号後の生体情報を耐タンパ領域内に配置された演算部1014に対して出力する。
演算部1014は、復号後の生体情報の内容を耐タンパ領域外に配置された演算部1021に秘匿しながら演算部1021と通信を行って演算部1021と協働してゼロ知識証明プロトコルに基づいてクライアント装置901から受信した生体情報に対する認証演算を行い、認証演算結果を取得する。
前述したように、生体情報記憶領域1023は、認証演算に先立ち、認証演算に使用する生体情報を暗号化された状態で予め記憶しており、通信部1011は、生体情報記憶領域1023に記憶されている生体情報の暗号化に用いられた暗号鍵を、クライアント装置901から生体情報とともに入力し、演算部1014及び演算部1021は、ゼロ知識証明プロトコルに基づき、通信部1011により入力された暗号鍵と生体情報と、生体情報記憶領域1023に記憶されている生体情報を用いて、前記暗号鍵の正当性と、クライアント装置901から入力した生体情報の正当性を確認して、認証演算を行う。
また、演算に際しては、演算部1014は、演算部1021以外とは通信を行うことなく(つまり、サーバ装置1001の外部とは通信することなく)、演算部1021と協働して認証演算を行い、認証演算結果を取得する。
そして、暗号部1012は、演算部1014から認証演算結果を入力し、入力した認証演算結果を暗号化し、通信部1011は暗号化された認証演算結果をクライアント装置901に対して送信する。
【0043】
図13は、本実施の形態におけるクライアント登録処理を説明するためのフローチャートである。
図14は、本実施の形態におけるクライアント認証処理を説明するためのフローチャートである。
【0044】
まずクライアント登録処理における動作について、図13のフローチャートを参照しながら説明する。
最初にクライアント装置901の暗号部912が暗号鍵ktを生成し、鍵記憶領域913から読み出した、サーバ装置IDに対応する耐タンパ領域公開鍵で暗号化する。
暗号化されたものを、通信部911を用いて耐タンパ領域1010に送信する。耐タンパ領域1010の暗号部1012は、通信部1011が受信した内容を、鍵記憶領域1013が記憶する秘密鍵を用いて復号し、暗号鍵ktを得る。
以上の処理により、クライアント装置901と耐タンパ領域1010との間で暗号鍵ktが共有されたことになる(ステップS1301)。
その後、クライアント装置901の暗号部912が暗号鍵kを生成し、生成された暗号鍵kを鍵記憶領域913に、サーバ装置IDと関連付けて格納する(ステップS1302)。
【0045】
次に、生体情報読取部914がクライアントに対応する生体情報(指紋、静脈、虹彩、網膜、顔、筆跡、声、DNAなどの情報。以降、登録時生体情報と記述する)bを読み取る(ステップS1303)。登録時生体情報bは画像・音声などのデータそのものであってもよいし、特徴点抽出などの処理が行われた後のものであってもよい。
暗号部912は、クライアントID、登録時生体情報bおよび暗号鍵kを、暗号鍵ktを用いて暗号化する。暗号化されたものを、通信部911が耐タンパ領域1010に送信する(ステップS1304)。送られたものを耐タンパ領域1010の通信部1011が受信し、暗号部1012が暗号鍵ktを用いて復号し、クライアントID、登録時生体情報bおよび暗号鍵kを得る(ステップS1305)。
その後、耐タンパ領域1010の演算部1014が登録時生体情報bを特定の形式に従った情報fに変換する(ステップS1306)。fは登録時生体情報bの内容全てと、冗長な情報を含む。冗長な情報として、例えばbに関するパリティ、bのハッシュ値、時刻情報、もしくは決まった文字列などが利用できる。次に、暗号部1012が、本システムであらかじめ決められた暗号化アルゴリズムEと受信した暗号鍵kを用いて、情報fを暗号化してeを得る(e=E(k,f))(ステップS1307)。
耐タンパ領域1010はクライアントIDおよび暗号化生体情報eをサーバ装置1001の耐タンパ領域外に送信する(ステップS1308、S1309)。最後に、サーバ装置1001はクライアントIDと暗号化生体情報eを生体情報記憶領域1023に格納する(ステップS1310)。
【0046】
次にクライアント認証処理における動作を説明する前に、クライアント認証処理の原理を説明する。
クライアント認証時、クライアントが保持する情報は暗号鍵k、および認証時に読み取られる生体情報(以降、認証時生体情報と記述する)b’であり、サーバが保持する情報は暗号化生体情報eである。
仮に暗号鍵kと認証時生体情報b’をサーバに開示するとすれば、サーバはF(D(k,e))=1を確認することで暗号鍵kの正当性を、M(F(D(k,e)),b’)=1を確認することで認証時生体情報b’の正当性(登録時生体情報bとの類似度が十分高いこと)を確認でき、クライアント認証を完了できる。
ここで、Dは暗号化アルゴリズムEに対応する復号アルゴリズム、Fは入力が特定の形式に従っている場合に限り1を出力する関数、Fは特定の形式に従った(冗長な情報を含む)生体情報を入力として生体情報だけを出力する関数、Mは2つの生体情報を入力としてこれらが同一人物からのものだと判断される場合に限り1を出力する生体情報照合関数である。
しかし、kやb’の開示は生体情報の開示を意味するため、これらを開示することなく暗号鍵・生体情報の正当性を示す必要がある。
以上の目的を達成するために、ゼロ知識証明プロトコルを実行する。ゼロ知識証明プロトコルを利用することで、クライアントの秘密情報k,b’を秘密にしたままで、前述の関数値が1であることをサーバに確信させることが可能となる。
【0047】
クライアント認証処理における動作の詳細について、図14のフローチャートを参照しながら説明する。
最初にクライアント装置901の暗号部912が暗号鍵kt(クライアント登録時に用いたものと同じでなくてもよい)を生成し、鍵記憶領域913から読み出した、サーバ装置IDに対応する耐タンパ領域公開鍵で暗号化する。暗号化されたものを、通信部911を用いて耐タンパ領域1010に送信する。耐タンパ領域1010の暗号部1012は、通信部1011が受信した内容を、鍵記憶領域1013が記憶する秘密鍵を用いて復号し、暗号鍵ktを得る。以上の処理により、クライアント装置901と耐タンパ領域1010との間で暗号鍵ktが共有されたことになる(ステップS1401)。
クライアント装置901は、鍵記憶領域913から、サーバ装置IDに対応する暗号鍵kを読み出す(ステップS1402)。
その後、クライアント装置901の生体情報読取部914がクライアントに対応する生体情報b’を読み取る(ステップS1403)。
暗号部912は、クライアントID、認証時生体情報b’および暗号鍵kを、暗号鍵ktを用いて暗号化する。暗号化されたものを、通信部911が耐タンパ領域1010に送信する(ステップS1404)。
送られたものを耐タンパ領域1010の通信部1011が受信し、暗号部1012が暗号鍵ktを用いて復号し、クライアントID、認証時生体情報b’および暗号鍵kを得る(ステップS1405)(データ入力ステップ)。
【0048】
次に、耐タンパ領域1010はクライアントIDをサーバ装置1001の耐タンパ領域外に送信する(ステップS1406、S1407)。
サーバ装置1001は、受信したクライアントIDに対応する暗号化生体情報eを、生体情報記憶領域1023から取得する(ステップS1408)。
【0049】
その後、耐タンパ領域1010の演算部1014、サーバ装置1001の演算部1021を用いて、計算手順記憶領域1015、1022に記憶されている計算手順に従って相互に通信を行い、ゼロ知識証明プロトコルを実行することで、クライアントの秘密情報k,b’を秘密にしたまま、サーバは証明対象である「F(D(k,e))=1であるか」と「M(F(D(k,e)),b’)=1であるか」を判定する(ステップS1409)(演算ステップ)。なお、D,F,F,Mはそれぞれ前述した関数である。この判定には、既存のマルチパーティプロトコル技術が利用できる。
つまり、既存のマルチパーティプロトコル技術におけるクライアント装置の役割を耐タンパ領域内の演算部1014が担い、サーバ装置の役割を耐タンパ領域外の演算部1021が担うことにより、サーバ装置1001の内部のみでマルチパーティプロトコル演算が実行できる。
【0050】
ゼロ知識証明プロトコルの終了後、サーバ装置1001は証明結果を認証結果として、耐タンパ領域1010に送信する(ステップS1410、S1411)。
その後、耐タンパ領域1010は暗号部1012を用いて認証結果を暗号鍵ktで暗号化し、通信部1011を用いて、クライアント装置901に送信する(ステップS1412)。
クライアント装置901の通信部911が受信した内容を、暗号部912が暗号鍵ktで復号し、認証結果を得ることでクライアント認証処理が終了する(ステップS1413)。
【0051】
以上のように、ゼロ知識証明プロトコルを用いることによって、ユーザの生体情報をサーバに対して秘匿したままの生体認証が実現できるが、ゼロ知識証明プロトコルをサーバ装置1001の内部だけで実行することで、ネットワーク101を介したゼロ知識証明プロトコルが実行される場合に比べ、通信オーバヘッドや、クライアント装置901の演算負荷削減による高速化を達成することができる。
前述のように、従来は、クライアント装置とサーバ装置との間で通信を行いながらゼロ知識証明演算を実行していたので、クライアント装置とサーバ装置との間で多くの通信量や通信回数が必要であり、計算の完了までに時間がかかっていた。
本実施の形態によれば、従来のクライアント装置の役割をサーバ装置1001内の耐タンパ領域1010に配置された演算部1014に担わせ、従来のサーバ装置の役割をサーバ装置1001内の耐タンパ領域1010外に配置された演算部1021に担わせているので、ゼロ知識証明演算自体は、サーバ装置1001内の演算部1014と演算部1021との間の通信を通じて実行される。このため、本実施の形態のゼロ知識証明演算におけるクライアント装置901とサーバ装置1001との間の通信は、クライアント装置901からサーバ装置1001への生体情報及び鍵の送信と、サーバ装置1001からクライアント装置901への認証演算結果の送信のみである。
【0052】
また、ユーザの生体情報およびクライアント装置901が保持する秘密情報は、耐タンパ領域1010の耐タンパ性によって守られる。
【0053】
なお、本実施の形態では、クライアント登録処理の際、耐タンパ領域が仲介することによってサーバ装置の生体情報記憶領域に暗号化生体情報を登録しているが、クライアント装置が(耐タンパ領域を介さずに)直接サーバ装置と通信を行い、暗号化生体情報を登録することも可能である。
この場合、サーバ装置は耐タンパ領域外に通信部、暗号部、鍵記憶領域を持つことになる。また、生体情報の形式変換、暗号化などは、クライアント装置が行うことになる。一方、クライアント登録処理は、フレキシブルディスクなどを介してオフラインで実行することも可能である。
【0054】
また、本実施の形態では、耐タンパ領域内外での通信における暗号化について明示していないが、必要に応じて暗号化を行うことが可能である。この場合、サーバ装置は耐タンパ領域外に暗号部、鍵記憶領域を持つことになる。
【0055】
また、本実施の形態では、クライアント装置と耐タンパ領域との通信におけるメッセージ認証について明示していないが、必要に応じて追加することが可能である。
【0056】
また、本実施の形態では、クライアント装置の鍵記憶領域がサーバ装置の公開鍵を記憶しているが、かわりに公開鍵証明書を記憶していても良い。また、公開鍵を記憶せずに、必要な時にサーバ装置の公開鍵証明書を取得し、その正当性を確認してから公開鍵を利用するようにしても良い。
【0057】
また、本実施の形態では、サーバ装置の耐タンパ領域が暗号部と演算部を持っているが、これらは一部機能を共有していても良い。また、同一であっても良い。
【0058】
また、本実施の形態では、サーバ装置の耐タンパ領域が通信部を持っているが、かわりに、サーバ装置の耐タンパ領域外に通信部を持たせることも可能である。
この場合、クライアント装置−耐タンパ領域間の情報のやり取りは、耐タンパ領域外にある通信部を介して行うことになる。
【0059】
また、本実施の形態では、サーバ装置の耐タンパ領域、耐タンパ領域外にそれぞれ計算手順記憶領域が存在するが、一方だけに計算手順記憶領域が存在するようにすることも可能である。
この場合、ステップS1409のゼロ知識証明プロトコルにおいて、計算手順記憶領域を持つ方が、持たない方に指示を出しながらプロトコルが実行されることになる。
【0060】
以上のように、本実施の形態では、マルチパーティプロトコルを利用して、ユーザの情報をサーバに対して秘匿したままユーザ認証を行うシステムにおいて、サーバ装置の中に、全てのユーザが信用する耐タンパ領域を持たせることで、認証の処理時間を短縮する方式について説明した。
【0061】
また、本実施の形態では、ユーザ認証として生体認証を利用する方式について説明した。
【0062】
最後に、実施の形態1及び2に係る計算依頼装置201、計算実行装置301、クライアント装置901及びサーバ装置1001のハードウェア構成例について説明する。
図15は、本実施の形態及び以下に述べる実施の形態に示す計算依頼装置201、計算実行装置301、クライアント装置901及びサーバ装置1001のハードウェア資源の一例を示す図である。なお、図15の構成は、あくまでも計算依頼装置201、計算実行装置301、クライアント装置901及びサーバ装置1001のハードウェア構成の一例を示すものであり、計算依頼装置201、計算実行装置301、クライアント装置901及びサーバ装置1001のハードウェア構成は図15に記載の構成に限らず、他の構成であってもよい。
【0063】
図15において、計算依頼装置201、計算実行装置301、クライアント装置901及びサーバ装置1001は、プログラムを実行するCPU1511(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。CPU1511は、バス1512を介して、例えば、ROM(Read Only Memory)1513、RAM(Random Access Memory)1514、通信ボード1515、表示装置1501、キーボード1502、マウス1503、磁気ディスク装置1520と接続され、これらのハードウェアデバイスを制御する。更に、CPU1511は、FDD1504(Flexible Disk Drive)、コンパクトディスク装置1505(CDD)、プリンタ装置1506、スキャナ装置1507と接続していてもよい。また、磁気ディスク装置1520の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。
RAM1514は、揮発性メモリの一例である。ROM1513、FDD1504、CDD1505、磁気ディスク装置1520の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。
通信ボード1515、キーボード1502、スキャナ装置1507、FDD1504などは、入力部、入力装置の一例である。
また、通信ボード1515、表示装置1501、プリンタ装置1506などは、出力部、出力装置の一例である。
【0064】
通信ボード1515は、図1に示すように、ネットワークに接続されている。例えば、通信ボード1515は、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)などに接続されていても構わない。
磁気ディスク装置1520には、オペレーティングシステム1521(OS)、ウィンドウシステム1522、プログラム群1523、ファイル群1524が記憶されている。プログラム群1523のプログラムは、CPU1511、オペレーティングシステム1521、ウィンドウシステム1522により実行される。
【0065】
上記プログラム群1523には、本実施の形態1及び2の説明において「〜部」、「〜手段」として説明している機能を実行するプログラムが記憶されている。プログラムは、CPU1511により読み出され実行される。
ファイル群1524には、実施の形態1及び2の説明において、「〜の判断」、「〜の計算」、「〜の演算」、「〜の比較」、「〜の更新」、「〜の設定」、「〜の登録」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリになどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU1511によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1及び2で説明するフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM1514のメモリ、FDD1504のフレキシブルディスク、CDD1505のコンパクトディスク、磁気ディスク装置1520の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。また、データや信号は、バス1512や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【0066】
また、本実施の形態1及び2の説明において「〜部」、「〜手段」として説明しているものは、「〜回路」、「〜装置」、「〜機器」、であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」、「〜手段」として説明しているものは、ROM1513に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU1511により読み出され、CPU1511により実行される。すなわち、プログラムは、本実施の形態1及び2に示す「〜部」、「〜手段」としてコンピュータを機能させるものである。あるいは、本実施の形態1及び2に示す「〜部」、「〜手段」の手順や方法をコンピュータに実行させるものである。
【0067】
このように、本実施の形態1及び2に示す計算依頼装置201、計算実行装置301、クライアント装置901及びサーバ装置1001は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」、「〜手段」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【図面の簡単な説明】
【0068】
【図1】実施の形態1に係る依頼計算システムの構成例を示す図。
【図2】実施の形態1に係る計算依頼装置の構成例を示す図。
【図3】実施の形態1に係る計算実行装置の構成例を示す図。
【図4】実施の形態1に係る計算依頼装置の鍵記憶領域の記憶内容の例を示す図。
【図5】実施の形態1に係る計算実行装置の鍵記憶領域の記憶内容の例を示す図。
【図6】実施の形態1に係る計算実行装置の計算手順記憶領域の記憶内容の例を示す図。
【図7】実施の形態1に係る依頼計算システムにおける処理例を示すフローチャート図。
【図8】実施の形態2に係る生体認証システムの構成例を示す図。
【図9】実施の形態2に係るクライアント装置の構成例を示す図。
【図10】実施の形態2に係るサーバ装置の構成例を示す図。
【図11】実施の形態2に係るクライアント装置の鍵記憶領域の記憶内容の例を示す図。
【図12】実施の形態2に係るサーバ装置の生体情報記憶領域の記憶内容の例を示す図。
【図13】実施の形態2に係る生体認証システムにおける処理例を示すフローチャート図。
【図14】実施の形態2に係る生体認証システムにおける処理例を示すフローチャート図。
【図15】実施の形態1及び2に係る計算依頼装置201、計算実行装置301、クライアント装置901及びサーバ装置1001のハードウェア構成例を示す図。
【符号の説明】
【0069】
101 ネットワーク、201 計算依頼装置、211 通信部、212 暗号部、213 鍵記憶領域、301 計算実行装置、310 耐タンパ領域、311 通信部、312 暗号部、313 鍵記憶領域、314 演算部、315 計算手順記憶領域、321 演算部、322 計算手順記憶領域、901 クライアント装置、911 通信部、912 暗号部、913 鍵記憶領域、914 生体情報読取部、1001 サーバ装置、1011 通信部、1012 暗号部、1013 鍵記憶領域、1014 演算部、1015 計算手順記憶領域、1021 演算部、1022 計算手順記憶領域、1023 生体情報記憶領域。

【特許請求の範囲】
【請求項1】
入力データに対する演算を行う情報処理装置であって、
入力データを入力するデータ入力部と、
外部から内部の情報を読み取られることに対する耐性を持つ耐タンパ領域内に配置された耐タンパ領域演算部と、
前記情報処理装置内の前記耐タンパ領域外に配置された非耐タンパ領域演算部とを有し、
前記耐タンパ領域演算部は、
前記データ入力部により入力された入力データの内容を前記非耐タンパ領域演算部に秘匿しながら前記非耐タンパ領域演算部と通信を行って前記非耐タンパ領域演算部と協働して前記入力データに対する演算を行い、前記入力データに対する演算結果を取得することを特徴とする情報処理装置。
【請求項2】
前記耐タンパ領域演算部は、
前記入力データに対する演算結果を前記非耐タンパ領域演算部に秘匿して取得することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記耐タンパ領域演算部は、
前記非耐タンパ領域演算部以外とは通信を行うことなく、前記非耐タンパ領域演算部と協働して前記入力データに対する演算を行い、前記入力データに対する演算結果を取得することを特徴とする請求項1に記載の情報処理装置。
【請求項4】
前記耐タンパ領域演算部及び前記非耐タンパ領域演算部は、
マルチパーティプロトコルに基づいて前記入力データに対する演算を行うことを特徴とする請求項1に記載の情報処理装置。
【請求項5】
前記情報処理装置は、
前記入力データに対する演算を依頼する計算依頼装置とネットワークを介して接続されており、
前記データ入力部は、
前記計算依頼装置により暗号化された入力データを入力し、
前記耐タンパ領域演算部及び前記非耐タンパ領域演算部は、
依頼計算プロトコルに基づいて復号後の入力データに対する演算を行い、
前記情報処理装置は、更に、
前記耐タンパ領域内に配置され、前記データ入力部により入力された暗号化された入力データを復号し、復号後の入力データを前記耐タンパ領域演算部に対して出力し、前記耐タンパ領域演算部から復号後の入力データに対する演算結果を入力し、入力した演算結果を暗号化する耐タンパ領域暗号化部と、
前記耐タンパ領域暗号化部により暗号化された演算結果を前記計算依頼装置に対して送信するデータ出力部とを有することを特徴とする請求項1に記載の情報処理装置。
【請求項6】
前記情報処理装置は、
認証演算を依頼する認証依頼装置とネットワークを介して接続されており、
前記データ入力部は、
前記入力データとして、前記認証依頼装置から認証演算の対象となる認証対象データを入力し、
前記耐タンパ領域演算部及び前記非耐タンパ領域演算部は、
ゼロ知識証明プロトコルに基づいて認証対象データに対する認証演算を行うことを特徴とする請求項1に記載の情報処理装置。
【請求項7】
前記情報処理装置は、更に、
前記認証対象データに対する認証演算に先立ち、前記認証演算に使用するデータを暗号化された状態で暗号登録認証データとして予め記憶している登録認証データ記憶部を有し、
前記データ入力部は、
前記入力データとして、前記認証対象データに加えて、前記暗号登録認証データの暗号化に用いられた暗号鍵を前記認証依頼装置から入力し、
前記耐タンパ領域演算部及び前記非耐タンパ領域演算部は、
ゼロ知識証明プロトコルに基づき、前記データ入力部により入力された暗号鍵と認証対象データと、前記登録認証データ記憶部に記憶されている暗号登録認証データを用いて、前記暗号鍵の正当性と、前記認証対象データの正当性を確認して、認証演算を行うことを特徴とする請求項6に記載の情報処理装置。
【請求項8】
前記データ入力部は、
前記入力データとして、暗号化された前記暗号鍵と、暗号化された前記認証対象データを入力し、
前記情報処理装置は、更に、
前記耐タンパ領域内に配置され、前記データ入力部により入力された暗号化された前記暗号鍵と暗号化された前記認証対象データを復号し、復号後の暗号鍵と認証対象データを前記耐タンパ領域演算部に対して出力する耐タンパ領域暗号化部と、
認証演算結果を前記認証依頼装置に対して送信するデータ出力部とを有することを特徴とする請求項7に記載の情報処理装置。
【請求項9】
前記登録認証データ記憶部は、
前記暗号登録認証データとして、人の生体情報を記憶し、
前記データ入力部は、
前記認証対象データとして、前記認証依頼装置にて取得された生体情報を入力し、
前記耐タンパ領域演算部及び前記非耐タンパ領域演算部は、
ゼロ知識証明プロトコルに基づき、前記データ入力部により入力された暗号鍵と生体情報と、前記登録認証データ記憶部に記憶されている生体情報とを用いて、認証演算を行うことを特徴とする請求項7に記載の情報処理装置。
【請求項10】
外部から内部の情報を読み取られることに対する耐性を持つ耐タンパ領域を有するコンピュータを用いる演算方法であって、
コンピュータが、入力データを入力するデータ入力ステップと、
コンピュータが、前記耐タンパ領域内に配置された耐タンパ領域演算部と、コンピュータ内の前記耐タンパ領域外に配置された非耐タンパ領域演算部とを用いて前記入力データに対する演算を行う演算ステップとを有し、
前記演算ステップでは、
前記データ入力ステップにより入力された入力データの内容を前記非耐タンパ領域演算部に秘匿しながら前記耐タンパ領域演算部と前記非耐タンパ領域演算部とが通信を行って前記耐タンパ領域演算部と前記非耐タンパ領域演算部とが協働して前記入力データに対する演算を行い、前記入力データに対する演算結果を取得することを特徴とする演算方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2008−177966(P2008−177966A)
【公開日】平成20年7月31日(2008.7.31)
【国際特許分類】
【出願番号】特願2007−10924(P2007−10924)
【出願日】平成19年1月22日(2007.1.22)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】