説明

認証システム及び遠隔分散保存システム

端末装置1は入力されたパスワードに基づいて所定計算によりマスター鍵生成器36で生成した値MKから認証結果判断部37にて値V1,V2を計算してサーバ2に値V1を送信し、前記サーバ2は安全な通信手段により予め共有し記録しておいた前記端末装置1のサーバ登録用のパスワードに基づいて所定計算によりマスター鍵生成器45で生成した値MKから認証結果判断部46にて値V1,V2を計算して前記端末装置1に値V2を送信し、これら値が所定計算により算出できるか否かにより相互の認証を行う認証システム。

【発明の詳細な説明】
【技術分野】
本発明は、認証に関する情報の漏洩に強い認証システムとこの認証システムを用いて安全にデータを保存することができる遠隔分散保存システムに関する。
本願は、2003年10月28日に出願された特願2003−367527号に対し優先権を主張し、その内容をここに援用する。
【背景技術】
従来からユーザの端末装置とサーバとの間において認証を行う方法として、ユーザIDとユーザのみが知っているパスワードとを端末装置から入力し、サーバ側に蓄えられている情報と一致すれば、正当なユーザであることを認証する方法が知られている。
しかし、この方法は、端末装置とサーバ間の通信経路中において、不正にこれらの情報が盗まれてしまうと、簡単に不正利用を許してしまうため、SSL(文献1)、TLS(文献2)、SSH(文献3)等の暗号化技術を用いて、情報の送受信を行うのが一般的である。これは、パスワードと秘密の値と公開されている値とを使用して認証を行うものである。
(文献1)A.Frier,P.Karlton,and P.Kocher.The SSL 3.0 Protocol.Netscape Communications Corp.,1996,http://wp.netscape.com/eng/ss13/
(文献2)IETF(Internet Engineering Task Force).Transport Layer security(tls)Charter.http://www.ietf.org/html.charters/tls−charter.html
(文献3)IETF(Internet Engineering Task Force).Secure Shell(secsh)Charter.http://www.ietf.org/html.charters/secsh−charter.html
しかしながら、非特許文献1〜3に示す方法は、ユーザの端末装置側からパスワードで暗号化された情報あるいはサーバ側からパスワード認証データが漏れた場合は、オフラインの解析作業によってパスワードを求めることができてしまうという問題がある。サーバに対してオンラインでパスワード入力を繰り返し行う方法は、パスワードを間違えた回数に応じてアクセスを拒否するなどの対策を講じることが可能であるが、オフラインの解析作業は、防止策を講じることができないという問題もある。また、パスワードが漏洩してしまった場合、このパスワードでログインできるシステム内に保存されているデータも漏洩してしまうという問題もある。
【発明の開示】
本発明の目的は、情報の漏洩に強く、安全に暗号鍵の交換を行うことができる認証システムを提供することである。
本発明の目的は、本発明による認証システムを用いて安全にデータを保存することができる遠隔分散保存システムを提供することである。
本発明の要旨は、端末装置とサーバ間において相互に認証を行う認証システムであって、前記端末装置は、ユーザが予め決定しておいたパスワードに基づいて、サーバ登録用のパスワード認証データHとユーザ保存用の認証情報P’を求めるデータ伸長手段と、前記データ伸長手段によって求めた認証情報P’を予め記憶しておく記憶手段と、前記記憶手段から読み出した認証情報P’と認証時に入力されたパスワードを入力として所定の計算式により値Pを求める結合手段と、前記値Pと内部において発生させた乱数を入力として所定の計算式により値Y1を求め、前記サーバへ送信するマスク演算手段と、前記値Pと内部において発生させた乱数と前記サーバから受信した値Y2を入力として所定の計算式により値MKを求めるマスター鍵生成手段と、前記値MKを入力として所定の計算式により値V1を求め、サーバへ送信するとともに、前記サーバから受信した値V2と前記値MKを入力として所定の計算式による値V2と比較照合し、一致した場合にサーバを認証する認証結果判断手段とを備え、前記サーバは、前記データ伸長手段によって求めたパスワード認証データHを予め記憶しておく記憶手段と、前記記憶手段から読み出したパスワード認証データHと内部において発生させた乱数を入力として所定の計算式により値Y2を求め、前記端末装置へ送信するマスク演算手段と、前記パスワード認証データHと内部において発生させた乱数と前記端末装置から受信した値Y1を入力として所定の計算式により値MKを求めるマスター鍵生成手段と、前記値MKを入力として所定の計算式により値V2を求め、端末装置へ送信するとともに、前記端末装置から受信した値V1と前記値MKを入力として所定の計算式による値V1と比較照合し、一致した場合に端末装置を認証する認証結果判断手段とを備える。
本発明の要旨は、端末装置とサーバ間において相互に認証を行う認証システムにおける端末装置上で動作する認証プログラムであって、ユーザが予め決定しておいたパスワードに基づいて、サーバ登録用のパスワード認証データHとユーザ保存用の認証情報P’を求めるデータ伸長処理と、前記データ伸長処理によって求めた認証情報P’を予め記憶しておく記憶処理と、前記記憶処理により記憶しておいた認証情報P’と認証時に入力されたパスワードを入力として所定の計算式により値Pを求める結合処理と、前記値Pと内部において発生させた乱数を入力として所定の計算式により値Y1を求め、前記サーバへ送信するマスク演算処理と、前記値Pと内部において発生させた乱数と前記サーバから受信した値Y2を入力として所定の計算式により値MKを求めるマスター鍵生成処理と、前記値MKを入力として所定の計算式により値V1を求め、サーバへ送信するとともに、前記サーバから受信した値V2と前記値MKを入力として所定の計算式による値V2と比較照合し、一致した場合にサーバを認証する認証結果判断処理とをコンピュータに行わせる。
本発明の要旨は、端末装置とサーバ間において相互に認証を行う認証システムにおけるサーバ上で動作する認証プログラムであって、パスワード認証データHを予め記憶しておく記憶処理と、前記記憶処理により記憶しておいたパスワード認証データHと内部において発生させた乱数を入力として所定の計算式により値Y2を求め、前記端末装置へ送信するマスク演算処理と、前記パスワード認証データHと内部において発生させた乱数と前記端末装置から受信した値Y1を入力として所定の計算式により値MKを求めるマスター鍵生成処理と、前記値MKを入力として所定の計算式により値V2を求め、端末装置へ送信するとともに、前記端末装置から受信した値V1と前記値MKを入力として所定の計算式による値V1と比較照合し、一致した場合に端末装置を認証する認証結果判断処理とをコンピュータに行わせる。
本発明の要旨は、端末装置とサーバ間において相互に認証を行う認証システムであって、前記端末装置は、ユーザが予め決定しておいたパスワードに基づいて、サーバ登録用のパスワード認証データHとユーザ保存用の認証情報P’を求めるデータ伸長手段と、前記データ伸長手段によって求めた認証情報P’とRSA鍵生成手段によって求めたRSA公開鍵(N,e)を予め記憶しておく記憶手段と、前記記憶手段から読み出した認証情報P’と認証時に入力されたパスワードを入力として所定の計算式により値Wを求める結合手段と、前記値Wと前記記憶手段から読み出したRSA公開鍵(N,e)と内部において発生させた乱数Tを入力として所定の計算式により値Zを求め、前記サーバへ送信するマスク演算手段と、前記サーバから受信した値V2と前記乱数Tを入力として所定の計算式による値V2と比較照合し、一致した場合にサーバを認証する認証結果判断手段と、前記乱数Tを入力として所定の計算式により値V1を求め、前記サーバへ送信する検証子生成手段とを備え、前記サーバは、RSA公開鍵(N,e)とRSA秘密鍵(N,d)を求めるRSA鍵生成手段と、前記RSA鍵生成手段によって求めたRSA秘密鍵(N,d)と前記データ伸長手段によって求めたパスワード認証データHを予め記憶しておく記憶手段と、前記記憶手段から読み出したRSA秘密鍵(N,d)とパスワード認証データHと前記端末装置から受信した値Zを入力として所定の計算式により値Tを求めるマスター鍵生成手段と、前記値Tを入力として所定の計算式により値V2を求め、前記端末装置へ送信する検証子生成手段と、前記端末装置から受信した値V1と前記値Tを入力として所定の計算式による値V1と比較照合し、一致した場合に端末装置を認証する認証結果判断手段とを備える。
本発明の要旨は、端末装置とサーバ間において相互に認証を行う認証システムにおける端末装置上で動作する認証プログラムであって、ユーザが予め決定しておいたパスワードに基づいて、サーバ登録用のパスワード認証データHとユーザ保存用の認証情報P’を求めるデータ伸長処理と、前記データ伸長処理によって求めた認証情報P’とRSA鍵生成処理によって求めたRSA公開鍵(N,e)を予め記憶しておく記憶処理と、前記記憶処理により記憶しておいた認証情報P’と認証時に入力されたパスワードを入力として所定の計算式により値Wを求める結合処理と、前記値Wと前記記憶処理により記憶しておいたRSA公開鍵(N,e)と内部において発生させた乱数Tを入力として所定の計算式により値Zを求め、前記サーバへ送信するマスク演算処理と、前記サーバから受信した値V2と前記乱数Tを入力として所定の計算式による値V2と比較照合し、一致した場合にサーバを認証する認証結果判断処理と、前記乱数Tを入力として所定の計算式により値V1を求め、前記サーバへ送信する検証子生成処理とをコンピュータに行わせる。
本発明の要旨は、端末装置とサーバ間において相互に認証を行う認証システムにおけるサーバ上で動作する認証プログラムであって、RSA公開鍵(N,e)とRSA秘密鍵(N,d)を求めるRSA鍵生成処理と、前記RSA鍵生成処理によって求めたRSA秘密鍵(N,d)とパスワード認証データHを予め記憶しておく記憶処理と、前記記憶処理により記憶しておいたRSA秘密鍵(N,d)とパスワード認証データHと前記端末装置から受信した値Zを入力として所定の計算式により値Tを求めるマスター鍵生成処理と、前記値Tを入力として所定の計算式により値V2を求め、前記端末装置へ送信する検証子生成処理と、前記端末装置から受信した値V1と前記値Tを入力として所定の計算式による値V1と比較照合し、一致した場合に端末装置を認証する認証結果判断処理とをコンピュータに行わせる。
本発明の要旨は、端末装置と複数のサーバ間において相互に認証を行い、前記端末装置内の保存対象のデータを前記サーバ内に分散して保存する遠隔分散保存システムであって、前記端末装置は、ユーザが予め決定しておいたパスワードに基づいて、サーバ登録用のパスワード認証データHとユーザ保存用の認証情報P’を求めるデータ伸長手段と、前記データ伸長手段によって求めた認証情報P’を予め記憶しておく記憶手段と、前記記憶手段から読み出した認証情報P’と認証時に入力されたパスワードを入力として所定の計算式により値Pを求める結合手段と、前記値Pと内部において発生させた乱数を入力として所定の計算式により値Y1を求め、前記サーバへ送信するマスク演算手段と、前記値Pと内部において発生させた乱数と前記サーバから受信した値Y2を入力として所定の計算式により値MKを求めるマスター鍵生成手段と、前記値MKを入力として所定の計算式により値V1を求め、サーバへ送信するとともに、前記サーバから受信した値V2と値V1と比較照合し、一致した場合にサーバを認証する認証結果判断手段と、サーバの認証が行われた場合に、セッション鍵SKをサーバの数だけ生成するセッション鍵生成手段と、前記保存対象のデータを分割して、認証したサーバの数と同数の分割データを得るデータ分割手段と、前記分割データのそれぞれと保存対象のデータを識別する識別情報とを、保存先のサーバと共有した前記セッション鍵SKを用いて暗号化して、各サーバに対して送信するデータ保存手段と、分割データが保存された各サーバから分割データを受信し、前記保存対象のデータを復元するデータ復元手段とを備え、前記サーバは、前記データ伸長手段によって求めたパスワード認証データHを予め記憶しておく記憶手段と、前記記憶手段から読み出したパスワード認証データHと内部において発生させた乱数を入力として所定の計算式により値Y2を求め、前記端末装置へ送信するマスク演算手段と、前記パスワード認証データHと内部において発生させた乱数と前記端末装置から受信した値Y1を入力として所定の計算式により値MKを求めるマスター鍵生成手段と、前記値MKを入力として所定の計算式により値V2を求め、端末装置へ送信するとともに、前記端末装置から受信した値V1と値V2と比較照合し、一致した場合に端末装置を認証する認証結果判断手段と、端末装置の認証が行われた場合に、セッション鍵を生成するセッション鍵生成手段と、端末装置から受信した分割データを受信するデータ受信手段と、前記分割データを記憶するデータ記憶手段と、前記データ記憶手段に保存されている分割データを読み出して端末装置へ送信するデータ送信手段とを備えたことを特徴とする遠隔分散保存システム。
本発明の要旨は、端末装置と複数のサーバ間において相互に認証を行い、前記端末装置内の保存対象のデータを前記サーバ内に分散して保存する遠隔分散保存システムにおける端末装置上で動作する遠隔分散保存プログラムであって、ユーザが予め決定しておいたパスワードに基づいて、サーバ登録用のパスワード認証データHとユーザ保存用の認証情報P’を求めるデータ伸長処理と、前記データ伸長処理によって求めた認証情報P’を予め記憶しておく記憶処理と、前記記憶処理から読み出した認証情報P’と認証時に入力されたパスワードを入力として所定の計算式により値Pを求める結合処理と、前記値Pと内部において発生させた乱数を入力として所定の計算式により値Y1を求め、前記サーバへ送信するマスク演算処理と、前記値Pと内部において発生させた乱数と前記サーバから受信した値Y2を入力として所定の計算式により値MKを求めるマスター鍵生成処理と、前記値MKを入力として所定の計算式により値V1を求め、サーバへ送信するとともに、前記サーバから受信した値V2と値V1と比較照合し、一致した場合にサーバを認証する認証結果判断処理と、サーバの認証が行われた場合に、セッション鍵SKをサーバの数だけ生成するセッション鍵生成処理と、前記保存対象のデータを分割して、認証したサーバの数と同数の分割データを得るデータ分割処理と、前記分割データのそれぞれと保存対象のデータを識別する識別情報とを、保存先のサーバと共有した前記セッション鍵SKを用いて暗号化して、各サーバに対して送信するデータ保存処理と、分割データが保存された各サーバから分割データを受信し、前記保存対象のデータを復元するデータ復元処理とをコンピュータに行わせることを特徴とする遠隔分散保存プログラム
本発明の要旨は、端末装置と複数のサーバ間において相互に認証を行い、前記端末装置内の保存対象のデータを前記サーバ内に分散して保存する遠隔分散保存システムにおけるサーバ上で動作する遠隔分散保存プログラムであって、データ伸長処理によって求めたパスワード認証データHを予め記憶しておく記憶処理と、前記記憶処理から読み出したパスワード認証データHと内部において発生させた乱数を入力として所定の計算式により値Y2を求め、前記端末装置へ送信するマスク演算処理と、前記パスワード認証データHと内部において発生させた乱数と前記端末装置から受信した値Y1を入力として所定の計算式により値MKを求めるマスター鍵生成処理と、前記値MKを入力として所定の計算式により値V2を求め、端末装置へ送信するとともに、前記端末装置から受信した値V1と値V2と比較照合し、一致した場合に端末装置を認証する認証結果判断処理と、端末装置の認証が行われた場合に、セッション鍵を生成するセッション鍵生成処理と、端末装置から受信した分割データを受信するデータ受信処理と、前記分割データを記憶するデータ記憶処理と、前記データ記憶処理に保存されている分割データを読み出して端末装置へ送信するデータ送信処理とをコンピュータに行わせることを特徴とする遠隔分散保存プログラム。
【図面の簡単な説明】
図1は、本発明の一実施形態における端末装置の構成を示すブロック図である。
図2は、図1に示すデータ伸長器11の構成を示すブロック図である。
図3は、図1に示すデータ伸長器11の構成を示すブロック図である。
図4は、図1に示すデータ伸長器11の構成を示すブロック図である。
図5は、相互認証及び鍵交換を行う装置の構成を示すブロック図である。
図6は、図5に示す端末装置1の構成を示すブロック図である。
図7は、図5に示すサーバ2の構成を示すブロック図である。
図8は、図1に示すデータ伸長器11の構成を示すブロック図である。
図9は、パスワード認証データ更新−1の端末装置1の構成を示すブロック図である。
図10は、パスワード認証データ更新−1のサーバ2の構成を示すブロック図である。
図11は、パスワード認証データ更新−2の端末装置1の構成を示すブロック図である。
図12は、パスワード認証データ更新−2のサーバ2の構成を示すブロック図である。
図13は、図1に示すデータ伸長器11の構成を示すブロック図である。
図14は、図1に示すデータ伸長器11の構成を示すブロック図である。
図15は、安全な通信を利用して初期化処理を行う場合のサーバ2の構成を示すブロック図である。
図16は、安全ではない通信を利用して初期化処理を行う場合の端末装置1及びサーバ2の構成を示すブロック図である。
図17は、図5に示す端末装置1の構成を示すブロック図である。
図18は、図5に示すサーバ2の構成を示すブロック図である。
図19は、マスター鍵を利用して更新化処理を行う場合の端末装置1の構成を示すブロック図である。
図20は、マスター鍵を利用して更新化処理を行う場合のサーバ2の構成を示すブロック図である。
図21は、端末に分散データを保存しない場合の遠隔分散保存装置5の構成を示すブロック図である。
図22は、図21に示すデータ分散器51の構成を示すブロック図である。
図23は、端末にデータを保存しない場合の遠隔分散保存装置5の構成を示すブロック図である。
図24は、図23に示すデータ復元器54の構成を示すブロック図である。
図25は、端末にも分散データを保存する場合の遠隔分散保存装置5の構成を示すブロック図である。
図26は、図25に示すデータ分割器51の構成を示すブロック図である。
図27は、端末にも分散データを保存する場合の遠隔分散保存装置5の構成を示すブロック図である。
図28は、図27に示すデータ復元器54の構成を示すブロック図である。
【発明を実施するための最良の形態】
<第1実施例>
以下、図面を参照しつつ、本発明の好適な実施例について説明する。ただし、本発明は以下の各実施例に限定されるものではなく、例えばこれら実施例の構成要素同士を適宜組み合わせてもよい。
この認証システムは、ユーザの端末装置とサーバの認証装置がお互いに相互認証しながら同じセッション鍵を確保するためのシステムである。
ここで、以下の説明において用いる記号について説明しておく。
p,qは素数であり、q|p−1という関係がある。q|p−1は、qはp−1を割りきることのできる値であることを意味する。また、g,hはmodp上の位数qの有限体(群)G={gmod p:0≦j<q}の生成元である(楕円曲線上の群でも同じように構成できる)。ここで、“gmod p”は、法指数演算で、gをj乗した値をpで割った残り(Remainder)という意味である。ここで、gは(1<g<p−1,g=1modp,g≠1modp(0<j<q))であり、hはh=gmodpである。つまり、p,qは演算体系(素体の標数)を示す。例えば、H=hmodp(0<x<q)でxは秘密情報である(つまり、Hが与えられた時、x=logHを求めるのは数学的に難しい問題;Hの生成元hに対する離散対数問題)。また、乱数発生器から発生される乱数はR∈(Z/qZ)を無作為に生成する。ここで、(Z/qZ)は{1,2,・・・,q}の集合を示す。また、Nはパスワードの長さを示す。また、‖は値を連結(concatenation)するという意味である。
<端末装置の初期化>
ユーザは、サーバに対して個人登録したい時、自分の端末装置の初期化を行う。図1は、ユーザの端末装置の初期化処理の構成を示すブロック図である。初期化は、ユーザがパスワードを入力すると、データ伸張器11によって、サーバ登録用のパスワード認証データHと、ユーザ保存用の値P’が生成され、パスワード認証データHは、サーバに受け渡され、値P’は、メモリ12へ保存する。ここで、データ伸長器11は、多項式、多項式とハッシュ関数、ハッシュ関数、擬似乱数発生器などで構成することが可能である。
(1)多項式を利用する場合(その1)
初めに、図2を参照して、多項式を利用する場合(その1)について説明する。
まず、多項式発生器111によりランダムに多項式を発生する。このとき、登録するサーバの数が一つだったらxを変数とする1次多項式(p’(x)=α・xmodq)を、サーバの数がn個だったらn次多項式(p’(x)=α・x+α・x+・・・+α・xmodq)を発生する。ここで、αは(Z/qZ)から無作為に選ばれる。例えば、一つのサーバの場合、p’(x)は、p’(x)=α・xmodqとなる。ここで、ユーザは自分が覚えているパスワード(例えば、”Pooh93”)を入力する。多項式とユーザのパスワードが入力されたらパスワード認証データ生成器112は、パスワード認証データHを生成する。パスワード認証データHは、例えばH=hp’(1)+Pooh93modpにより計算できる。ここで、p’(1)はp’(x)でxの代わりにサーバのID(例えば、「1」)を入れて計算した値である。パスワード認証データHはユーザが直接にサーバに渡したり、郵便で送付したり、あるいは電話で知らせるなどして、安全に通知する必要がある。ユーザの端末装置の内部にあるメモリ12は多項式発生器から発生された多項式P’=p’(x)を記憶して保存する。
(2)多項式を利用する場合(その2)
次に、図2を参照して、多項式を利用する場合(その2)について説明する。
まず、多項式発生器111によりランダムに多項式を発生する。このとき、登録するサーバの数が一つだったらxを変数とする1次多項式(p’(x)=α・xmodq)を、サーバの数がn個だったらn次多項式(p’(x)=α・x+α・x+・・・+α・xmodq)を発生する。ここで、αは(Z/qZ)から無作為に選ばれる。例えば、一つのサーバの場合、p’(x)は、p’(x)=α・xmodqとなる。ここで、ユーザは自分が覚えているパスワード(例えば、”Pooh93”)を入力する。多項式とユーザのパスワードが入力されたらパスワード認証データ生成器112は、パスワード認証データHを生成する。パスワード認証データHは、例えばH=p(1)=p’(1)+Pooh93modqにより計算できる。ここで、p’(1)はp’(x)でxの代わりにサーバのID(例えば、「1」)を入れて計算した値である。パスワード認証データHはユーザが直接にサーバに渡したり、郵便で送付したり、あるいは電話で知らせるなどして、安全に通知する必要がある。ユーザの端末装置の内部にあるメモリ12は多項式発生器から発生された多項式P’=p’(x)を記憶して保存する。
(3)多項式とハッシュ関数を利用する場合(その1)
次に、図8を参照して、多項式とハッシュ関数を利用する場合(その1)について説明する。
まず、多項式発生器119によりランダムに多項式を発生する。このとき、登録するサーバの数が一つだったらxを変数とする1次多項式(p’(x)=α・xmodN)を、サーバの数がn個だったらn次多項式(p’(x)=α・x+α・x+・・・+α・xmodN)を発生する。ここで、αは(Z/qZ)から無作為に選ばれる。例えば、一つのサーバの場合、p’(x)は、p’(x)=α・xmodNとなる。そして、ハッシュ関数発生器120によりランダムにハッシュ関数HASHを発生する。HASHは一方向ハッシュ関数である。ここで、ユーザは自分が覚えているパスワード(例えば、”Pooh93”)を入力する。多項式とハッシュ関数とユーザのパスワードが入力されたらパスワード認証データ生成器121は、パスワード認証データHを生成する。パスワード認証データHは、例えばH=hp(1)modpにより計算できる。ここでp(1)は、p(1)=p’(1)+HASH(Pooh93‖ID(U)‖ID(S))modNにより計算する。ここで、ID(U)とID(S)はそれぞれユーザとサーバのIDを表す。ここで、p’(1)はp’(x)でxの代わりに「1」入れて計算した値である。
例えば、登録するサーバの数がnの場合、パスワード認証データ生成器121は、i番目のサーバに対してパスワード認証データHを生成する。パスワード認証データHは、例えばH=hp(i)modpにより計算できる。ここでp(i)は、p(i)=p’(i)+HASH(Pooh93‖ID(U)‖ID(S))modNにより計算する。ここで、ID(U)とID(S)はそれぞれユーザとi番目のサーバのIDを表す。ここで、p’(i)はn次多項式p’(x)でxの代わりに「i」を入れて計算した値である。
パスワード認証データHはユーザが直接にサーバに渡したり、郵便で送付したり、あるいは電話で知らせるなどして、安全に通知する必要がある。ユーザの端末装置の内部にあるメモリ12は多項式発生器から発生された多項式p’(x)とハッシュ関数発生器から発生されたハッシュ関数HASHとを一緒にP’=(p’(x),HASH)として記憶して保存する。
(4)多項式とハッシュ関数を利用する場合(その2)
次に、図8を参照して、多項式とハッシュ関数を利用する場合(その2)について説明する。
まず、多項式発生器119によりランダムに多項式を発生する。このとき、登録するサーバの数が一つだったらxを変数とする1次多項式(p’(x)=α・xmodN)を、サーバの数がn個だったらn次多項式(p’(x)=α・x+α・x+・・・+α・xmodN)を発生する。ここで、αは(Z/qZ)から無作為に選ばれる。例えば、一つのサーバの場合、p’(x)は、p’(x)=α・xmodNとなる。そして、ハッシュ関数発生器120によりランダムにハッシュ関数HASHを発生する。HASHは一方向ハッシュ関数である。ここで、ユーザは自分が覚えているパスワード(例えば、”Pooh93”)を入力する。多項式とハッシュ関数とユーザのパスワードが入力されたらパスワード認証データ生成器121は、パスワード認証データHを生成する。パスワード認証データHは、例えばH=p(1)=p’(1)+HASH(Pooh93‖ID(U)‖ID(S))modNにより計算できる。ここで、ID(U)とID(S)はそれぞれユーザとサーバのIDを表す。ここで、p’(1)はp’(x)でxの代わりに「1」入れて計算した値である。
例えば、登録するサーバの数がnの場合、パスワード認証データ生成器121は、i番目のサーバに対してパスワード認証データHを生成する。パスワード認証データHは、例えばH=p(i)=p’(i)+HASH(Pooh93‖ID(U)‖ID(S))modNにより計算できる。ここで、ID(U)とID(S)はそれぞれユーザとi番目のサーバのIDを表す。ここで、p’(i)はn次多項式p’(x)でxの代わりに「i」を入れて計算した値である。
パスワード認証データHはユーザが直接にサーバに渡したり、郵便で送付したり、あるいは電話で知らせるなどして、安全に通知する必要がある。ユーザの端末装置の内部にあるメモリ12は多項式発生器から発生された多項式p’(x)とハッシュ関数発生器から発生されたハッシュ関数HASHとを一緒にP’=(p’(x),HASH)として記憶して保存する。
(5)ハッシュ関数を利用する場合(その1)
次に、図3を参照して、ハッシュ関数を利用する場合(その1)について説明する。
まず、ハッシュ関数発生器113によりランダムにハッシュ関数HASHを発生する。そして、秘密値発生器114もランダムに秘密値Sを発生する。ここで、ユーザは自分が覚えているパスワード(例えば、”Pooh93”)を入力する。ハッシュ関数HASHと秘密値Sとユーザのパスワードが入力されたらパスワード認証データ生成器115はパスワード認証データHを生成する。パスワード認証データHは、例えば、H=hHASH(S‖Pooh93‖ID(U)‖ID(S))modpにより計算できる。ここで、ID(U)とID(S)はそれぞれユーザとサーバのIDを表す。パスワード認証データHはユーザが直接にサーバに渡したり、郵便で送付したり、あるいは電話で知らせるなどして、安全に通知する必要がある。ユーザの端末装置の内部にあるメモリ12はハッシュ関数発生器113と秘密値発生器114から発生されたハッシュ関数HASHと秘密値Sとを一緒にP’=(S,HASH)として記憶して保存する。
(6)ハッシュ関数を利用する場合(その2)
次に、図3を参照して、ハッシュ関数を利用する場合(その2)について説明する。
まず、ハッシュ関数発生器113によりランダムにハッシュ関数HASHを発生する。そして、秘密値発生器114もランダムに秘密値Sを発生する。ここで、ユーザは自分が覚えているパスワード(例えば、”Pooh93”)を入力する。ハッシュ関数HASHと秘密値Sとユーザのパスワードが入力されたらパスワード認証データ生成器115はパスワード認証データHを生成する。パスワード認証データHは、例えば、H=HASH(S‖Pooh93‖ID(U)‖ID(S))modqにより計算できる。ここで、ID(U)とID(S)はそれぞれユーザとサーバのIDを表す。パスワード認証データHはユーザが直接にサーバに渡したり、郵便で送付したり、あるいは電話で知らせるなどして、安全に通知する必要がある。ユーザの端末装置の内部にあるメモリ12はハッシュ関数発生器113と秘密値発生器114から発生されたハッシュ関数HASHと秘密値Sとを一緒にP’=(S,HASH)として記憶して保存する。
(7)擬似乱数発生器を利用する場合(その1)
次に、図4を参照して、擬似乱数発生器を利用する場合(その1)について説明する。
まず、擬似乱数発生器116によりランダムに擬似乱数関数PRNGを発生する。そして、秘密値発生器117もランダムに秘密値Sを発生する。ここで、ユーザは自分が覚えているパスワード(例えば、”Pooh93”)を入力する。擬似乱数関数PRNGと秘密値Sとユーザのパスワードが入力されたのを受けて、パスワード認証データ生成器118はパスワード認証データHを生成する。パスワード認証データHは、例えば、H=hPRNG(S‖Pooh93‖ID(U)‖ID(S))modpにより計算できる。ここで、ID(U)とID(S)はそれぞれユーザとサーバのIDを表す。パスワード認証データHはユーザが直接にサーバに渡したり、郵便で送付したり、あるいは電話で知らせるなどして、安全に通知する必要がある。ユーザの端末装置の内部にあるメモリ12は擬似乱数発生器116と秘密値発生器117から発生させた擬似乱数関数PRNGと秘密値Sとを一緒にP’=(S,PRNG)として記憶して保存する。
(8)擬似乱数発生器を利用する場合(その2)
次に、図4を参照して、擬似乱数発生器を利用する場合(その2)について説明する。
まず、擬似乱数発生器116によりランダムに擬似乱数関数PRNGを発生する。そして、秘密値発生器117もランダムに秘密値Sを発生する。ここで、ユーザは自分が覚えているパスワード(例えば、”Pooh93”)を入力する。擬似乱数関数PRNGと秘密値Sとユーザのパスワードが入力されたのを受けて、パスワード認証データ生成器118はパスワード認証データHを生成する。パスワード認証データHは、例えば、H=PRNG(S‖Pooh93‖ID(U)‖ID(S))modqにより計算できる。ここで、ID(U)とID(S)はそれぞれユーザとサーバのIDを表す。パスワード認証データHはユーザが直接にサーバに渡したり、郵便で送付したり、あるいは電話で知らせるなどして、安全に通知する必要がある。ユーザの端末装置の内部にあるメモリ12は擬似乱数発生器116と秘密値発生器117から発生させた擬似乱数関数PRNGと秘密値Sとを一緒にP’=(S,PRNG)として記憶して保存する。
次に、図6、7を参照して、前述した初期化を行った端末装置1とサーバ2(図5参照)との間で相互認証及び鍵交換を行う動作を説明する。
<端末装置の動作>
(1)多項式を利用した場合(その1とその2)
初めに、多項式を利用した場合の端末装置1の動作を説明する。端末装置1は、前述した多項式を利用した場合(その1)、多項式を利用した場合(その2)に関わらず次のように動作する。
まず、ユーザの端末装置1に備えたメモリ12から記憶された多項式P’=p’(x)を読み出す。結合器32はメモリ12から読み出した多項式P’とユーザが入力したパスワードによりP=p(x)を計算して出力する。例えば、p(x)=p’(x)+Pooh93=α・x+Pooh93modqにより計算する。マスク演算器34は、結合器32から入力されたPと乱数発生器33において発生させた乱数RとからYを、Y=gR1・h−p(1)modpにより計算する。ここでp(1)は、p(1)=p’(1)+Pooh93=α・1+Pooh93modqにより計算する。ここで、「1」はサーバの認証IDを表す。通信処理部35はYをサーバ2へ送信し、サーバ2からYを受信する。マスター鍵生成器36は結合器32から出力されるPと乱数発生器33から出力されるRと受信したYを入力としてMKを、MK=(Y・h−p(1)R1modpにより計算して出力する。
続いて認証結果判断部37は、MKを入力として、V=HASH(00‖Y‖Y‖MK)によりVを計算してこのVを通信処理部35によりサーバ2へ送信し、サーバ2から受信したVとHASH(01‖Y‖Y‖MK)を比較する。ここで、HASHは一方向ハッシュ関数であるし、HASHの代わりにMAC(Message Authentication Code)を使ってもよい。
次に、認証結果判断部37においてVとHASH(01‖Y‖Y‖MK)が一致しない場合、認証結果判断部37は、エラー発生器38に対して、一致しないことを通知する。これを受けて、エラー発生器38はエラーを発生して処理を中断する。一方、認証結果判断部37においてVとHASH(01‖Y‖Y‖MK)が一致した場合はサーバ2が正当な装置として認証してセッション鍵生成器39は、SK=HASH(11‖Y‖Y‖MK)によりセッション鍵SKを生成する。
(2)多項式とハッシュ関数を利用した場合(その1とその2)
次に、多項式とハッシュ関数を利用した場合の端末装置1の動作を説明する。端末装置1は、前述した多項式とハッシュ関数を利用した場合(その1)、多項式とハッシュ関数を利用した場合(その2)に関わらず次のように動作する。
まず、ユーザの端末装置1に備えたメモリ12から記憶された多項式とハッシュ関数P’=(p’(x),HASH)を読み出す。結合器32はメモリ12から読み出した多項式p’(x)とハッシュ関数HASHとユーザが入力したパスワードによりP=p(x)を計算して出力する。例えば、p’(x)が1次多項式の場合、p(x)=p’(x)+HASH(Pooh93‖ID(U)‖ID(S))=α・x+HASH(Pooh93‖ID(U)‖ID(S))modNにより計算する。マスク演算器34は、結合器32から入力されたPと乱数発生器33において発生させた乱数RとからYを、Y=gR1・h−p(1)modpにより計算する。ここでp(1)は、p(1)=p’(1)+HASH(Pooh93‖ID(U)‖ID(S))=α・1+HASH(Pooh93‖ID(U)‖ID(S))modNにより計算する。ここで、p’(1)はp’(x)でxの代わりに「1」入れて計算した値である。通信処理部35はYをサーバ2へ送信し、サーバ2からYを受信する。マスター鍵生成器36は結合器32から出力されるPと乱数発生器33から出力されるRと受信したYを入力としてMKを、MK=(Y・h−p(1)R1modpにより計算して出力する。
ユーザの端末装置1に備えたメモリ12から読み出した多項式p’(x)がn次多項式の場合、結合器32は多項式p’(x)とハッシュ関数HASHとユーザが入力したパスワードによりP=p(x)を計算して出力する。例えば、p(x)=p’(x)+HASH(Pooh93‖ID(U)‖ID(S))modNにより計算する。マスク演算器34は、結合器32から入力されたPと乱数発生器33において発生させた乱数RとからYを、Y=gR1・h−p(1)modpにより計算する。ここでp(i)は、p(i)=p’(i)+HASH(Pooh93‖ID(U)‖ID(S))modNにより計算する。ここで、p’(i)はi番目のサーバに対してp’(x)でxの代わりに「i」入れて計算した値である。通信処理部35はYをサーバ2へ送信し、サーバ2からYを受信する。マスター鍵生成器36は結合器32から出力されるPと乱数発生器33から出力されるRと受信したYを入力としてMKを、MK=(Y・h−p(1)R1modpにより計算して出力する。
続いて認証結果判断部37は、MKを入力として、V=HASH(00‖Y‖Y‖MK)によりVを計算してこのVを通信処理部35によりサーバ2へ送信し、サーバ2から受信したVとHASH(01‖Y‖Y‖MK)を比較する。ここで、HASHは一方向ハッシュ関数であるし、HASHの代わりにMAC(Message Authentication Code)を使ってもよい。
次に、認証結果判断部37においてVとHASH(01‖Y‖Y‖MK)が一致しない場合、認証結果判断部37は、エラー発生器38に対して、一致しないことを通知する。これを受けて、エラー発生器38はエラーを発生して処理を中断する。一方、認証結果判断部37においてVとHASH(01‖Y‖Y‖MK)が一致した場合はサーバ2が正当な装置として認証してセッション鍵生成器39は、SK=HASH(11‖Y‖Y‖MK)によりセッション鍵SKを生成する。
(3)ハッシュ関数を利用した場合(その1とその2)
次に、ハッシュ関数を利用した場合の端末装置1の動作を説明する。端末装置1は、前述したハッシュ関数を利用した場合(その1)、ハッシュ関数を利用した場合(その2)に関わらず次のように動作する。
まず、ユーザの端末装置1に備えたメモリ12から記憶された秘密値とハッシュ関数P’=(S,HASH)を読み出す。結合器32はメモリ12から読み出した秘密値Sとハッシュ関数HASHとユーザが入力したパスワードによりP=pを計算して出力する。例えば、pは、p=HASH(S‖Pooh93‖ID(U)‖ID(S))modqにより計算する。マスク演算器34は、結合器32から入力されたPと乱数発生器33において発生させた乱数RとからYを、Y=gR1・h−pmodpにより計算する。通信処理部35は、Yをサーバ2へ送信し、サーバ2からYを受信する。マスター鍵生成器36は結合器32から出力されるPと乱数発生器33から出力されるRと受信したYを入力としてMKを、MK=(Y・h−pR1modpにより計算して出力する。
続いて認証結果判断部37は、MKを入力として、V=HASH(00‖Y‖Y‖MK)によりVを計算してこのVを通信処理部35によりサーバ2へ送信し、サーバ2から受信したVとHASH(01‖Y‖Y‖MK)を比較する。ここで、HASHは一方向ハッシュ関数であるし、HASHの代わりにMAC(Message Authentication Code)を使ってもよい。
次に、認証結果判断部37においてVとHASH(01‖Y‖Y‖MK)が一致しない場合、認証結果判断部37は、エラー発生器38に対して、一致しないことを通知する。これを受けて、エラー発生器38はエラーを発生して処理を中断する。一方、認証結果判断部37においてVとHASH(01‖Y‖Y‖MK)が一致した場合はサーバ2が正当な装置として認証してセッション鍵生成器39は、SK=HASH(11‖Y‖Y‖MK)によりセッション鍵SKを生成する。
(4)擬似乱数発生器を利用した場合(その1とその2)
次に、疑似乱数関数を利用した場合の端末装置1の動作を説明する。端末装置1は、前述した擬似乱数発生器を利用した場合(その1)、擬似乱数発生器を利用した場合(その2)に関わらず次のように動作する。
疑似乱数関数を利用した場合は、ユーザの端末装置1に備えたメモリ12に記憶されたハッシュ関数HASHの代わりに疑似乱数関数PRNGを用いる以外は、ハッシュ関数を利用した場合と同様の動作であるため、ここでは詳細な説明を省略する。
<サーバの動作>
(1)多項式を利用した場合(その1)、多項式とハッシュ関数を利用した場合(その1)、ハッシュ関数を利用した場合(その1)、擬似乱数関数を利用した場合(その1)
サーバ2は、前述した多項式利用した場合(その1)、多項式とハッシュ関数を利用した場合(その1)、ハッシュ関数利用した場合(その1)、擬似乱数発生器を利用した場合(その1)に関わらず次のように動作する。
サーバ2に備えたメモリ41に保存されたユーザIDとパスワードの認証データHを読み出す。マスク演算器43はメモリ41から読み出したHと乱数発生器42から発生させた乱数Rを入力としてYを、Y=gR2・Hmodpにより計算する。通信処理部44は、計算して得られたYを端末装置1に送信し、端末装置1から受信したYをマスター鍵生成器45へ出力する。マスク鍵生成器45はメモリ41から読み出したHと乱数発生器42からのRと通信処理部44からのYを入力としてMKを、MK=(Y・H)R2modpにより計算して、MKを出力する。
続いて認証結果判断部46は、MKを入力として、V=HASH(01‖Y‖Y‖MK)によりVを計算してこのVを通信処理部44により端末装置1へ送信し、端末装置1から受信したVとHASH(00‖Y‖Y‖MK)を比較する。ここで、HASHは一方向ハッシュ関数であるし、HASHの代わりにMAC(Message Authentication Code)を使ってもよい。
次に、認証結果判断部46においてVとHASH(00‖Y‖Y‖MK)が一致しない場合、認証結果判断部46は、エラー発生器47に対して、一致しないことを通知する。これを受けて、エラー発生器47はエラーを発生して処理を中断する。一方、認証結果判断部46においてVとHASH(00‖Y‖Y‖MK)が一致した場合は端末装置1が正当な装置として認証してセッション鍵生成器48は、SK=HASH(11‖Y‖Y‖MK)によりセッション鍵SKを生成する。
(2)多項式を利用した場合(その2)、多項式とハッシュ関数を利用した場合(その2)、ハッシュ関数を利用した場合(その2)、擬似乱数関数を利用した場合(その2)
サーバ2は、前述した多項式利用した場合(その2)、多項式とハッシュ関数を利用した場合(その2)、ハッシュ関数を利用した場合(その2)、擬似乱数発生器を利用した場合(その2)に関わらず次のように動作する。
サーバ2に備えたメモリ41に保存されたユーザIDとパスワードの認証データHを読み出す。マスク演算器43はメモリ41から読み出したHと乱数発生器42から発生させた乱数Rを入力としてYを、Y=gR2・hmodpにより計算する。通信処理部44は、計算して得られたYを端末装置1に送信し、端末装置1から受信したYをマスター鍵生成器45へ出力する。マスク鍵生成器45はメモリ41から読み出したHと乱数発生器42からのRと通信処理部44からのYを入力としてMKを、MK=(Y・hR2modpにより計算して、MKを出力する。
続いて認証結果判断部46は、MKを入力として、V=HASH(01‖Y‖Y‖MK)によりVを計算してこのVを通信処理部44により端末装置1へ送信し、端末装置1から受信したVとHASH(00‖Y‖Y‖MK)を比較する。ここで、HASHは一方向ハッシュ関数であるし、HASHの代わりにMAC(Message Authentication Code)を使ってもよい。
次に、認証結果判断部46においてVとHASH(00‖Y‖Y‖MK)が一致しない場合、認証結果判断部46は、エラー発生器47に対して、一致しないことを通知する。これを受けて、エラー発生器47はエラーを発生して処理を中断する。一方、認証結果判断部46においてVとHASH(00‖Y‖Y‖MK)が一致した場合は端末装置1が正当な装置として認証してセッション鍵生成器48は、SK=HASH(11‖Y‖Y‖MK)によりセッション鍵SKを生成する。
<パスワード認証データの更新−1>
ユーザは、サーバに対してすでに登録されたパスワード認証データを、自分が覚えているパスワードを変えずに、更新したい時、自分の端末装置の更新化を行う。図9は、ユーザの端末装置の更新化処理の構成を示すブロック図である。更新化処理は、多項式発生器13による多項式T’とユーザの端末装置1に備えたメモリ12から記憶された多項式P’が入力されると、更新値生成器14によって、サーバ更新用の値H’と、ユーザ保存用の更新された多項式P’が生成され、H’は、サーバに受け渡され、更新された多項式P’は、メモリ12へ保存する。ここでの更新化処理は、前述した多項式を利用した場合(その1)、多項式を利用した場合(その2)、多項式とハッシュ関数を利用した場合(その1)、多項式とハッシュ関数を利用した場合(その2)に適用することが可能である。
<端末装置の更新化処理>
(1)多項式を利用した場合(その1)
初めに、図9を参照して、多項式を利用した場合(その1)の端末装置1の更新化処理の動作を説明する。
まず、多項式発生器13によりランダムに多項式を発生する。このとき、登録したサーバの数が一つだったらxを変数とする1次多項式(t’(x)=β・xmodq)を、サーバの数がn個だったらn次多項式(t’(x)=β・x+β・x+・・・+β・xmodq)を発生する。ここで、βは(Z/qZ)から無作為に選ばれる。例えば、一つのサーバの場合、T’=t’(x)は、t’(x)=β・xmodqとなる。ここで、ユーザの端末装置1に備えたメモリ12から記憶された多項式P’=p’(x)を読み出す。多項式t’(x)と多項式p’(x)が入力されたら更新値生成器14は、ユーザ保存用の更新された多項式P’とサーバ更新用の値H’を生成する。更新された多項式P’は、例えばP’=t’(x)+p’(x)=(α+β)・xmodqにより計算できる。サーバ更新用の値H’、例えばH’=ht’(1)modpにより計算できる。ここで、t’(1)はt’(x)でxの代わりにサーバのID(例えば、「1」)入れて計算した値である。サーバ更新用の値H’はユーザが直接にサーバに渡したり、郵便で送付したり、あるいは電話で知らせるなどして、安全に通知する必要がある。ユーザの端末装置の内部にあるメモリ12は更新された多項式P’=t’(x)+p’(x)を記憶して保存する。
(2)多項式を利用した場合(その2)
次に、図9を参照して、多項式を利用した場合(その1)の端末装置1の更新化処理の動作を説明する。
まず、多項式発生器13によりランダムに多項式を発生する。このとき、登録したサーバの数が一つだったらxを変数とする1次多項式(t’(x)=β・xmodq)を、サーバの数がn個だったらn次多項式(t’(x)=β・x+β・x+・・・+β・xmodq)を発生する。ここで、βは(Z/qZ)から無作為に選ばれる。例えば、一つのサーバの場合、T’=t’(x)は、t’(x)=β・xmodqとなる。ここで、ユーザの端末装置1に備えたメモリ12から記憶された多項式P’=p’(x)を読み出す。多項式t’(x)と多項式p’(x)が入力されたら更新値生成器14は、ユーザ保存用の更新された多項式P’とサーバ更新用の値H’を生成する。更新された多項式P’は、例えばP’=t’(x)+p’(x)=(α+β)・xmodqにより計算できる。サーバ更新用の値H’、例えばH’=t’(1)modqにより計算できる。ここで、t’(1)はt’(x)でxの代わりにサーバのID(例えば、「1」)入れて計算した値である。サーバ更新用の値H’はユーザが直接にサーバに渡したり、郵便で送付したり、あるいは電話で知らせるなどして、安全に通知する必要がある。ユーザの端末装置の内部にあるメモリ12は更新された多項式P’=t’(x)+p’(x)を記憶して保存する。
(3)多項式とハッシュ関数を利用した場合(その1)
次に、図9を参照して、多項式とハッシュ関数を利用した場合(その1)の端末装置1の更新化処理の動作を説明する。
まず、多項式発生器13によりランダムに多項式を発生する。このとき、登録したサーバの数が一つだったらxを変数とする1次多項式(t’(x)=β・xmodN)を、サーバの数がn個だったらn次多項式(t’(x)=β・x+β・x+・・・+β・xmodN)を発生する。ここで、βは(Z/qZ)から無作為に選ばれる。例えば、一つのサーバの場合、T’=t’(x)は、t’(x)=β・xmodNとなる。ここで、ユーザの端末装置1に備えたメモリ12から記憶された多項式とハッシュ関数P’=(p’(x),HASH)を読み出す。多項式t’(x)と多項式p’(x)が入力されたら更新値生成器14は、ユーザ保存用の更新された多項式P’とサーバ更新用の値H’を生成する。更新された多項式P’は、例えばP’=t’(x)’+p’(x)=(α+β)・xmodNにより計算できる。サーバ更新用の値H’、例えばH’=ht’(1)modpにより計算できる。ここで、t’(1)はt’(x)でxの代わりに「1」を入れて計算した値である。
例えば、登録したサーバの数がnの場合、更新値生成器14は、i番目のサーバに対してサーバ更新用の値H’を生成する。サーバ更新用の値H’は、例えばH’=ht’(i)modpにより計算できる。ここで、t’(i)はn次多項式t’(x)でxの代わりに「i」を入れて計算した値である。
サーバ更新用の値H’はユーザが直接にサーバに渡したり、郵便で送付したり、あるいは電話で知らせるなどして、安全に通知する必要がある。ユーザの端末装置の内部にあるメモリ12は更新された多項式P’=t’(x)+p’(x)とメモリ12から読み出したハッシュ関数HASHとを一緒にP’=(t’(x)+p’(x),HASH)として記憶して保存する。
(4)多項式とハッシュ関数を利用した場合(その2)
次に、図9を参照して、多項式とハッシュ関数を利用した場合(その2)の端末装置1の更新化処理の動作を説明する。
まず、多項式発生器13によりランダムに多項式を発生する。このとき、登録したサーバの数が一つだったらxを変数とする1次多項式(t’(x)=β・xmodN)を、サーバの数がn個だったらn次多項式(t’(x)=β・x+β・x+・・・+β・xmodN)を発生する。ここで、βは(Z/qZ)から無作為に選ばれる。例えば、一つのサーバの場合、T’=t’(x)は、t’(x)=β・xmodNとなる。ここで、ユーザの端末装置1に備えたメモリ12から記憶された多項式とハッシュ関数P’=(p’(x),HASH)を読み出す。多項式t’(x)と多項式p’(x)が入力されたら更新値生成器14は、ユーザ保存用の更新された多項式P’とサーバ更新用の値H’を生成する。更新された多項式P’は、例えばP’=t’(x)+p’(x)=(α+β)・xmodNにより計算できる。サーバ更新用の値H’、例えばH’=t’(1)modNにより計算できる。ここで、t’(1)はt’(x)でxの代わりに「1」を入れて計算した値である。
例えば、登録したサーバの数がnの場合、更新値生成器14は、i番目のサーバに対してサーバ更新用の値H’を生成する。サーバ更新用の値H’は、例えばH’=t’(i)modNにより計算できる。ここで、t’(i)はn次多項式t’(x)でxの代わりに「i」を入れて計算した値である。
サーバ更新用の値H’はユーザが直接にサーバに渡したり、郵便で送付したり、あるいは電話で知らせるなどして、安全に通知する必要がある。ユーザの端末装置の内部にあるメモリ12は更新された多項式P’=t’(x)+p’(x)とメモリ12から読み出したハッシュ関数HASHとを一緒にP’=(t’(x)+p’(x),HASH)として記憶して保存する。
<サーバの更新化処理>
(1)多項式を利用した場合(その1)、多項式とハッシュ関数を利用した場合(その1)
初めに、図10を参照して、多項式を利用した場合(その1)、多項式とハッシュ関数を利用した場合(その1)のサーバ2の更新化処理の動作を説明する。サーバ2は、前述した多項式利用した場合(その1)、多項式とハッシュ関数を利用した場合(その1)に関わらず次のように動作する。
まず、サーバ2に備えたメモリ41に保存されたユーザIDとパスワード認証データHを読み出す。ユーザの端末装置から送られたサーバ更新用の値H’とメモリ41から読み出したパスワード認証データHが入力されたら更新値生成器21は、サーバ保存用の更新されたパスワード認証データHを生成する。更新されたパスワード認証データHは、例えばH=hp(1)・ht’(1)=hp(1)+t’(1)modpにより計算できる。サーバの内部にあるメモリ41は更新されたパスワード認証データHを記憶して保存する。
(2)多項式を利用した場合(その2)
次に、図10を参照して、前述した多項式を利用した場合(その2)のサーバ2の更新化処理の動作を説明する。
まず、サーバ2に備えたメモリ41に保存されたユーザIDとパスワード認証データHを読み出す。ユーザの端末装置から送られたサーバ更新用の値H’とメモリ41から読み出したパスワード認証データHが入力されたら更新値生成器21は、サーバ保存用の更新されたパスワード認証データHを生成する。更新されたパスワード認証データHは、例えばH=p(1)+t’(1)modqにより計算できる。サーバの内部にあるメモリ41は更新されたパスワード認証データHを記憶して保存する。
(3)多項式とハッシュ関数を利用した場合(その2)
次に、図10を参照して、前述した多項式とハッシュ関数を利用した場合(その2)のサーバ2の更新化処理の動作を説明する。
まず、サーバ2に備えたメモリ41に保存されたユーザIDとパスワード認証データHを読み出す。ユーザの端末装置から送られたサーバ更新用の値H’とメモリ41から読み出したパスワード認証データHが入力されたら更新値生成器21は、サーバ保存用の更新されたパスワード認証データHを生成する。更新されたパスワード認証データHは、例えばH=p(1)+t’(1)modNにより計算できる。サーバの内部にあるメモリ41は更新されたパスワード認証データHを記憶して保存する。
<パスワード認証データの更新−2>
ユーザは、サーバに対してすでに登録されたパスワード認証データを、自分が覚えているパスワードを変えながら、更新したい時、自分の端末装置の更新化処理を行う。図11は、ユーザの端末装置の更新化処理の構成を示すブロック図である。更新化処理は、秘密値発生器15による秘密値S’とユーザの新しいパスワードPW’とユーザの端末装置1に備えたメモリ12から記憶されたP’が入力されると、パスワード認証データ更新器16によって、サーバ更新用のパスワード認証データH’と、ユーザ保存用の更新されたP’が生成され、H’は、サーバ2に受け渡され、更新されたP’は、メモリ12へ保存する。ここでの更新化処理は、前述したハッシュ関数を利用した場合(その1)、ハッシュ関数を利用した場合(その2)、擬似乱数発生器を利用した場合(その1)、擬似乱数発生器を利用した場合(その2)に適用することが可能である。そして、多項式を利用した場合(その1)、多項式を利用した場合(その2)、多項式とハッシュ関数を利用した場合(その1)、多項式とハッシュ関数を利用した場合(その2)も同じように初期化処理と同様の動作を用いて適用することが可能なため、ここでは詳細な説明を省略する。
<端末装置の更新化処理>
(1)ハッシュ関数を利用した場合(その1)
初めに、図11を参照して、ハッシュ関数を利用した場合(その1)の端末装置1の更新化処理の動作を説明する。
まず、秘密値発生器15によりランダムに秘密値S’を発生する。ここで、ユーザの端末装置1に備えたメモリ12から記憶されたP’=(S,HASH)を読み出す。ユーザが覚えている新しいパスワード(PW’)とハッシュ関数HASHと秘密値S’が入力されたらパスワード認証データ更新器16は、ユーザ保存用の更新されたP’とサーバ更新用のパスワード認証データH’を生成する。サーバ更新用のパスワード認証データH’は、例えばH’=hHASH(S’‖PW’‖ID(U)‖ID(S))modpにより計算できる。ここで、ID(U)とID(S)はそれぞれユーザとサーバのIDを表す。サーバ更新用のパスワード認証データH’はユーザが直接にサーバ2に渡したり、郵便で送付したり、あるいは電話で知らせるなどして、安全に通知する必要がある。ユーザの端末装置1の内部にあるメモリ12は更新されたP’=(S’,HASH)を記憶して保存する。
(2)ハッシュ関数を利用した場合(その2)
次に、図11を参照して、ハッシュ関数を利用した場合(その2)の端末装置1の更新化処理の動作を説明する。
まず、秘密値発生器15によりランダムに秘密値S’を発生する。ここで、ユーザの端末装置1に備えたメモリ12から記憶されたP’=(S,HASH)を読み出す。ユーザが覚えている新しいパスワード(PW’)とハッシュ関数HASHと秘密値S’が入力されたらパスワード認証データ更新器16は、ユーザ保存用の更新されたP’とサーバ更新用のパスワード認証データH’を生成する。サーバ更新用のパスワード認証データH’は、例えばH’=HASH(S’‖PW’‖ID(U)‖ID(S))modqにより計算できる。ここで、ID(U)とID(S)はそれぞれユーザとサーバのIDを表す。サーバ更新用のパスワード認証データH’はユーザが直接にサーバ2に渡したり、郵便で送付したり、あるいは電話で知らせるなどして、安全に通知する必要がある。ユーザの端末装置1の内部にあるメモリ12は更新されたP’=(S’,HASH)を記憶して保存する。
(3)擬似乱数発生器を利用した場合(その1)、擬似乱数発生器を利用した場合(その2)
次に、図11を参照して、擬似乱数発生器を利用した場合(その1)、擬似乱数発生器を利用した場合(その2)の端末装置1の更新化処理の動作を説明する。
擬似乱数関数を利用した場合(その1とその2)は、メモリ12に記憶されたハッシュ関数HASHの代わりに疑似乱数関数PRNGを用いる以外は、ハッシュ関数を利用した場合(その1とその2)と同様の動作であるため、ここでは詳細な説明を省略する。
<サーバの更新化処理>
(1)ハッシュ関数を利用した場合(その1)、ハッシュ関数を利用した場合(その2)、擬似乱数発生器を利用した場合(その1)、擬似乱数発生器を利用した場合(その2)
初めに、図12を参照して、ハッシュ関数を利用した場合(その1)、ハッシュ関数を利用した場合(その2)、擬似乱数発生器を利用した場合(その1)、擬似乱数発生器を利用した場合(その2)のサーバ2の更新化処理の動作を説明する。サーバ2は、前述したハッシュ関数を利用した場合(その1とその2)、擬似乱数発生器を利用した場合(その1とその2)に関わらず次のように動作する。
まず、サーバ2に備えたメモリ41に保存されたユーザIDとパスワード認証データHを読み出す。ユーザの端末装置1から送られたサーバ更新用のパスワード認証データH’とメモリ41から読み出したパスワード認証データHが入力されたらパスワード認証データ更新器22は、サーバ保存用のパスワード認証データHをユーザの端末装置1から送られたH’に更新する。サーバの内部にあるメモリ41は更新されたパスワード認証データH=H’を記憶して保存する。
<第2実施例>
以下、本発明の公開鍵暗号方式を使った実施例について説明する。ただし、本発明は以下の各実施例に限定されるものではなく、例えばこれら実施例の構成要素同士を適宜組み合わせてもよい。
ここで、RSA公開鍵暗号方式を使った実施例の説明する前に、いくつかの背景知識及び基礎的な記号について説明しておく。
公開鍵暗号方式では、公開鍵(PubK)および秘密鍵(PriK)の対(PubK,PriK)が存在する。公開鍵は秘密ではなく、誰でも得ることができる。暗号化は、公開鍵を用いてメッセージmをC=EncPubK(m)となるような暗号文Cを生成することが可能である。暗号文は、秘密鍵を用いてのみ、m=DecPriK(C)と復号可能である。暗号文は、公開鍵を用いては復号できない。そして公開鍵署名方式では、メッセージmを署名化してs=SigPriK(m)となるような署名文(m,s)を生成することが可能である。署名文の検証は、公開鍵を用いて、m’=VerPubK(s)を求め、mとm’を比較することで可能である。つまり、mとm’が一致した場合はその署名文(m,s)が正しいことを検証する。そうではない場合は、(m,s)が正しい署名文ではないことになる。
周知のRSA公開鍵方式では、公開鍵は(N,e)であり、秘密鍵は(N,d)である。ただし、Nは、2つのランダムに選択された大きな素数pとqの積であり(すなわち、N=p・q)、eは、eと(p−1)・(q−1)の最大公約数が1であるような小さい任意の数(例えば、e=3あるいはe=216+1)であり、dは、e−1mod((p−1)・(q−1))である。安全性を最大化するには、pとqを同じ長さにする。メッセージm(m∈Z)に対して暗号化関数は、EncPubK(m)=mmodNであり、復号化関数は、DecPriK(C)=CmodNである。ここで、暗号文Cと公開鍵(N,e)が与えられた時、メッセージmを求めるのは計算量的に困難である。RSAは、大きな数Nの素因数分解が難しいことから安全性を得ている。そして署名化関数は、SigPriK(m)=mmodNであり、検証化関数は、VerPubK(s)=smodNである。一般に、暗号システムでは、その安全性のレベルを記述する安全性パラメータを有する。ここでは、ハッシュ関数HASHの安全性パラメータとしてkを用い(ただし、1/2は無視できるほど小さいと仮定する)、RSA公開鍵方式の安全性パラメータとして1を用い、特に、RSAの法Nは長さ1であると仮定する。また、{0,1}は有限の2進数のストリングの集合を、{0,1}は長さkの2進数のストリングの集合を示す。ハッシュ関数HASHは{0,1}の入力から{0,1}の出力を出す安全な一方向関数であり、FDH(Full−Domain Hash)関数は{0,1}の入力からZ\{1}の出力を出す安全な一方向関数である。また、乱数発生器から発生される乱数はT(T∈Z)を無作為に生成する。また、‖は値を連結(concatenation)するという意味である。
<端末装置の初期化>
ユーザは、サーバに対して個人登録したい時、自分の端末装置の初期化を行う。図1は、ユーザの端末装置の初期化処理の構成を示すブロック図である。初期化は、ユーザがパスワードを入力すると、データ伸張器11によって、サーバ登録用のパスワード認証データHと、ユーザ保存用の値P’が生成され、パスワード認証データHは、サーバに受け渡され、値P’は、メモリ12へ保存する。ここで、データ伸長器11は、多項式とFDH関数、FDH関数などで構成することが可能である。
(1)多項式とFDH関数を利用する場合(その1)
初めに、図13を参照して、多項式とFDH関数を利用する場合(その1)について説明する。
まず、FDH関数発生器122によりランダムにFDH関数FDHを発生する。そして、多項式発生器123によりランダムに多項式を発生する。このとき、登録するサーバの数が一つだったらxを変数とする1次多項式(p’(x)=α・xmodN)を、サーバの数がn個だったらn次多項式(p’(x)=α・x+α・x+・・・+α・xmodN)を発生する。ここで、αはZから無作為に選ばれる。例えば、一つのサーバの場合、p’(x)は、p’(x)=α・xmodNとなる。ここで、ユーザは自分が覚えているパスワード(例えば、”Pooh93”)を入力する。多項式とFDH関数とユーザのパスワードが入力されたらパスワード認証データ生成器124は、パスワード認証データHを生成する。パスワード認証データHは、例えばH=p(1)=p’(1)+Pooh93modNにより計算できる。ここで、p’(1)はp’(x)でxの代わりにサーバのID(例えば、「1」)を入れて計算した値である。パスワード認証データHはユーザが直接にサーバに渡したり、郵便で送付したり、あるいは電話で知らせるなどして、安全に通知する必要がある。ユーザの端末装置の内部にあるメモリ12は多項式発生器から発生された多項式p’(x)とFDH関数発生器から発生されたFDH関数FDHとを一緒にP’=(p’(x),FDH)Lして記憶して保存する。
(2)多項式とFDH関数を利用する場合(その2)
次に、図13を参照して、多項式とFDH関数を利用する場合(その2)を利用する場合について説明する。
まず、FDH関数発生器122によりランダムにFDH関数FDHを発生する。そして、多項式発生器123によりランダムに多項式を発生する。このとき、登録するサーバの数が一つだったらxを変数とする1次多項式(p’(x)=α・xmodN)を、サーバの数がn個だったらn次多項式(p’(x)=α・x+α・x+・・・+α・xmodN)を発生する。ここで、αはZから無作為に選ばれる。例えば、一つのサーバの場合、p’(x)は、p’(x)=α・xmodNとなる。ここで、ユーザは自分が覚えているパスワード(例えば、”Pooh93”)を入力する。多項式とFDH関数とユーザのパスワードが入力されたらパスワード認証データ生成器124は、パスワード認証データHを生成する。パスワード認証データHは、例えばH=p(1)=p’(1)+FDH(Pooh93‖ID(U)‖ID(S))modNにより計算できる。ここで、ID(U)とID(S)はそれぞれユーザとサーバのIDを表す。ここで、p’(1)はp’(x)でxの代わりに「1」入れて計算した値である。
例えば、登録するサーバの数がnの場合、パスワード認証データ生成器124は、i番目のサーバに対してパスワード認証データHを生成する。パスワード認証データHは、例えばH=p(i)=p’(i)+FDH(Pooh93‖ID(U)‖ID(S))modNによりに計算できる。ここで、ID’(U)とID(S)はそれぞれユーザとi番目のサーバのIDを表す。ここで、p’(i)はn次多項式p’(x)でxの代わりに「i」を入れて計算した値である。
パスワード認証データHはユーザが直接にサーバに渡したり、郵便で送付したり、あるいは電話で知らせるなどして、安全に通知する必要がある。ユーザの端末装置の内部にあるメモリ12は多項式発生器から発生された多項式p’(x)とFDH関数発生器から発生されたFDH関数FDHとを一緒にP’=(p’(x),FDH)として記憶して保存する。
(3)FDH関数を利用する場合
次に、図14を参照して、FDH関数を利用する場合について説明する。
まず、FDH関数発生器125によりランダムにFDH関数FDHを発生する。そして、秘密値発生器126によりランダムに秘密値Sを発生する。ただし、Sは全探索攻撃を防げるような長さの値である(例えば、Sは80ビット以上の値)。ここで、ユーザは自分が覚えているパスワード(例えば、”Pooh93”)を入力する。FDH関数と秘密値Sとユーザのパスワードが入力されたらパスワード認証データ生成器127はパスワード認証データHを生成する。パスワード認証データHは、例えば、H=FDH(S‖Pooh93‖ID(U)‖ID(S))により計算できる。ここで、ID(U)とID(S)はそれぞれユーザとサーバのIDを表す。パスワード認証データHはユーザが直接にサーバに渡したり、郵便で送付したり、あるいは電話で知らせるなどして、安全に通知する必要がある。ユーザの端末装置の内部にあるメモリ12は秘密値発生器126から発生された秘密値SとFDH関数発生器125から発生されたFDH関数FDHとを一緒にP’=(S,FDH)として記憶して保存する。
<端末装置とサーバとの初期化>
サーバは、RSA公開鍵をユーザに送信したい時、初期化処理を行う。サーバは、RSA公開鍵方式に従って公開鍵と秘密鍵の対を生成し、その公開鍵をユーザに送信する。ここで、初期化は、安全な通信、安全ではない通信などで実現することが可能である。安全ではない通信を利用する場合では、ユーザは、受信した公開鍵が正しいであるかどうかを決定する。このユーザによる決定は、ユーザに、サーバが適当な方法で選択した公開鍵を生成したかどうかを決定する方法を提供する。つまり、サーバが提供した公開鍵eと(p−1)・(q−1)の最大公約数が1で(すなわち、gcd(e,(p−1)・(q−1))=1)あるかどうかを決定するためにRSA署名方式を使う。
(1)安全な通信を利用する場合
初めに、図15を参照して、安全な通信を利用する場合の初期化処理について説明する。
まず、RSA鍵生成器23により公開鍵(N,e)と秘密鍵(N,d)の対を生成する。RSA公開鍵(N,e)はサーバが直接にユーザに渡したり、郵便で送付したり、あるいは電話で知らせるなどして、安全に通知する必要がある。サーバの内部にあるメモリ41はRSA秘密鍵(N,d)を記憶して保存する。
(2)安全ではない通信を利用する場合
次に、図16を参照して、安全ではない通信を利用する場合の初期化処理について説明する。
まず、ユーザの端末装置1にある乱数発生器17によりランダムに乱数R(R∈{0,1})を発生し、サーバに送信する。一方、サーバ2にあるRSA鍵生成器24により公開鍵(N,e)と秘密鍵(N,d)の対を生成する。そして、乱数発生器25によりランダムに乱数R(R∈{0,1})を発生する。RSA署名文生成器26は、端末装置1から受信したRとRSA鍵生成器24から生成された秘密鍵(N,d)と乱数発生器25から発生させた乱数Rを入力として、{m1≦j≦nの署名{s1≦j≦nを生成する(ただし、nはn≧log(PW・(e−1)/e)になるような整数である。ここで、PWはパスワードを表す。)。署名{s1≦j≦nは、{s=mmodN}1≦j≦nにより計算する。ここで、{m1≦j≦nはHASH(n‖N‖e‖ID(U)‖ID(S)‖R‖R)の出力から長さ1のブロックをn個に分けて得たものである。ID(U)とID(S)はそれぞれユーザとサーバのIDを表す。サーバ2は、公開鍵(N,e)と計算して得られた署名文(R,{S1≦j≦n)を端末装置1に送信する。サーバ2の内部に備えたメモリ41は、RSA鍵生成器24から生成された秘密鍵(N,d)を記憶して保存する。
ユーザの端末装置1にある検証結果判断部18は、乱数発生器17において発生させたRとサーバ2から受信した((N,e),(R,{s1≦j≦n))を入力として、署名文(R,{s1≦j≦n)の検証を行う。{m,=smodN}1≦j≦nにより{m1≦j≦nを計算してこの{m1≦j≦nとHASH(n‖N‖e‖ID(U)‖ID(S)‖R‖R)を比較する。検証結果判断部18において{m1≦j≦nとHASH(n‖N‖e‖ID(U)‖ID(S)‖R‖R)が一致しない場合、検証結果判断部18は、エラー発生器19に対して、一致しないことを通知する。これを受けて、エラー発生器19はエラーを発生して処理を中断する。一方、検証結果判断部18において{m1≦j≦nとHASH(n‖N‖e‖ID(U)‖ID(S)‖R‖R)が一致した場合はサーバ2の公開鍵(N,e)が正当なものとして検証して、ユーザの端末装置1の内部に備えたメモリ12に、公開鍵(N,e)を記憶して保存する。
次に、図17、18を参照して、前述した初期化を行った端末装置1とサーバ2(図5参照)との間で相互認証及び鍵交換を行う動作を説明する。
<端末装置の動作>
(1)多項式とFDH関数を利用した場合(その1)
初めに、多項式とFDH関数を利用した場合(その1)の端末装置1の動作を説明する。
まず、ユーザの端末装置1に備えたメモリ12から記憶された多項式とFDH関数P’=(p’(x),FDH)を読み出す。結合器52はメモリ12から読み出した多項式p’(x)とFDH関数FDHとユーザが入力したパスワードによりW=FDH(p(x)‖ID(U)‖ID(S))を計算して出力する。ここで、p(x)=p’(x)+Pooh93modNにより計算する。例えば、p’(x)が1次多項式の場合、p(x)=p(1)=p’(1)+Pooh93=α・1+Pooh93modNにより計算する。ここで、p’(1)はp’(x)でxの代わりに「1」入れて計算した値である。
ユーザの端末装置1に備えたメモリ12から読み出した多項式p’(x)がn次多項式の場合、結合器52は多項式p’(x)とFDH関数FDHとユーザが入力したパスワードによりW=FDH(p(x)‖ID(U)‖ID(S))を計算して出力する。ここで、p(x)=p’(x)+Pooh93modNにより計算する。例えば、p(x)=p(i)=p’(i)+Pooh93modNにより計算する。ここで、p’(i)はi番目のサーバに対してp’(x)でxの代わりに「i」入れて計算した値である。
マスク演算器54は、メモリ12から読み出した公開鍵(N,e)と結合器52から入力されたWと乱数発生器53においてランダムに発生させた乱数T(T∈Z)とからZを、Z=T・WmodNにより計算する。通信処理部55はZをサーバ2へ送信し、サーバ2からVを受信する。
続いて認証結果判断部56は、乱数発生器53から出力されたTを入力として、HASH(01‖T‖ID(U)‖ID(S))を計算してサーバ2から受信したVと比較する。ここで、HASHの代わりにMACを使ってもよい。認証結果判断部56においてVとHASH(01‖T‖ID(U)‖ID(S))が一致しない場合、認証結果判断部56は、エラー発生器57に対して、一致しないことを通知する。これを受けて、エラー発生器57はエラーを発生して処理を中断する。一方、認証結果判断部56においてVとHASH(01‖T‖ID(U)‖ID(S))が一致した場合はサーバ2が正当な装置として認証して、検証子生成器58は、V=HASH(00‖T‖ID(U)‖ID(S))により検証子Vを計算してサーバ2へ送信する。同時に、セッション鍵生成器59は、SK=HASH(11‖T‖ID(U)‖ID(S))によりセッション鍵SKを生成する。
(2)多項式とFDH関数を利用した場合(その2)
次に、多項式とFDH関数を利用した場合(その2)の端末装置1の動作を説明する。
まず、ユーザの端末装置1に備えたメモリ12から記憶された多項式とFDH関数P’=(p’(x),FDH)を読み出す。結合器52はメモリ12から読み出した多項式p’(x)とFDH関数FDHとユーザが入力したパスワードによりW=FDH(p(x)‖ID(U)‖ID(S))を計算して出力する。ここで、p(x)=p’(x)+FDH(Pooh93‖ID(U)‖ID(S))modNにより計算する。例えば、p’(x)が1次多項式の場合、p(x)=p(1)=p’(1)+FDH(Pooh93‖ID(U)‖ID(S))=α・1+FDH(Pooh93‖ID(U)‖ID(S))modNにより計算する。ここで、p’(1)はp’(x)でxの代わりに「1」入れて計算した値である。
ユーザの端末装置1に備えたメモリ12から読み出した多項式p’(x)がn次多項式の場合、結合器52は多項式p’(x)とFDH関数FDHとユーザが入力したパスワードによりW=FDH(p(x)‖ID(U)‖ID(S))を計算して出力する。ここで、p(x)=p’(x)+FDH(Pooh93‖ID(U)‖ID(S))modNにより計算する。例えば、p(x)=p(i)=p’(i)+FDH(Pooh93‖ID(U)‖ID(S))modNにより計算する。ここで、p’(i)はi番目のサーバに対してp’(x)でxの代わりに「i」入れて計算した値である。
マスク演算器54は、メモリ12から読み出した公開鍵(N,e)と結合器52から入力されたWと乱数発生器53においてランダムに発生させた乱数T(T∈Z)とからZを、Z=T・WmodNにより計算する。通信処理部55はZをサーバ2へ送信し、サーバ2からVを受信する。
続いて認証結果判断部56は、乱数発生器53から出力されたTを入力として、HASH(01‖T‖ID(U)‖ID(S))を計算してサーバ2から受信したVと比較する。ここで、HASHの代わりにMACを使ってもよい。認証結果判断部56においてVとHASH(01‖T‖ID(U)‖ID(S))が一致しない場合、認証結果判断部56は、エラー発生器57に対して、一致しないことを通知する。これを受けて、エラー発生器57はエラーを発生して処理を中断する。一方、認証結果判断部56においてVとHASH(01‖T‖ID(U)‖ID(S))が一致した場合はサーバ2が正当な装置として認証して、検証子生成器58は、V=HASH(00‖T‖ID(U)‖ID(S))により検証子Vを計算してサーバ2へ送信する。同時に、セッション鍵生成器59は、SK=HASH(11‖T‖ID(U)‖ID(S))によりセッション鍵SKを生成する。
(3)FDH関数を利用した場合
次に、FDH関数を利用した場合の端末装置1の動作を説明する。
まず、ユーザの端末装置1に備えたメモリ12から記憶された秘密値とFDH関数P’=(S,FDH)を読み出す。結合器52はメモリ12から読み出した秘密値SとFDH関数FDHとユーザが入力したパスワードによりWを計算して出力する。例えば、Wは、W=FDH(S‖Pooh93‖ID(U)‖ID(S))により計算する。マスク演算器54は、メモリ12から読み出した公開鍵(N,e)と結合器52から入力されたWと乱数発生器53においてランダムに発生させた乱数T(T∈Z)とからZを、Z=T・WmodNにより計算する。通信処理部55はZをサーバ2へ送信し、サーバ2からVを受信する。
続いて認証結果判断部56は、乱数発生器53から出力されたTを入力として、HASH(01‖T‖ID(U)‖ID(S))を計算してサーバ2から受信したVと比較する。ここで、HASHの代わりにMACを使ってもよい。認証結果判断部56においてVとHASH(01‖T‖ID(U)‖ID(S))が一致しない場合、認証結果判断部56は、エラー発生器57に対して、一致しないことを通知する。これを受けて、エラー発生器57はエラーを発生して処理を中断する。一方、認証結果判断部56においてVとHASH(01‖T‖ID(U)‖ID(S))が一致した場合はサーバ2が正当な装置として認証して、検証子生成器58は、V=HASH(00‖T‖ID(U)‖ID(S))により検証子Vを計算してサーバ2へ送信する。同時に、セッション鍵生成器59は、SK=HASH(11‖T‖ID(U)‖ID(S))によりセッション鍵SKを生成する。
<サーバの動作>
(1)多項式とFDH関数を利用した場合(その1)、多項式とFDH関数を利用した場合(その2)
サーバ2は、前述した多項式とFDH関数を利用した場合(その1)、多項式とFDH関数を利用した場合(その2)に関わらず次のように動作する。
まず、サーバ2に備えたメモリ41から保存されたユーザIDとパスワードの認証データHを読み出す。マスター鍵生成器62はメモリ41から読み出したHと秘密鍵(N,d)と端末装置1から受信したZを入力としてTを、T=(Z/W)modNにより計算して出力する。ここで、Wは、W=FDH(H‖ID(U)‖ID(S))により計算する。検証子生成器63は、マスター鍵生成器62から入力されたTから検証子Vを、V=HASH(01‖T‖ID(U)‖ID(S))により計算する。通信処理部64は、計算して得られたVを端末装置1へ送信し、端末装置1から受信したVを認証結果判断部65へ出力する。
続いて認証結果判断部65は、マスター鍵生成器62から出力されたTを入力として、HASH(00‖T‖ID(U)‖ID(S))を計算して端末装置1から受信したVと比較する。ここで、HASHの代わりにMACを使ってもよい。認証結果判断部65においてVとHASH(00‖T‖ID(U)‖ID(S))が一致しない場合、認証結果判断部65は、エラー発生器66に対して、一致しないことを通知する。これを受けて、エラー発生器66はエラーを発生して処理を中断する。一方、認証結果判断部65においてVとHASH(00‖T‖ID(U)‖ID(S))が一致した場合は端末装置1が正当な装置として認証して、セッション鍵生成器67は、SK=HASH(11‖T‖ID(U)‖ID(S))によりセッション鍵SKを生成する。
(2)FDH関数を利用した場合
次に、FDH関数を利用した場合のサーバ2の動作を説明する。
まず、サーバ2に備えたメモリ41から保存されたユーザIDとパスワードの認証データHを読み出す。マスター鍵生成器62はメモリ41から読み出したHと秘密鍵(N,d)と端末装置1から受信したZを入力としてTを、T=(Z/W)modNにより計算して出力する。ここで、Wは、W=Hである。検証子生成器63は、マスター鍵生成器62から入力されたTから検証子Vを、V=HASH(01‖T‖ID(U)‖ID(S))により計算する。通信処理部64は、計算して得られたVを端末装置1へ送信し、端末装置1から受信したVを認証結果判断部65へ出力する。
続いて認証結果判断部65は、マスター鍵生成器62から出力されたTを入力として、HASH(00‖T‖ID(U)‖ID(S))を計算して端末装置1から受信したVと比較する。ここで、HASHの代わりにMACを使ってもよい。認証結果判断部65においてVとHASH(00‖T‖ID(U)‖ID(S))が一致しない場合、認証結果判断部65は、エラー発生器66に対して、一致しないことを通知する。これを受けて、エラー発生器66はエラーを発生して処理を中断する。一方、認証結果判断部65においてVとHASH(00‖T‖ID(U)‖ID(S))が一致した場合は端末装置1が正当な装置として認証して、セッション鍵生成器67は、SK=HASH(11‖T‖ID(U)‖ID(S))によりセッション鍵SKを生成する。
<パスワード認証データの更新−1>
ユーザは、サーバに対してすでに登録されたパスワード認証データを、自分が覚えているパスワードを変えずに、更新したい時、自分の端末装置の更新化を行う。図9、19は、ユーザの端末装置の更新化処理の構成を示すブロック図である。ここでの更新化処理は、前述した多項式とFDH関数を利用した場合(その1)、多項式とFDH関数を利用した場合(その2)とマスター鍵を利用する場合に適用することが可能である。また、この更新化処理によりサーバに対するreplay攻撃を防ぐことが可能である。
<端末装置の更新化処理>
(1)多項式とFDH関数を利用した場合(その1)、多項式とFDH関数を利用した場合(その2)
初めに、図9を参照して、多項式とFDH関数を利用した場合(その1)、多項式とFDH関数を利用した場合(その2)の端末装置1の更新化処理を説明する。端末装置1は、前述した多項式とFDH関数を利用した場合(その1)、多項式とFDH関数を利用した場合(その2)に関わらず次のように動作する。
まず、多項式発生器13によりランダムに多項式を発生する。このとき、登録したサーバの数が一つだったらxを変数とする1次多項式(t’(x)=β・xmodN)を、サーバの数がn個だったらn次多項式(t’(x)=β・x+β・x+・・・+β・xmodN)を発生する。ここで、βはZから無作為に選ばれる。例えば、一っのサーバの場合、T’=t’(x)は、t’(x)=β・xmodNとなる。ここで、ユーザの端末装置1に備えたメモリ12から記憶された多項式とFDH関数P’=(p’(x),FDH)を読み出す。多項式t’(x)と多項式p’(x)が入力されたら更新値生成器14は、ユーザ保存用の更新された多項式P’とサーバ更新用の値H’を生成する。更新された多項式P’は、例えばP’=t’(x)+p’(x)=(α+β)・xmodNにより計算できる。サーバ更新用の値H’、例えばH’=t’(1)modNにより計算できる。ここで、t’(1)はt’(x)でxの代わりに「1」を入れて計算した値である。
例えば、登録したサーバの数がnの場合、更新値生成器14は、i番目のサーバに対してサーバ更新用の値H’を生成する。サーバ更新用の値H’は、例えばH’=t’(i)modNにより計算できる。ここで、t’(i)はn次多項式t’(x)でxの代わりに「i」を入れて計算した値である。
サーバ更新用の値H’はユーザが直接にサーバに渡したり、郵便で送付したり、あるいは電話で知らせるなどして、安全に通知する必要がある。ユーザの端末装置の内部にあるメモリ12は更新された多項式P’=t’(x)+p’(x)とメモリ12から読み出したFDH関数FDHとを一緒にP’=(t’(x)+p’(x),FDH)として記憶して保存する。
(2)マスター鍵を利用する場合
次に、図19を参照して、マスター鍵を利用する場合の端末装置1の更新化処理の動作を説明する。
まず、乱数発生器53によりランダムに乱数T(T∈Z)を発生する。ここで、ユーザの端末装置1に備えたメモリ12から記憶された多項式とFDH関数P’=(p’(x),FDH)を読み出す。乱数Tと多項式p’(x)が入力されたら更新値生成器20は、ユーザ保存用の更新された多項式P’を生成する。更新された多項式P’は、P’=T+p’(x)modNにより計算できる。ユーザの端末装置の内部にあるメモリ12は更新された多項式P’=T+p’(x)とメモリ12から読み出したFDH関数FDHとを一緒にP’=(T+p’(x),FDH)として記憶して保存する。
<サーバの更新化処理>
(1)多項式とFDH関数を利用した場合(その1)、多項式とFDH関数を利用した場合(その2)
初めに、図10を参照して、多項式とFDH関数を利用した場合(その1)、多項式とFDH関数を利用した場合(その2)のサーバ2の更新化処理の動作を説明する。サーバ2は、前述した多項式とFDH関数を利用した場合(その1)、多項式とFDH関数を利用した場合(その2)に関わらず次のように動作する。
まず、サーバ2に備えたメモリ41に保存されたユーザIDとパスワード認証データHを読み出す。ユーザの端末装置から送られたサーバ更新用の値H’とメモリ41から読み出したパスワード認証データHが入力されたら更新値生成器21は、サーバ保存用の更新されたパスワード認証データHを生成する。更新されたパスワード認証データHは、例えばH=p(1)+t’(1)modNにより計算できる。サーバの内部にあるメモリ41は更新されたパスワード認証データHを記憶して保存する。
(2)マスター鍵を利用する場合
次に、図20を参照して、マスター鍵を利用する場合のサーバ2の更新化処理の動作を説明する。
まず、マスター鍵生成器62によりマスター鍵Tを生成する。ここで、サーバ2に備えたメモリ41から保存されたユーザIDとパスワード認証データHを読み出す。マスター鍵Tとメモリ41から読み出したパスワード認証データHが入力されたら更新値生成器27は、サーバ保存用の更新されたパスワード認証データHを生成する。更新されたパスワード認証データHは、H=p(1)+TmodNにより計算できる。サーバの内部にあるメモリ41は更新されたパスワード認証データHを記憶して保存する。
<パスワード認証データの更新−2>
ユーザは、サーバに対してすでに登録されたパスワード認証データを、自分が覚えているパスワードを変えながら、更新したい時、自分の端末装置の更新化処理を行う。図11は、ユーザの端末装置の更新化処理の構成を示すブロック図である。更新化処理は、秘密値発生器15による秘密値S’とユーザの新しいパスワードPW’とユーザの端末装置1に備えたメモリ12から記憶されたP’が入力されると、パスワード認証データ更新器16によって、サーバ更新用のパスワード認証データH’と、ユーザ保存用の更新されたP’が生成され、H’は、サーバ2に受け渡され、更新されたP’は、メモリ12へ保存する。ここでの更新化処理は、前述したFDH関数を利用した場合に適用することが可能である。また、この更新化処理によりサーバに対するreplay攻撃を防ぐことが可能である。そして、多項式とFDH関数を利用した場合(その1),多項式とFDH関数を利用した場合(その2)も同じように初期化処理と同様の動作を用いて適用することが可能なため、ここでは詳細な説明を省略する。
<端末装置の更新化処理>
(1)FDH関数を利用した場合
図11を参照して、FDH関数を利用した場合の端末装置1の更新化処理の動作を説明する。
まず、秘密値発生器15によりランダムに秘密値S’を発生する。ここで、ユーザの端末装置1に備えたメモリ12から記憶されたP’=(S,FDH)を読み出す。ユーザが覚えている新しいパスワード(PW’)とFDH関数FDHと秘密値S’が入力されたらパスワード認証データ更新器16は、ユーザ保存用の更新されたP’とサーバ更新用のパスワード認証データH’を生成する。サーバ更新用のパスワード認証データH’は、例えばH’=FDH(S’‖PW’‖ID(U)‖ID(S))により計算できる。ここで、ID(U)とID(S)はそれぞれユーザとサーバのIDを表す。サーバ更新用のパスワード認証データH’はユーザが直接にサーバ2に渡したり、郵便で送付したり、あるいは電話で知らせるなどして、安全に通知する必要がある。ユーザの端末装置1の内部にあるメモリ12は更新されたP’=(S’,FDH)を記憶して保存する。
<サーバの更新化処理>
(1)FDH関数を利用した場合
図12を参照して、FDH関数を利用した場合のサーバ2の更新化処理の動作を説明する。
まず、サーバ2に備えたメモリ41に保存されたユーザIDとパスワード認証データHを読み出す。ユーザの端末装置1から送られたサーバ更新用のパスワード認証データH’とメモリ41から読み出したパスワード認証データHが入力されたらパスワード認証データ更新器22は、サーバ保存用のパスワード認証データHをユーザの端末装置1から送られたH’に更新する。サーバの内部にあるメモリ41は更新されたパスワード認証データH=H’を記憶して保存する。
このように、多項式を利用することにより、不正利用しようと思っている者が他人の端末装置を持っていたとしてもユーザのパスワードは情報理論的に安全である。また、サーバ内に侵入して保存されている情報を得たとしてもユーザのパスワードは情報理論的に安全である。また、ハッシュ関数と擬似乱数発生器とFDH関数を利用する場合には、不正利用しようと思っている者にとってユーザのパスワードは計算量的に安全である。
次に、前述した技術を応用した装置について説明する。
<端末に分散データを保存しない場合の遠隔分散保存装置におけるデータ保存処理>
次に、図21を参照して、端末に分散データを保存しない場合の遠隔分散保存装置におけるデータ保存処理について説明する。図21は、端末に分散データを保存しない場合の遠隔分散保存装置5の構成を示すブロック図である。
ユーザは分散保存したいデータDATAを自分の端末装置21で処理し、n台のサーバに保存するデータS’1,…,S’nへと分割する。分割データS’iはデータのIDであるDIDと共にユーザの端末装置21によりサーバの認証装置と共有された鍵SKiを用いて作成された安全な通信路を使用可能な通信器52によってサーバIDiへと送られ保存される。同様の方法により、保存データの一覧情報を分割し、サーバに保存することも可能である。また、ユーザの端末装置(認証データ更新モード)を適当な間隔(記憶情報がオフライン全数探索で求まる間隔より短い間隔で、例えば、認証を行う度や2,3日に1回など)で動作させ、P’と各サーバに記録されているHを更新する情報UP’,UH1,…,UHnを生成させ、それらを更新する。
これにより、サーバに保存されるデータと認証用データをともに、漏洩と破損に強くなるように構成することができる。漏洩と破損への耐性は(n,DS,LS1,LS2)の4組のパラメータで表現できる。DS,LS1,LS2はともに(漏洩や破損の起こる)エンティティの組み合わせの集合であり、DSはデータの破損に対する耐性、LS1,LS2は漏洩に対する耐性を表現している。DSには、壊れても構わないエンティティの組み合わせが記述される。災害などの理由によりローカルバックアップを含め保存しているデータが完全に利用できなくなったとしても、利用者が自分のデータを復元できる範囲の破損組み合わせが記述される。LS1には、記録情報が漏れても構わないエンティティの組み合わせが記述される。保存データが漏洩したとしても、攻撃者が利用者のデータを復元することが困難な範囲の漏洩組み合わせとする。LS2には、記録情報が漏れたとしても、後で何らかの対抗策がとれる範囲のエンティティの組み合わせが記述される。保存データが漏洩したとしても、攻撃者が利用者のデータを復元することを困難にする対抗策の存在する範囲の漏洩組み合わせとする。
また、ユーザの記憶情報はオフラインで全数探索できる程少量であると仮定すると、従来の漏洩に弱い認証方式を使う場合、攻撃者は漏洩情報と通信路上で得た情報を使って利用者の記憶情報を全数探索でき、結果として、利用者に成りすまして遠隔分散保存されているデータをすべて入手できる。つまり、LS1にサーバ{S}とユーザの所有物{U}をそれぞれ含めることはできなかった。これに対して、漏洩に強い認証方式を使うことでLS1にサーバ{S}とユーザの所有物{U}をそれぞれ含めることが可能となる。漏洩に強い認証方式を含む全ての遠隔認証方式はユーザの所有物{U}とサーバ{S}の両方から情報が漏洩すると利用者の記憶情報を全数探索でき、結果として、利用者に成りすまして遠隔分散保存されているデータをすべて入手できる。よって、LS2にユーザの所有物{U}とサーバ{S}の組み合わせ{US}を入れることはできなかった。これに対して、P’とH1,…,Hnを更新することでLS2にユーザの所有物とサーバの組み合わせを入れることが可能となる。
次に、図22を参照して、図21に示すデータ分散器51の構成を説明する。調整器511は入力されたパラメータn,kを秘密分散器512に渡す。秘密分散器512は入力されたパラメータn,kに従い保存データDATAを(k,n)分散データS1,S2,…,Snに変換する。次に、調整器511はデータのIDであるDIDからデータ伸長器513の入力xを生成しデータ伸長器513へ渡す。データ伸長器513は対応する情報Hを出力し、それを暗号器514に渡す。ここでのHはオフラインでの全数探索に強い長さのものを利用する。データ伸長器513が短いHを出力する場合には異なるxを複数データ伸長器513に渡し、得られた複数のHを利用する。暗号器514は、Hを鍵としてn−k+1個以上の分散データを暗号化する。また、S1,…,Sn−k+1のそれぞれに改ざん検出符号を付けてもよい。暗号器の出力がS’1,…,S’nであり、DID、ID1,ID2,…,IDnと共にデータ分割器51の出力となる。
なお、(k,n)分散データとは、元データがn個に分割されたデータであり、かつ、そのどのk個からでも元のデータを復元できるがk未満からでは復元できないような性質を有するデータである。(k,n)分散データ以外にも任意のアクセス構造を持った分散データを利用することが可能である。また、秘密分散器は多項式や行列を使った情報量的に安全な分散方式以外に、暗号化を使うことで保存データサイズを少なくできる計算量的に安全な分散方式を用いることが可能である。
このデータ分割器51は、(n,DS,LS1,LS2)=(n,{CSn−k},{UC,CSn},{UCSk−1})を実現している。{CS}はクライアントおよびサーバの記録情報およびその部分情報を意味し、{Sn}はn台のサーバの全記録情報およびその部分情報を意味する。{C,S}は「クライアントに記録されている全情報およびその部分情報あるいはサーバに記録されている全情報およびその部分情報」を意味する。{UCSk−1}からの漏洩は認証情報のアップデート処理で対処できる。攻撃者が{UCSk−1}から記憶情報を求める間に認証情報がアップデートされれば攻撃者は利用者のデータを求めることができなくなる。ユーザの所有物{U}の紛失(P’の紛失)に対しては、{U}に記録してあるデータをアップデートするたびにそのコピーをローカルに作成することで解決できる。災害などでローカルコピーもろとも{U}が破損する危険性に対しては、{U}に記録してあるデータを秘密分散器で(k’,n)分散データで分割して各サーバにも保存しておくことで解決できる。k’>=kの場合、(n,DS,LS1,LS2)=(n,{UCSn−k’,CSn−k},{UC,CSk’−1},{UCSk−1})を実現しており、k’<kの場合、(n,DS,LS1,LS2)=(n,{UCSn−k,CSn−k},{UC,CSk’−1},{UCSk−1,CSk−1})を実現している。
さらに、ユーザの所有物に記録してあるデータと記憶情報のすべて、あるいはそれらの一部も秘密分散器で(k’,n)分散データに分割して各サーバにも保存しておけば、ユーザが仮に記憶情報を忘れたとしてもオフライン解析により(所有物の記録情報と)記憶情報を復元できる。その際、1)すべてを分散する場合はオフライン解析を省くことができ、2)一部を分散する場合はその量に応じてオフライン解析の計算量を削減することができる。この機能により、ユーザは第三者にデータを復号する権限を与える際に、データを復元する容易さ(攻撃者が{CSk’}を得た場合のデータ復元の容易さとも同じ)を調整できるようになる。
<端末にデータを保存しない場合の遠隔分散保存装置におけるデータ復元処理>
次に、図23を参照して、端末にデータを保存しない場合の遠隔分散保存装置におけるデータ復元処理について説明する。図23は、端末にデータを保存しない場合の遠隔分散保存装置5の構成を示すブロック図である。
データ復元器54は、入力されたDIDに対応する分散データS’1,…,S’nの内少なくともk個を通信器52を介してサーバID1,ID2,…IDnから受け取る。データ復元器54はS’1,…,S’nの内少なくともk個を処理してDATAを復元する。同様の方法で、保存データの一覧を復元することも可能である。また、ユーザの端末装置21(認証データ更新モード)を適当な間隔(記憶情報がオフライン全数探索で求まる間隔より短い間隔で、例えば、認証を行う度や2,3日に1回など)で動作させ、P’と各サーバに記録されているHを更新する情報UP’,UH1,…,UHnを生成させ、それらを更新する。
次に、図24を参照して、図23に示すデータ復元器54の構成を説明する。調整器541は、入力されたn台のサーバID,ID1,ID2,…,IDnとDIDを出力する。また、調整器541はDIDからデータ伸長器542の入力xを生成しデータ伸長器542へ渡す。データ伸長器542は対応する情報Hを出力し、それを暗号器543に渡す。暗号器543は得られた分散データS’1,S’2,…,S’nの内、暗号化されているものを復号しS1,S2,…,Snを秘密分散復元器に渡す。秘密分散復元器544は渡された分散データからDATAを復元する。なお、改ざん検出を行い改ざんの行われていない分散データのみをk個渡してもよい。
<端末にも分散データを保存する場合の遠隔分散保存装置におけるデータ保存処理>
次に、図25を参照して、端末にも分散データを保存する場合の遠隔分散保存装置におけるデータ保存処理について説明する。図25は、端末にも分散データを保存する場合の遠隔分散保存装置5の構成を示すブロック図である。ここでは、図21に示す構成を異なる部分のみを説明する。
ユーザは分散保存したいデータDATAを自分の端末装置21で処理し、手元に残すデータDLとn台のサーバに保存するデータRS’1,…,RS’nへと分割する。DLは手元の記録装置55に保存され、分割データRS’1はデータのIDであるDIDと共にユーザの端末装置21によりサーバの認証装置と共有された鍵SKiを用いて作成された安全な通信路を通ってサーバIDiへと送られ保存される。同様の方法で、保存データの一覧情報を分割し、サーバに保存することも可能である。
このように、分散データの一部を自分の端末装置21に置くことで、サーバとの通信量を削減できる。破損したサーバの組み合わせに応じて通信量が変わる方式と変わらない方式が可能であるが、変わる方法の場合n台のサーバ全体の記憶領域を削減できる。なお、漏洩と破損に対する耐性は、データを手元に置かない場合と同等に保つことができる。
次に、図26を参照して、図25に示すデータ分割器51の構成を説明する。ここでは、図22に示す構成と異なる部分のみを説明する。暗号器515は乱数生成器516から乱数Rを受け取り、これを鍵として保存データを暗号化し、それをDLとして出力する。調整器511は入力されたパラメータn,kを秘密分散器512に渡す。秘密分散器512は入力されたパラメータn,kに従いRを(k,n)分散データRS1,RS2,…,RSnに変換する。次に、調整器511はデータのIDであるDIDからデータ伸長器513の入力xを生成しデータ伸長器513へ渡す。データ伸長器513は対応する情報Hを出力し、これを鍵として暗号器514に渡す。ここでのHはオフラインでの全数探索に強い長さのものを利用する。データ伸長器513が短いHを出力する場合には異なるxを複数のデータ伸長器513に渡し、得られた複数のHを利用する。暗号器514は、Hを鍵としてn−k+1個以上の分散データを暗号化する。また、RS1,…,RSn−k+1のそれぞれに改ざん検出符号を付けてもよい。暗号器の出力がRS’1,…,RS’nである。
なお、(k,n)分散データ以外にも任意のアクセス構造を持った分散データを利用することが可能である。また、秘密分散器512には多項式や行列を使った情報量的に安全な分散方式や、暗号を使う計算量的に安全な分散方式を用いることが可能であるが、Rのサイズが小さい場合には、計算量的に安全な分散方式を用いることによるサイズの削減効果は小さいため、情報量的に安全な分散方式を用いた方がよい。
<端末にも分散データを保存する場合の遠隔分散保存装置におけるデータ復元処理>
次に、図27を参照して、端末にも分散データを保存する場合の遠隔分散保存装置におけるデータ復元処理について説明する。図27は、端末にも分散データを保存する場合の遠隔分散保存装置5の構成を示すブロック図である。ここでは、図23に示す構成と異なる部分のみを説明する。
データ復元器54は入力されたDIDに対応する分散データRS’1,…RS’nの内少なくともk個を通信器を介してサーバID1,ID2,…,IDnから受け取る。データ復元器54はRS’1,…,RS’nの内少なくともk個を処理してDATAを復元する。同様の方法で、保存データの一覧を復元することも可能である。
次に、図28を参照して、図27に示すデータ復元器54の構成を説明する。ここでは、図24に示す構成と異なる部分のみを説明する。調整器541は、DIDからデータ伸長器542の入力xを生成しデータ伸長器542へ渡す。データ伸長器542は対応する情報Hを出力し、それを復号器543に渡す。復号器543は得られた分散データRS’1,RS’2,…,RS’nの内、暗号化されているものを復号しRS1,…,RSnを秘密分散復元器544に渡す。秘密分散復元器544は渡された分散データからDATAを復号器545によって復元する。また、改ざん検出を行い改ざんの行われていない分散データをk個渡してもよい。
なお、図面に示す各処理部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより認証処理、鍵交換処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、ホームページ提供環境(あるいは表示環境)を備えたWWWシステムも含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
産業上の利用の可能性
この発明によれば、端末装置側あるいはサーバ側から装置内に保存している情報が漏れたとしてもオフライン解析によってパスワードを見つけだすことができないため、サーバの不正利用を防止することが可能になるという効果が得られる。また、装置内に保存されている情報を盗まれないようにするための耐タンパー性のモジュールを使用する必要がないため、装置構成を簡単にすることができる。また、公開鍵暗号システムのように複雑な鍵管理処理を行う必要がないため、計算処理を向上させることができるとともに、処理内容を簡単にすることができる。また、複数のサーバに対しても拡張することができる。
さらに、各サーバと端末装置とでユーザIDを同期させながら動的に変化させることで、盗聴者がユーザIDを用いてユーザのプライバシ情報を紐付けすることを防止することができる。
【図1】

【図2】

【図3】

【図4】

【図5】

【図6】

【図7】

【図8】

【図9】

【図10】

【図11】

【図12】

【図13】

【図14】

【図15】

【図16】

【図17】

【図18】

【図19】

【図20】

【図21】

【図22】

【図23】

【図24】

【図25】

【図26】

【図27】

【図28】


【特許請求の範囲】
【請求項1】
端末装置とサーバ間において相互に認証を行う認証システムであって、
前記端末装置は、
ユーザ保存用の認証情報P’を予め記憶しておく記憶手段と、
前記記憶手段から読み出した認証情報P’と認証時に入力されたパスワードを入力として所定の計算式により値Pを求める結合手段と、
前記値Pと内部において発生させた乱数を入力として所定の計算式により値Y1を求め、前記サーバへ送信するマスク演算手段と、
前記値Pと内部において発生させた乱数と前記サーバから受信した値Y2を入力として所定の計算式により値MKを求めるマスター鍵生成手段と
を備え、
前記サーバは、
サーバ登録用のパスワード認証データHを予め記憶しておく記憶手段と、
前記記憶手段から読み出したパスワード認証データHと内部において発生させた乱数を入力として所定の計算式により値Y2を求め、前記端末装置へ送信するマスク演算手段と、
前記パスワード認証データHと内部において発生させた乱数と前記端末装置から受信した値Y1を入力として所定の計算式により値MKを求めるマスター鍵生成手段と
を備えたことを特徴とする認証システム。
【請求項2】
ユーザが予め決定したパスワードに基づいて、前記パスワード認証データHと前記認証情報P’を求めるデータ伸長手段をさらに備えたことを特徴とする請求項1に記載の認証システム。
【請求項3】
前記端末装置は、
前記値MKを入力として所定の計算式により値V1を求め、サーバへ送信するとともに、前記サーバから受信した値V2と前記値MKを入力として所定の計算式による値V2と比較照合し、一致した場合にサーバを認証する認証結果判断手段をさらに備え、
前記サーバは、
前記値MKを入力として所定の計算式により値V2を求め、端末装置へ送信するとともに、前記端末装置から受信した値V1と前記値MKを入力として所定の計算式による値V1と比較照合し、一致した場合に端末装置を認証する認証結果判断手段をさらに備えた
ことを特徴とする請求項1または2に記載の認証システム。
【請求項4】
前記端末装置及びサーバは、相互の認証が行われた場合に、セッション鍵を生成するセッション鍵生成手段をそれぞれに備えたことを特徴とする請求項3に記載の認証システム。
【請求項5】
前記認証情報P’は、多項式であることを特徴とする請求項1から4のいずれかに記載の認証システム。
【請求項6】
前記認証情報P’は、多項式とハッシュ関数であることを特徴とする請求項1から4のいずれかに記載の認証システム。
【請求項7】
前記認証情報P’は、ハッシュ関数であることを特徴とする請求項1から4のいずれかに記載の認証システム。
【請求項8】
前記認証情報P’は、疑似乱数関数であることを特徴とする請求項1から4のいずれかに記載の認証システム。
【請求項9】
端末装置とサーバ間において相互に認証を行う認証システムにおける端末装置上で動作する認証プログラムであって、
ユーザ保存用の認証情報P’を予め記憶しておく記憶処理と、
前記記憶しておいた認証情報P’と認証時に入力されたパスワードを入力として所定の計算式により値Pを求める結合処理と、
前記値Pと内部において発生させた乱数を入力として所定の計算式により値Y1を求め、前記サーバへ送信するマスク演算処理と、
前記値Pと内部において発生させた乱数と前記サーバから受信した値Y2を入力として所定の計算式により値MKを求めるマスター鍵生成処理と
をコンピュータに行わせることを特徴とする認証プログラム。
【請求項10】
ユーザが予め決定したパスワードに基づいて、前記認証情報P’を求めるデータ伸長処理をさらにコンピュータに行わせることを特徴とする請求項9に記載の認証プログラム。
【請求項11】
前記値MKを入力として所定の計算式により値V1を求め、サーバへ送信するとともに、前記サーバから受信した値V2と前記値MKを入力として所定の計算式による値V2と比較照合し、一致した場合にサーバを認証する認証結果判断処理をさらにコンピュータに行わせることを特徴とする請求項9または10に記載の認証プログラム。
【請求項12】
端末装置とサーバ間において相互に認証を行う認証システムにおけるサーバ上で動作する認証プログラムであって、
サーバ登録用のパスワード認証データHを予め記憶しておく記憶処理と、
前記記憶しておいたパスワード認証データHと内部において発生させた乱数を入力として所定の計算式により値Y2を求め、前記端末装置へ送信するマスク演算処理と、
前記パスワード認証データHと内部において発生させた乱数と前記端末装置から受信した値Y1を入力として所定の計算式により値MKを求めるマスター鍵生成処理と
をコンピュータに行わせることを特徴とする認証プログラム。
【請求項13】
ユーザが予め決定したパスワードに基づいて、前記パスワード認証データHを求めるデータ伸長処理をさらにコンピュータに行わせることを特徴とする請求項12に記載の認証プログラム。
【請求項14】
前記値MKを入力として所定の計算式により値V2を求め、端末装置へ送信するとともに、前記端末装置から受信した値V1と前記値MKを入力として所定の計算式による値V1と比較照合し、一致した場合に端末装置を認証する認証結果判断処理をさらにコンピュータに行わせることを特徴とする請求項12または13に記載の認証プログラム。
【請求項15】
端末装置及びサーバにおいて相互の認証が行われた場合に、セッション鍵を生成するセッション鍵生成処理をそれぞれに備えたことを特徴とする請求項11または14に記載の認証プログラム。
【請求項16】
前記認証情報P’は、多項式であることを特徴とする請求項9から15のいずれかに記載の認証プログラム。
【請求項17】
前記認証情報P’は、多項式とハッシュ関数であることを特徴とする請求項9から15のいずれかに記載の認証プログラム。
【請求項18】
前記認証情報P’は、ハッシュ関数であることを特徴とする請求項9から15のいずれかに記載の認証プログラム。
【請求項19】
前記認証情報P’は、疑似乱数関数であることを特徴とする請求項9から15のいずれかに記載の認証プログラム。
【請求項20】
前記端末装置は、
更新情報T’を発生させる発生手段と、
前記記憶手段に記憶されている認証情報P’と前記更新情報T’を入力し、所定の計算式によってサーバ更新用のパスワード認証データH’と新たな認証情報P’を求め、サーバ更新用のパスワード認証データH’を前記サーバへ送信するとともに、新たな認証情報P’を前記記憶手段に記憶する更新情報生成手段と
を備え、
前記サーバは、
前記端末装置から送信されたサーバ更新用のパスワード認証データH’と前記記憶手段に記憶されたパスワード認証データHを入力し、所定の計算式によって新たなパスワード認証データHを求めて前記記憶手段に記憶されているパスワード認証データHを更新する更新情報生成手段を備えた
ことを特徴とする請求項2に記載の認証システム。
【請求項21】
前記端末装置は、
秘密情報S’を発生させる発生手段と、
前記記憶手段に記憶されている認証情報P’と前記秘密情報S’と新しいパスワードを入力し、所定の計算式によってサーバ更新用のパスワード認証データH’と新たな認証情報P’を求め、サーバ更新用のパスワード認証データH’を前記サーバへ送信するとともに、新たな認証情報P’を前記記憶手段に記憶する更新情報生成手段と
を備え、
前記サーバは、
前記端末装置から送信されたサーバ更新用のパスワード認証データH’と前記記憶手段に記憶されたパスワード認証データHを入力し、所定の計算式によって新たなパスワード認証データHを求めて前記記憶手段に記憶されているパスワード認証データHを更新する更新情報生成手段を備えた
ことを特徴とする請求項2に記載の認証システム。
【請求項22】
端末装置とサーバ間において相互に認証を行う認証システムであって、
前記端末装置は、
ユーザ保存用の認証情報P’とRSA公開鍵(N,e)を予め記憶しておく記憶手段と、
前記記憶手段から読み出した認証情報P’と認証時に入力されたパスワードを入力として所定の計算式により値Wを求める結合手段と、
前記値Wと前記記憶手段から読み出したRSA公開鍵(N,e)と内部において発生させた乱数Tを入力として所定の計算式により値Zを求め、前記サーバへ送信するマスク演算手段と
を備え、
前記サーバは、
サーバ登録用のパスワード認証データHとRSA秘密鍵(N,d)を予め記憶しておく記憶手段と、
前記記憶手段から読み出したパスワード認証データHとRSA秘密鍵(N,d)と前記端末装置から受信した値Zを入力として所定の計算式により値Tを求めるマスター鍵生成手段と
を備えたことを特徴とする認証システム。
【請求項23】
ユーザが予め決定したパスワードに基づいて、前記パスワード認証データHと前記認証情報P’を求めるデータ伸長手段をさらに備えたことを特徴とする請求項22に記載の認証システム。
【請求項24】
前記RSA公開鍵(N,e)と前記RSA秘密鍵(N,d)を求めるRSA鍵生成手段をさらに備えたことを特徴とする請求項22に記載の認証システム。
【請求項25】
前記端末装置は、
前記サーバから受信した値V2と前記乱数Tを入力として所定の計算式による値V2と比較照合し、一致した場合にサーバを認証する認証結果判断手段と、
前記乱数Tを入力として所定の計算式により値V1を求め、前記サーバへ送信する検証子生成手段をさらに備え、
前記サーバは、
前記値Tを入力として所定の計算式により値V2を求め、前記端末装置へ送信する検証子生成手段と、
前記端末装置から受信した値V1と前記値Tを入力として所定の計算式による値V1と比較照合し、一致した場合に端末装置を認証する認証結果判断手段をさらに備えた
ことを特徴とする請求項22、23または24に記載の認証システム。
【請求項26】
前記端末装置及びサーバは、相互の認証が行われた場合に、セッション鍵を生成するセッション鍵生成手段をそれぞれに備えたことを特徴とする請求項25に記載の認証システム。
【請求項27】
前記認証情報P’は、多項式とFDH関数であることを特徴とする請求項22から26のいずれかに記載の認証システム。
【請求項28】
前記認証情報P’は、FDH関数であることを特徴とする請求項22から26のいずれかに記載の認証システム。
【請求項29】
前記RSA公開鍵(N,e)は、安全な通信を用いることを特徴とする請求項22から26のいずれかに記載の認証システム。
【請求項30】
前記RSA公開鍵(N,e)は、安全ではない通信を用いることを特徴とする請求項22から26のいずれかに記載の認証システム。
【請求項31】
端末装置とサーバ間において相互に認証を行う認証システムにおける端末装置上で動作する認証プログラムであって、
ユーザ保存用の認証情報P’とRSA公開鍵(N,e)を予め記憶しておく記憶処理と、
前記記憶しておいた認証情報P’と認証時に入力されたパスワードを入力として所定の計算式により値Wを求める結合処理と、
前記値Wと前記記憶しておいたRSA公開鍵(N,e)と内部において発生させた乱数Tを入力として所定の計算式により値Zを求め、前記サーバへ送信するマスク演算処理と
をコンピュータに行わせることを特徴とする認証プログラム。
【請求項32】
ユーザが予め決定したパスワードに基づいて、前記認証情報P’を求めるデータ伸長処理をさらにコンピュータに行わせることを特徴とする請求項31に記載の認証プログラム。
【請求項33】
前記RSA公開鍵(N,e)を求めるRSA鍵生成処理をさらにコンピュータに行わせることを特徴とする請求項31に記載の認証プログラム。
【請求項34】
前記サーバから受信した値V2と前記乱数Tを入力として所定の計算式による値V2と比較照合し、一致した場合にサーバを認証する認証結果判断処理と、
前記乱数Tを入力として所定の計算式により値V1を求め、前記サーバへ送信する検証子生成処理をさらにコンピュータに行わせることを特徴とする請求項31、32または33に記載の認証プログラム。
【請求項35】
端末装置とサーバ間において相互に認証を行う認証システムにおけるサーバ上で動作する認証プログラムであって、
サーバ登録用のパスワード認証データHとRSA秘密鍵(N,d)を予め記憶しておく記憶処理と、
前記記憶しておいたパスワード認証データHとRSA秘密鍵(N,d)と前記端末装置から受信した値Zを入力として所定の計算式により値Tを求めるマスター鍵生成処理と
をコンピュータに行わせることを特徴とする認証プログラム。
【請求項36】
ユーザが予め決定したパスワードに基づいて、前記パスワード認証データHを求めるデータ伸長処理をさらにコンピュータに行わせることを特徴とする請求項35に記載の認証プログラム。
【請求項37】
前記RSA秘密鍵(N,d)を求めるRSA鍵生成処理をさらにコンピュータに行わせることを特徴とする請求項35に記載の認証プログラム。
【請求項38】
前記値Tを入力として所定の計算式により値V2を求め、前記端末装置へ送信する検証子生成処理と、
前記端末装置から受信した値V1と前記値Tを入力として所定の計算式による値V1と比較照合し、一致した場合に端末装置を認証する認証結果判断処理をさらにコンピュータに行わせることを特徴とする請求項35、36または37に記載の認証プログラム。
【請求項39】
端末装置及びサーバにおいて相互の認証が行われた場合に、セッション鍵を生成するセッション鍵生成処理をそれぞれに備えたことを特徴とする請求項34または38に記載の認証プログラム。
【請求項40】
前記認証情報P’は、多項式とFDH関数であることを特徴とする請求項31から39のいずれかに記載の認証プログラム。
【請求項41】
前記認証情報P’は、FDH関数であることを特徴とする請求項31から39のいずれかに記載の認証プログラム。
【請求項42】
前記RSA公開鍵(N,e)は、安全な通信を用いることを特徴とする請求項31から39のいずれかに記載の認証プログラム。
【請求項43】
前記RSA公開鍵(N,e)は、安全ではない通信を用いることを特徴とする請求項31から39のいずれかに記載の認証プログラム。
【請求項44】
前記端末装置は、
更新情報T’を発生させる発生手段と、
前記記憶手段に記憶されている認証情報P’と前記更新情報T’を入力し、所定の計算式によってサーバ更新用のパスワード認証データH’と新たな認証情報P’を求め、サーバ更新用のパスワード認証データH’を前記サーバへ送信するとともに、新たな認証情報P’を前記記憶手段に記憶する更新情報生成手段と
を備え、
前記サーバは、
前記端末装置から送信されたサーバ更新用のパスワード認証データH’と前記記憶手段に記憶されたパスワード認証データHを入力し、所定の計算式によって新たなパスワード認証データHを求めて前記記憶手段に記憶されているパスワード認証データHを更新する更新情報生成手段を備えた
ことを特徴とする請求項23に記載の認証システム。
【請求項45】
前記端末装置は、
前記記憶手段に記憶されている認証情報P’と前記乱数Tを入力し、所定の計算式によって新たな認証情報P’を求め、新たな認証情報P’を前記記憶手段に記憶する更新情報生成手段と
を備え、
前記サーバは、
前記記憶手段に記憶されたパスワード認証データHと前記マスター鍵生成手段によって求めた値Tを入力し、所定の計算式によって新たなパスワード認証データHを求めて前記記憶手段に記憶されているパスワード認証データHを更新する更新情報生成手段を備えた
ことを特徴とする請求項22に記載の認証システム。
【請求項46】
前記端末装置は、
秘密情報S’を発生させる発生手段と、
前記記憶手段に記憶されている認証情報P’と前記秘密情報S’と新しいパスワードを入力し、所定の計算式によってサーバ更新用のパスワード認証データH’と新たな認証情報P’を求め、サーバ更新用のパスワード認証データH’を前記サーバへ送信するとともに、新たな認証情報P’を前記記憶手段に記憶する更新情報生成手段と
を備え、
前記サーバは、
前記端末装置から送信されたサーバ更新用のパスワード認証データH’と前記記憶手段に記憶されたパスワード認証データHを入力し、所定の計算式によって新たなパスワード認証データHを求めて前記記憶手段に記憶されているパスワード認証データHを更新する更新情報生成手段を備えた
ことを特徴とする請求項23に記載の認証システム。
【請求項47】
端末装置と複数のサーバ間において相互に認証を行い、前記端末装置内の保存対象のデータを前記サーバ内に分散して保存する遠隔分散保存システムであって、
前記端末装置は、
ユーザが予め決定しておいたパスワードに基づいて、サーバ登録用のパスワード認証データHとユーザ保存用の認証情報P’を求めるデータ伸長手段と、
前記データ伸長手段によって求めた認証情報P’を予め記憶しておく記憶手段と、
前記記憶手段から読み出した認証情報P’と認証時に入力されたパスワードを入力として所定の計算式により値Pを求める結合手段と、
前記値Pと内部において発生させた乱数を入力として所定の計算式により値Y1を求め、前記サーバへ送信するマスク演算手段と、
前記値Pと内部において発生させた乱数と前記サーバから受信した値Y2を入力として所定の計算式により値MKを求めるマスター鍵生成手段と、
前記値MKを入力として所定の計算式により値V1を求め、サーバへ送信するとともに、前記サーバから受信した値V2と値V1と比較照合し、一致した場合にサーバを認証する認証結果判断手段と、
サーバの認証が行われた場合に、セッション鍵SKをサーバの数だけ生成するセッション鍵生成手段と、
前記保存対象のデータを分割して、認証したサーバの数と同数の分割データを得るデータ分割手段と、
前記分割データのそれぞれと保存対象のデータを識別する識別情報とを、保存先のサーバと共有した前記セッション鍵SKを用いて暗号化して、各サーバに対して送信するデータ保存手段と、
分割データが保存された各サーバから分割データを受信し、前記保存対象のデータを復元するデータ復元手段と
を備え、
前記サーバは、
前記データ伸長手段によって求めたパスワード認証データHを予め記憶しておく記憶手段と、
前記記憶手段から読み出したパスワード認証データHと内部において発生させた乱数を入力として所定の計算式により値Y2を求め、前記端末装置へ送信するマスク演算手段と、
前記パスワード認証データHと内部において発生させた乱数と前記端末装置から受信した値Y1を入力として所定の計算式により値MKを求めるマスター鍵生成手段と、
前記値MKを入力として所定の計算式により値V2を求め、端末装置へ送信するとともに、前記端末装置から受信した値V1と値V2と比較照合し、一致した場合に端末装置を認証する認証結果判断手段と、
端末装置の認証が行われた場合に、セッション鍵を生成するセッション鍵生成手段と、
端末装置から受信した分割データを受信するデータ受信手段と、
前記分割データを記憶するデータ記憶手段と、
前記データ記憶手段に保存されている分割データを読み出して端末装置へ送信するデータ送信手段と
を備えたことを特徴とする遠隔分散保存システム。
【請求項48】
前記分割データの一部を前記端末装置内に保存することを特徴とする請求項47に記載の遠隔分散保存システム。
【請求項49】
端末装置と複数のサーバ間において相互に認証を行い、前記端末装置内の保存対象のデータを前記サーバ内に分散して保存する遠隔分散保存システムにおける端末装置上で動作する遠隔分散保存プログラムであって、
ユーザが予め決定しておいたパスワードに基づいて、サーバ登録用のパスワード認証データHとユーザ保存用の認証情報P’を求めるデータ伸長処理と、
前記データ伸長処理によって求めた認証情報P’を予め記憶しておく記憶処理と、
前記記憶処理から読み出した認証情報P’と認証時に入力されたパスワードを入力として所定の計算式により値Pを求める結合処理と、
前記値Pと内部において発生させた乱数を入力として所定の計算式により値Y1を求め、前記サーバへ送信するマスク演算処理と、
前記値Pと内部において発生させた乱数と前記サーバから受信した値Y2を入力として所定の計算式により値MKを求めるマスター鍵生成処理と、
前記値MKを入力として所定の計算式により値V1を求め、サーバへ送信するとともに、前記サーバから受信した値V2と値V1と比較照合し、一致した場合にサーバを認証する認証結果判断処理と、
サーバの認証が行われた場合に、セッション鍵SKをサーバの数だけ生成するセッション鍵生成処理と、
前記保存対象のデータを分割して、認証したサーバの数と同数の分割データを得るデータ分割処理と、
前記分割データのそれぞれと保存対象のデータを識別する識別情報とを、保存先のサーバと共有した前記セッション鍵SKを用いて暗号化して、各サーバに対して送信するデータ保存処理と、
分割データが保存された各サーバから分割データを受信し、前記保存対象のデータを復元するデータ復元処理と
をコンピュータに行わせることを特徴とする遠隔分散保存プログラム
【請求項50】
端末装置と複数のサーバ間において相互に認証を行い、前記端末装置内の保存対象のデータを前記サーバ内に分散して保存する遠隔分散保存システムにおけるサーバ上で動作する遠隔分散保存プログラムであって、
データ伸長処理によって求めたパスワード認証データHを予め記憶しておく記憶処理と、
前記記憶処理から読み出したパスワード認証データHと内部において発生させた乱数を入力として所定の計算式により値Y2を求め、前記端末装置へ送信するマスク演算処理と、
前記パスワード認証データHと内部において発生させた乱数と前記端末装置から受信した値Y1を入力として所定の計算式により値MKを求めるマスター鍵生成処理と、
前記値MKを入力として所定の計算式により値V2を求め、端末装置へ送信するとともに、前記端末装置から受信した値V1と値V2と比較照合し、一致した場合に端末装置を認証する認証結果判断処理と、
端末装置の認証が行われた場合に、セッション鍵を生成するセッション鍵生成処理と、
端末装置から受信した分割データを受信するデータ受信処理と、
前記分割データを記憶するデータ記憶処理と、
前記データ記憶処理に保存されている分割データを読み出して端末装置へ送信するデータ送信処理と
をコンピュータに行わせることを特徴とする遠隔分散保存プログラム。

【国際公開番号】WO2005/041474
【国際公開日】平成17年5月6日(2005.5.6)
【発行日】平成19年4月26日(2007.4.26)
【国際特許分類】
【出願番号】特願2005−514934(P2005−514934)
【国際出願番号】PCT/JP2004/015184
【国際出願日】平成16年10月7日(2004.10.7)
【出願人】(801000049)財団法人生産技術研究奨励会 (72)
【Fターム(参考)】