説明

認証方法、認証システム、プログラムおよび共有鍵生成方法

【課題】検証者側内部状態が攻撃者に漏洩する、または証明者側の端末が攻撃者の支配下に置かれるという環境において、短いパスワードが漏洩しない認証方法を提供する。
【解決手段】証明者端末は、乱数Bを生成し、識別子IとパスワードAが入力されると、検証者装置にIを送信する。検証者装置は、乱数Dを生成して証明者端末に送信し、証明者端末は、R=H(D)、Y=Gを計算し、Yを検証者装置に送信する。さらに、証明者端末は、識別子IとパスワードAが入力されると、検証者装置にIを送信する。検証者装置は、R=H(D)を計算し、乱数uを生成して、S=G,T=R、証明情報πを計算して、証明者端末にS,T,πを送信する。証明者端末は、πを検証し、検証が合格であればX=Sを計算し、乱数Mを生成し、V=h(X,M)を計算して、(V,M)を検証者装置に送信する。検証者装置は、V=h(Y,M)を確認する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、エンティティの同一性を認証する技術、または同一のエンティティ間に限り秘密鍵を共有する技術に関する。
【背景技術】
【0002】
ネットワークサービスにサービス提供者と利用者があり、提供者がサービスを実施するときに、利用者が提供者に対して、利用者にはサービスの提供を受ける権利があることを証明するためのシステムを考える。そのためには、利用者は、サービス利用の権利が発生した時に、利用者を識別する情報と、その利用者のみが知る秘密情報の組を提供者に登録し、サービスが実施される際には、実施に先立ち、利用者は、利用者を識別する情報を提示し、さらに登録時に用いた秘密情報を知っていることを証明する方法をとることができる。
【0003】
以下では、サービス利用者を証明者、サービス提供者を検証者と呼ぶことにする。また、利用者を識別する情報を識別子と呼び、利用者のみが知る秘密情報をパスワードと呼ぶ。上記認証方法をパスワード認証方法と呼び、うち登録部分の手続きをパスワード登録、証明部分をパスワード認証と呼ぶこととする。パスワード認証方法を実現するシステムに対する攻撃とは、パスワードを知らない攻撃者が何らかの手段を講じた後に、検証者と通信することで、パスワードを知る証明者になり済ますことができることをいう。攻撃が困難なシステムを安全と呼ぶ。
【0004】
パスワード認証方法を実現する自明なシステムの構成例は、次の通りである。あらかじめ一方向関数hの仕様を定め、検証者と証明者で合意してあると仮定する。
(パスワード登録)
証明者は、パスワードpを一定のパスワード集合Pから任意に選び、秘密裏に記録する。証明者は、識別子iとs=h(p)を検証者に送信し、検証者は(i,s)を記録する。
(パスワード認証)
証明者は、識別子iとパスワードpを検証者に送信する。検証者はh(p)を計算し、あらかじめ記録された情報(i,s)と照合する。
【0005】
このようなシステムにおいては、パスワード集合が小さい場合に安全性に問題が生じる場合がある。たとえば銀行ATMや携帯端末におけるネットワークサービスなどでは、パスワード集合Pが10進4桁の数であることが要請される場合がある。
攻撃者にとって検証者に蓄積された情報(i,s)を取得可能な攻撃環境を想定するとき、パスワード集合Pが十分小さければ、攻撃者は総当たり攻撃によってパスワードを推測することができる。このように可能性がある秘密情報を全数試行する攻撃手法を、辞書攻撃と呼ぶ。上記システムは、攻撃者がサーバの内部情報を知ることができる攻撃環境の下で、パスワードについての辞書攻撃に対して安全ではない。このようなシステムにおいては、検証者側の内部情報が漏洩する攻撃環境において、パスワードが推測可能である。
【0006】
この課題を克服した従来技術に、ゼロ知識証明を用いた認証がある。ゼロ知識証明を用いた認証方法は、たとえば特許文献1に具体例が記載されている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開平9−51330号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、従来技術のゼロ知識証明を用いた認証においては、証明者側の端末が攻撃者の支配下に置かれるという環境において、短いパスワードが漏洩するという安全性の課題がある。パスワードの知識を証明する従来技術のゼロ知識証明を用いた場合、証明者の端末の乱数源を制御可能な攻撃環境において、秘密情報を抽出することができるという課題がある。また、ゼロ知識証明を用いた認証方法は複雑であるから、ゼロ知識証明を用いない認証方法と比較して、実装の手間や費用、実施に要する時間や費用が大きいという課題がある。
【0009】
本発明は、このような課題に鑑みてなされたものであり、本発明の目的は、検証者側内部状態が攻撃者に漏洩する、または証明者側の端末が攻撃者の支配下に置かれるという環境において、短いパスワードが漏洩しない認証の技術を提供することにある。
【課題を解決するための手段】
【0010】
本発明は、ゼロ知識証明で、証明者端末の内部情報を取得する攻撃環境や、証明者端末の内部の疑似乱数源を制御される攻撃環境で、パスワードが漏洩しないものを用いるものである。また、そのようなゼロ知識証明を利用した認証方法で、検証者と証明者の間の交信は一往復であるものを用いることで、実装の手間や費用、実施に要する時間や費用が大きくなる課題を解決するものである。
【0011】
上記課題を解決するため、本発明の認証方法は、証明者端末にて証明者からの識別子IとパスワードAを受け付けて、検証者装置によって当該証明者を認証する方法であって、前記証明者端末と前記検証者装置の双方は、巡回群の値Gと、第1関数Hと、第2関数hとを共有しており、前記証明者端末は、証明者端末によって生成した第1の任意数Bと、前記検証者装置によって生成された第2の任意数Dを受信して算出した第1関数Hの値Rと、パスワードAと、前記巡回群の値Gとを保持しており、前記検証者装置は、前記識別子Iと、前記第2の任意数Dと、前記証明者端末から受信した、第1の任意数Bと値RとパスワードAと巡回群の値Gから定まる第1パラメータYとを予め記憶しており、前記証明者端末が、証明者からの識別子IとパスワードAの入力を受け付けて、前記検証者装置に識別子Iを送信するステップと、前記検証者装置が、識別子Iを受信して、受信した識別子Iと予め記憶している識別子Iとを検証し、一致した場合に予め記憶している第2の任意数Dを用いて、第2の任意数Dから定まる第1関数Hの値Rを算出し、第3の任意数uを生成し、前記巡回群の値Gと第3の任意数uで定まる第1の値Sと、値Rと第3の任意数uで定まる第2の値Tとを算出し、前記証明者端末に第1の値Sと第2の値Tを送信するステップと、前記証明者端末が、前記第1の値Sと前記第2の値Tを受信して、前記第1の値Sと、前記パスワードAと、前記第2の値Tと、前記第1の任意数Bとから定まる第2のパラメータXを算出するとともに、該第2のパラメータXと当該証明者端末によって生成した第4の任意数Mから定まる第2関数hの値Vを算出し、算出した値Vと第4の任意数Mを前記検証者装置に送信するステップと、前記検証者装置が、値Vと第4の任意数Mを受信して、前記第1のパラメータYと第3の任意数uで定まる第3の値と、第4の任意数Mとで定まる第2関数hの値Vを算出し、算出した値Vを用いて、前記受信した値Vを検証するステップとを含むことを特徴とする。
【0012】
本発明の認証方法は、前記検証者装置が、前記第1の値Sかつ前記第2の値Tとなる前記第3の任意数uの非対話的ゼロ知識証明となる証明情報πを算出し、算出した証明情報πを前記証明者端末に送信するステップと、前記証明者端末が、前記証明情報πを受信し、証明情報πを検証するステップとを更に含むことが好ましい。
【0013】
また、前記第1関数Hは、ハッシュ関数であって、値Rは、R=H(D)で表され、前記第1パラメータYは、Y=Gで表され、前記第1の値Sは、S=Gで表され、前記第2の値Tは、T=Rで表され、前記第2のパラメータXは、X=Sで表され、前記第2関数hは、ハッシュ関数であって、前記証明者端末が算出する値Vは、V=h(X,M)で表され、前記検証者装置が算出する値Vは、V=h(Y,M)で表され、前記証明情報πは、任意数wとし、nをGの位数としたとき、π=(z,c)(ここに、W=G、W=R、c=h(W,W)、z=−cu+w(mod n))で表され、前記検証するステップは、h(G,R)=cを満たすか否かで検証することが好ましい。
【0014】
また、本発明の認証システムは、証明者端末にて証明者からの識別子IとパスワードAを受け付けて、検証者装置によって当該証明者を認証する認証システムであって、前記証明者端末と前記検証者装置の双方は、巡回群の値Gと、第1関数Hと、第2関数hとを共有しており、前記証明者端末が、証明者端末によって生成した第1の任意数Bと、前記検証者装置によって生成された第2の任意数Dを受信して算出した第1関数Hの値Rと、パスワードAと、前記巡回群の値Gとを保持する手段と、証明者からの識別子IとパスワードAの入力を受け付けて、前記検証者装置に識別子Iを送信する手段と、前記検証者装置から、前記巡回群の値Gと検証者装置によって生成した第3の任意数uで定まる第1の値Sと、前記第2の任意数Dから定まる第1関数Hの値Rと第3の任意数uで定まる第2の値Tとを受信する手段と、受信した前記第1の値Sと、前記パスワードAと、受信した前記第2の値Tと、前記第1の任意数Bとから第2のパラメータXを算出し、第2のパラメータXと第4の任意数Mから定まる第2関数hの値Vを算出し、算出した値Vと第4の任意数Mを前記検証者装置に送信する手段とを備え、前記検証者装置が、前記識別子Iと、前記第2の任意数Dと、前記証明者端末から受信した、第1の任意数Bと値RとパスワードAと巡回群の値Gから定まる第1パラメータYとを予め記憶する手段と、前記証明者端末から、証明者の識別子Iを受信する手段と、受信した識別子Iと予め記憶している識別子Iとを検証し、一致した場合に予め記憶している第2の任意数Dを用いて、第2の任意数Dから定まる第1関数Hの値Rを算出し、第3の任意数uを生成し、前記巡回群の値Gと第3の任意数uで定まる第1の値Sと、値Rと第3の任意数uで定まる第2の値Tとを算出し、前記証明者端末に第1の値Sと第2の値Tを送信する手段と、前記証明者端末から、前記第1の値S、前記パスワードA、前記第2の値T、および前記第1の任意数Bから算出された第2のパラメータXと、証明者端末によって生成した第4の任意数Mとで定まる第2関数hの値Vを受信するとともに、前記第4の任意数Mを受信する手段と、前記第1のパラメータYと第3の任意数uで定まる第3の値と、受信した第4の任意数Mとで定まる第2関数hの値Vを算出し、算出した値Vを用いて、前記受信した値Vを検証する
手段とを備えることを特徴とする。
【0015】
また、本発明の証明者端末は、証明者端末によって生成した第1の任意数Bと、前記検証者装置によって生成された第2の任意数Dを受信して算出した第1関数Hの値Rと、パスワードAと、前記巡回群の値Gとを保持する手段と、証明者からの識別子IとパスワードAの入力を受け付けて、前記検証者装置に識別子Iを送信する手段と、前記検証者装置から、前記巡回群の値Gと検証者装置によって生成した第3の任意数uで定まる第1の値Sと、前記第2の任意数Dから定まる第1関数Hの値Rと第3の任意数uで定まる第2の値Tとを受信する手段と、受信した前記第1の値Sと、前記パスワードAと、受信した前記第2の値Tと、前記第1の任意数Bとから第2のパラメータXを算出し、第2のパラメータXと第4の任意数Mから定まる第2関数hの値Vを算出し、算出した値Vと第4の任意数Mを前記検証者装置に送信する手段とを備えることを特徴とする。
【0016】
また、本発明の検証者装置は、前記識別子Iと、前記第2の任意数Dと、前記証明者端末から受信した、第1の任意数Bと値RとパスワードAと巡回群の値Gから定まる第1パラメータYとを予め記憶する手段と、前記証明者端末から、証明者の識別子Iを受信する手段と、受信した識別子Iと予め記憶している識別子Iとを検証し、一致した場合に予め記憶している第2の任意数Dを用いて、第2の任意数Dから定まる第1関数Hの値Rを算出し、第3の任意数uを生成し、前記巡回群の値Gと第3の任意数uで定まる第1の値Sと、値Rと第3の任意数uで定まる第2の値Tとを算出し、前記証明者端末に第1の値Sと第2の値Tを送信する手段と、前記証明者端末から、前記第1の値S、前記パスワードA、前記第2の値T、および前記第1の任意数Bから算出された第2のパラメータXと、証明者端末によって生成した第4の任意数Mとで定まる第2関数hの値Vを受信するとともに、前記第4の任意数Mを受信する手段と、前記第1のパラメータYと第3の任意数uで定まる第3の値と、受信した第4の任意数Mとで定まる第2関数hの値Vを算出し、算出した値Vを用いて、前記受信した値Vを検証する手段とを備えることを特徴とする。
【0017】
また、本発明は、コンピュータに前記認証システムの証明者端末の機能を実現させるプログラムであって、証明者からの識別子IとパスワードAの入力を受け付けて、検証者装置に識別子Iを送信するステップと、前記検証者装置から、前記巡回群の値Gと検証者装置によって生成した第3の任意数uで定まる第1の値Sと、前記第2の任意数Dから定まる第1関数Hの値Rと第3の任意数uで定まる第2の値Tとを受信するステップと、受信した前記第1の値Sと、前記パスワードAと、受信した前記第2の値Tと、前記第1の任意数Bとから第2のパラメータXを算出し、第2のパラメータXと第4の任意数Mから定まる第2関数hの値Vを算出し、算出した値Vと第4の任意数Mを前記検証者装置に送信するステップとを実行させるためのプログラムである。
【0018】
また、本発明は、コンピュータに前記認証システムの検証者装置の機能を実現させるプログラムであって、前記証明者端末から、証明者の識別子Iを受信するステップと、受信した識別子Iと予め記憶している識別子Iとを検証し、一致した場合に予め記憶している第2の任意数Dを用いて、第2の任意数Dから定まる第1関数Hの値Rを算出し、第3の任意数uを生成し、前記巡回群の値Gと第3の任意数uで定まる第1の値Sと、値Rと第3の任意数uで定まる第2の値Tとを算出し、前記証明者端末に第1の値Sと第2の値Tを送信するステップと、前記証明者端末から、前記第1の値S、前記パスワードA、前記第2の値T、および前記第1の任意数Bから算出された第2のパラメータXと、証明者端末によって生成した第4の任意数Mとで定まる第2関数hの値Vを受信するとともに、前記第4の任意数Mを受信するステップと、前記第1のパラメータYと第3の任意数uで定まる第3の値と、受信した第4の任意数Mとで定まる第2関数hの値Vを算出し、算出した値Vを用いて、前記受信した値Vを検証するステップとを実行させるためのプログラムである。
【0019】
また、本発明の共有鍵生成方法は、証明者端末と検証者装置の双方において使用される共有鍵を生成する共有鍵生成方法であって、前記証明者端末と前記検証者装置の双方は、巡回群の値Gと、第1関数Hと、第2関数hとを共有しており、前記証明者端末は、証明者端末によって生成した第1の任意数Bと、前記検証者装置によって生成された第2の任意数Dを受信して算出した第1関数Hの値Rと、証明者から受け付けたパスワードAと、前記巡回群の値Gとを保持しており、前記検証者装置は、証明者の識別子Iと、前記第2の任意数Dと、前記証明者端末から受信した、第1の任意数Bと値RとパスワードAと巡回群の値Gから定まる第1パラメータYとを予め記憶しており、前記証明者端末が、証明者からの識別子IとパスワードAの入力を受け付けて、前記検証者装置に識別子Iを送信するステップと、前記検証者装置が、識別子Iを受信して、受信した識別子Iと予め記憶している識別子Iとを検証し、一致した場合に予め記憶している第2の任意数Dを用いて、第2の任意数Dから定まる第1関数Hの値Rを算出し、第3の任意数uを生成し、前記巡回群の値Gと第3の任意数uで定まる第1の値Sと、値Rと第3の任意数uで定まる第2の値Tとを算出し、前記証明者端末に第1の値Sと第2の値Tを送信するステップと、前記証明者端末が、前記第1の値Sと前記第2の値Tを受信して、前記第1の値Sと、前記パスワードAと、前記第2の値Tと、前記第1の任意数Bとから第2のパラメータXを算出し、証明者端末によって生成した第4の任意数Mを第2のパラメータXで暗号化して値Vを算出し、算出した値Vを前記検証者装置に送信するステップと、前記検証者装置が、値Vを受信して、値Vを前記第1のパラメータYと第3の任意数uで定まる第3の値で復号化して値Mを算出し、値Mと検証者装置によって生成した第5の任意数Mとをビット結合したものを前記第3の値で暗号化して値Vを算出し、算出した値Vを前記検証者装置に送信するステップと、前記証明者端末が、値Vを受信して、値Vを前記第2のパラメータXで復号化して値Mを算出し、値Mが第5の任意数Mによって分解できるかどうかを確認し、分解できれば第5の任意数Mを第2のパラメータXで暗号化して値Vを算出し、前記検証者装置に値Vを送信し、値Mと第5の任意数
とをビット結合したもので定まる第2関数hの値を共有鍵Kとするステップと、前記検証者装置が、値Vを受信して、値Vを前記第3の値で復号化して値Mを算出し、算出した値Mを用いて、前記第5の任意数Mを検証し、検証が成功であれば値Mと第5の任意数Mとをビット結合したもので定まる第2関数hの値を共有鍵Kとするステップとを含むことを特徴とする。
【0020】
また、前記第1関数Hは、ハッシュ関数であって、値Rは、R=H(D)で表され、前記第1パラメータYは、Y=Gで表され、前記第1の値Sは、S=Gで表され、前記第2の値Tは、T=Rで表され、前記第2のパラメータXは、X=Sで表され、前記第4の任意数Mを第2のパラメータXで暗号化して算出する値Vは、V=E(M)で表され、前記値Vを前記第3の値で復号化して算出する値Mは、
【数1】

で表され、前記値Mと前記第5の任意数Mとをビット結合したものを前記第3の値で暗号化して算出する値Vは、
【数2】

で表され、前記第5の任意数Mを前記第2のパラメータXで暗号化して算出する値Vは、V=E(M)で表され、前記値Vを前記第3の値で復号化して算出する値Mは、
【数3】

で表され、前記第2関数hは、ハッシュ関数であることが好ましい。
【発明の効果】
【0021】
本発明は、パスワードの知識を証明する認証方法において、証明者の内部情報が漏洩する攻撃環境や、証明者端末の内部情報を取得する攻撃環境や、証明者端末の内部の疑似乱数源を制御される攻撃環境における安全性を向上させることができる。また、証明者の内部情報が漏洩する攻撃環境における安全性を向上させた認証方法において、実装の手間や費用、実施に要する時間や費用を少なくすることができる。
【図面の簡単な説明】
【0022】
【図1】証明者端末と検証者装置の構成図である。
【図2】設定段階における証明者端末と検証者装置の動作を説明するフローチャートである。
【図3】認証段階における証明者端末と検証者装置の動作を説明するフローチャートである。
【図4】共通鍵を求めるときの証明者端末と検証者装置の動作を説明するフローチャートである。
【発明を実施するための形態】
【0023】
本発明の実施の形態について図面を参照して説明する。以下において、kをセキュリティパラメータとして、〈G〉を離散対数問題がkに応じて困難である巡回群で元Gによって生成されるものとする。たとえば楕円エルガマル暗号で用いられる群などが好適である。以下、このような巡回群の暗号を用いる任意の点Gを単に巡回群の値Gと称する。
h:{0,1}→{0,1}2kおよびH:{0,1}→〈G〉をハッシュ関数とする。
【0024】
(第1の実施の形態)
第1の実施の形態は、証明者がパスワードを入力するための装置を備えた証明者端末と、検証者装置の間で実施される。実施される方式は、設定と認証の2段階からなる。
図1は、証明者端末と検証者装置の構成図である。証明者端末10は、証明者からのデータ入力を受け付ける入力部11と、検証者装置と通信を行う送受信部12と、制御部13と、各種演算を行う演算部14と、乱数を生成する乱数生成部15と、安全補強情報を蓄積するための静的記憶装置16を備える。このような認証者端末には、ICカードや、携帯端末、あるいは携帯端末上で動作する仮想マシンを想定することができる。
検証者装置20は、証明者端末と通信を行う送受信部22と、制御部23と、各種演算を行う演算部24と、乱数を生成する乱数生成部25と、証明者の識別子と証明者の認証に用いる認証情報との組を記録する静的記憶装置26を備える。このような検証者装置には一般的なPCやサーバなどを想定することができる。
なお、証明者端末10と検証者装置20は、予めhおよびHのハッシュ関数の仕様と、Gや巡回群の計算を行うために必要な情報、Gの位数を共有する。適切な巡回群の例としては、たとえば楕円曲線が考えられる。したがって、双方の装置は、楕円曲線を用いる場合、楕円パラメータと楕円の点Gの座標(x,y)の値、およびGの位数を共有している。
【0025】
図2は、設定段階における証明者端末と検証者装置の動作を説明するフローチャートである。設定段階において、証明者端末と検証者装置は次のようにふるまう。
証明者端末10は、乱数生成部15において2kビットの乱数Bを生成し、記憶装置16に記憶する(S100)。次に、入力部11から証明者の識別子とパスワードの入力を受け付ける(S101)。識別子をI、パスワードをAとする。次に、送受信部12から検証者装置20に識別子Iを送信する(S102)。
検証者装置20は、送受信部22を介して証明者端末10から識別子Iを受信すると(S103)、乱数生成部25において2kビットの乱数Dを生成し(S104)、生成された乱数Dを証明者端末10に送信する(S105)。
証明者端末10は、検証者装置20から値Dを受信すると(S106)、演算部14においてハッシュ値R=H(D)、Y=Gを計算し(S107)、計算して得られた値Yを検証者装置20に送信する(S108)。
検証者装置20は、証明者端末10から値Yを受信すると(S109)、(I,Y,D)を記憶装置26に記憶する(S110)。
【0026】
図3は、認証段階における証明者端末と検証者装置の動作を説明するフローチャートである。認証段階において、証明者端末と検証者装置は次のようにふるまう。
証明者端末10は、入力部11から証明者の識別子とパスワードの入力を受け付ける(S200)。識別子をI、パスワードをAとする。次に、送受信部12から検証者装置20に識別子Iを送信する(S201)。
検証者装置20は、送受信部22を介して証明者端末10から識別子Iを受信すると(S202)、記憶装置26から(I,Y,D)を読み出し、演算部24においてハッシュ値R=H(D)を計算する(S203)。次に、乱数生成部25において2kビットの乱数uを生成し(S204)、演算部24においてS=G,T=Rを計算し、証明情報πを計算する(S205)。次に、送受信部22から証明者端末10にS,T,πを送信する(S206)。
証明者端末10は、検証者装置20から値SおよびT、証明情報πを受信すると(S207)、制御部13において証明情報πを検証し(S208)、検証に不合格であれば処理を中止する。検証に合格すれば、記憶装置16から値Bを読み出し、演算部14においてX=Sを計算する(S209)。次に、乱数生成部15においてkビットの乱数Mを生成し(S210)、演算部14においてハッシュ値V=h(X,M)を計算する(S211)。計算して得られた(V,M)を検証者装置20に送信する(S212)。
検証者装置20は、証明者端末10から(V,M)を受信すると(S213)、制御部23においてV=h(Y,M)を確認する(S214)。V=h(Y,M)であれば認証合格のメッセージを出力する(S215)。それ以外の場合は機能を停止する。
【0027】
証明情報πの計算と検証は、S=GかつT=Rとなる数uの知識に関する非対話的ゼロ知識証明である。一例を次に述べる。πの計算のためには、2kビットの乱数wを生成し、W=G,W=R、c=h(W,W)、z=−cu+w(mod n)を計算し、π=(z,c)とする。ただしnはGの位数である。π=(z,c)の検証のためには、h(G,R)=cを満たすことを確認する。
【0028】
(第2の実施の形態)
認証段階の後半を置き換えることで共通鍵生成方法として機能する。E(M)は共通鍵暗号の暗号化を表し、D(C)は共通鍵暗号の復号化を表すものとする。ただしKは鍵、Mは平文、Cは暗号文である。
第1の実施の形態を共通鍵生成方法に変形すると、図4の通りである。登録段階と証明情報に関する手続は同様である。認証段階において、証明者端末と検証者装置は次のようにふるまう。
【0029】
証明者端末10は、入力部11から証明者の識別子とパスワードの入力を受け付ける(S300)。識別子をI、パスワードをAとする。次に、送受信部12から検証者装置20に識別子Iを送信する(S301)。
検証者装置20は、送受信部22を介して証明者端末10から識別子Iを受信すると(S302)、記憶装置26から(I,Y,D)を読み出し、演算部24においてハッシュ値R=H(D)を計算する(S303)。次に、乱数生成部25において2kビットの乱数uを生成し(S304)、演算部24においてS=G,T=Rを計算し、証明情報πを計算する(S305)。次に、送受信部22から証明者端末10にS,T,πを送信する(S306)。
【0030】
証明者端末10は、検証者装置20から値SおよびT、証明情報πを受信すると(S307)、制御部13において証明情報πを検証し(S308)、検証に不合格であれば処理を中止する。検証に合格すれば、記憶装置16から値Bを読み出し、演算部14においてX=Sを計算する(S309)。次に、乱数生成部15においてkビットの乱数Mを生成し(S310)、演算部14においてXを鍵としてV=E(M)を計算する(S311)。計算して得られたVを検証者装置20に送信する(S312)。
検証者装置20は、証明者端末10からVを受信すると(S313)、演算部24においてYを鍵として
【数4】

を計算する(S314)。次に、乱数生成部25においてkビットの乱数Mを生成し(S315)、演算部24においてYを鍵として
【数5】

を計算する(S316)。計算して得られたVを証明者端末10に送信する(S317)。
【0031】
証明者端末10は、Vを検証者装置20から受信すると(S318)、演算部14においてXを鍵としてM=D(V)を計算する(S319)。次に、制御部13において、ある文字列MによってM=M|Mと分解できるかどうかを確かめる(S320)。分解できなければ機能を停止する。なお、M|Mとは、MとMとをビット結合することを意味する。分解できたならば演算部14においてV=E(M)を計算する(S321)。計算して得られたVを検証者装置20に送信する(S322)。そして、共有鍵をK=h(M|M)とする(S323)。
検証者装置20は、証明者端末10からVを受信すると(S324)、制御部23において
【数6】

であることを確認する(S325)。確認できなければ、機能を停止する。確認できたならば、共有鍵をK=h(M|M)とする(S326)。
【符号の説明】
【0032】
10 証明者端末
11 入力部
12,22 送受信部
13,23 制御部
14,24 演算部
15,25 乱数生成部
16,26 記憶装置
20 検証者装置

【特許請求の範囲】
【請求項1】
証明者端末にて証明者からの識別子IとパスワードAを受け付けて、検証者装置によって当該証明者を認証する方法であって、
前記証明者端末と前記検証者装置の双方は、巡回群の値Gと、第1関数Hと、第2関数hとを共有しており、
前記証明者端末は、証明者端末によって生成した第1の任意数Bと、前記検証者装置によって生成された第2の任意数Dを受信して算出した第1関数Hの値Rと、パスワードAと、前記巡回群の値Gとを保持しており、
前記検証者装置は、前記識別子Iと、前記第2の任意数Dと、前記証明者端末から受信した、第1の任意数Bと値RとパスワードAと巡回群の値Gから定まる第1パラメータYとを予め記憶しており、
前記証明者端末が、証明者からの識別子IとパスワードAの入力を受け付けて、前記検証者装置に識別子Iを送信するステップと、
前記検証者装置が、識別子Iを受信して、受信した識別子Iと予め記憶している識別子Iとを検証し、一致した場合に予め記憶している第2の任意数Dを用いて、第2の任意数Dから定まる第1関数Hの値Rを算出し、第3の任意数uを生成し、前記巡回群の値Gと第3の任意数uで定まる第1の値Sと、値Rと第3の任意数uで定まる第2の値Tとを算出し、前記証明者端末に第1の値Sと第2の値Tを送信するステップと、
前記証明者端末が、前記第1の値Sと前記第2の値Tを受信して、前記第1の値Sと、前記パスワードAと、前記第2の値Tと、前記第1の任意数Bとから定まる第2のパラメータXを算出するとともに、該第2のパラメータXと当該証明者端末によって生成した第4の任意数Mから定まる第2関数hの値Vを算出し、算出した値Vと第4の任意数Mを前記検証者装置に送信するステップと、
前記検証者装置が、値Vと第4の任意数Mを受信して、前記第1のパラメータYと第3の任意数uで定まる第3の値と、第4の任意数Mとで定まる第2関数hの値Vを算出し、算出した値Vを用いて、前記受信した値Vを検証するステップと、
を含むことを特徴とする認証方法。
【請求項2】
前記検証者装置が、前記第1の値Sかつ前記第2の値Tとなる前記第3の任意数uの非対話的ゼロ知識証明となる証明情報πを算出し、算出した証明情報πを前記証明者端末に送信するステップと、
前記証明者端末が、前記証明情報πを受信し、証明情報πを検証するステップと、
を更に含むことを特徴とする請求項1に記載の認証方法。
【請求項3】
前記第1関数Hは、ハッシュ関数であって、値Rは、R=H(D)で表され、
前記第1パラメータYは、Y=Gで表され、
前記第1の値Sは、S=Gで表され、
前記第2の値Tは、T=Rで表され、
前記第2のパラメータXは、X=Sで表され、
前記第2関数hは、ハッシュ関数であって、
前記証明者端末が算出する値Vは、V=h(X,M)で表され、
前記検証者装置が算出する値Vは、V=h(Y,M)で表され、
前記証明情報πは、任意数wとし、nをGの位数としたとき
π=(z,c)、
ここに、W=G
=R
c=h(W,W
z=−cu+w(mod n)
で表され、
前記検証するステップは、h(G,R)=cを満たすか否かで検証することを特徴とする請求項2に記載の認証方法。
【請求項4】
証明者端末にて証明者からの識別子IとパスワードAを受け付けて、検証者装置によって当該証明者を認証する認証システムであって、
前記証明者端末と前記検証者装置の双方は、巡回群の値Gと、第1関数Hと、第2関数hとを共有しており、
前記証明者端末は、
証明者端末によって生成した第1の任意数Bと、前記検証者装置によって生成された第2の任意数Dを受信して算出した第1関数Hの値Rと、パスワードAと、前記巡回群の値Gとを保持する手段と、
証明者からの識別子IとパスワードAの入力を受け付けて、前記検証者装置に識別子Iを送信する手段と、
前記検証者装置から、前記巡回群の値Gと検証者装置によって生成した第3の任意数uで定まる第1の値Sと、前記第2の任意数Dから定まる第1関数Hの値Rと第3の任意数uで定まる第2の値Tとを受信する手段と、
受信した前記第1の値Sと、前記パスワードAと、受信した前記第2の値Tと、前記第1の任意数Bとから第2のパラメータXを算出し、第2のパラメータXと第4の任意数Mから定まる第2関数hの値Vを算出し、算出した値Vと第4の任意数Mを前記検証者装置に送信する手段と、を備え、
前記検証者装置は、
前記識別子Iと、前記第2の任意数Dと、前記証明者端末から受信した、第1の任意数Bと値RとパスワードAと巡回群の値Gから定まる第1パラメータYとを予め記憶する手段と、
前記証明者端末から、証明者の識別子Iを受信する手段と、
受信した識別子Iと予め記憶している識別子Iとを検証し、一致した場合に予め記憶している第2の任意数Dを用いて、第2の任意数Dから定まる第1関数Hの値Rを算出し、第3の任意数uを生成し、前記巡回群の値Gと第3の任意数uで定まる第1の値Sと、値Rと第3の任意数uで定まる第2の値Tとを算出し、前記証明者端末に第1の値Sと第2の値Tを送信する手段と、
前記証明者端末から、前記第1の値S、前記パスワードA、前記第2の値T、および前記第1の任意数Bから算出された第2のパラメータXと、証明者端末によって生成した第4の任意数Mとで定まる第2関数hの値Vを受信するとともに、前記第4の任意数Mを受信する手段と、
前記第1のパラメータYと第3の任意数uで定まる第3の値と、受信した第4の任意数Mとで定まる第2関数hの値Vを算出し、算出した値Vを用いて、前記受信した値Vを検証する手段と、
を備えることを特徴とする認証システム。
【請求項5】
証明者端末によって生成した第1の任意数Bと、前記検証者装置によって生成された第2の任意数Dを受信して算出した第1関数Hの値Rと、パスワードAと、前記巡回群の値Gとを保持する手段と、
証明者からの識別子IとパスワードAの入力を受け付けて、前記検証者装置に識別子Iを送信する手段と、
前記検証者装置から、前記巡回群の値Gと検証者装置によって生成した第3の任意数uで定まる第1の値Sと、前記第2の任意数Dから定まる第1関数Hの値Rと第3の任意数uで定まる第2の値Tとを受信する手段と、
受信した前記第1の値Sと、前記パスワードAと、受信した前記第2の値Tと、前記第1の任意数Bとから第2のパラメータXを算出し、第2のパラメータXと第4の任意数Mから定まる第2関数hの値Vを算出し、算出した値Vと第4の任意数Mを前記検証者装置に送信する手段と、
を備えることを特徴とする証明者端末。
【請求項6】
前記識別子Iと、前記第2の任意数Dと、前記証明者端末から受信した、第1の任意数Bと値RとパスワードAと巡回群の値Gから定まる第1パラメータYとを予め記憶する手段と、
前記証明者端末から、証明者の識別子Iを受信する手段と、
受信した識別子Iと予め記憶している識別子Iとを検証し、一致した場合に予め記憶している第2の任意数Dを用いて、第2の任意数Dから定まる第1関数Hの値Rを算出し、第3の任意数uを生成し、前記巡回群の値Gと第3の任意数uで定まる第1の値Sと、値Rと第3の任意数uで定まる第2の値Tとを算出し、前記証明者端末に第1の値Sと第2の値Tを送信する手段と、
前記証明者端末から、前記第1の値S、前記パスワードA、前記第2の値T、および前記第1の任意数Bから算出された第2のパラメータXと、証明者端末によって生成した第4の任意数Mとで定まる第2関数hの値Vを受信するとともに、前記第4の任意数Mを受信する手段と、
前記第1のパラメータYと第3の任意数uで定まる第3の値と、受信した第4の任意数Mとで定まる第2関数hの値Vを算出し、算出した値Vを用いて、前記受信した値Vを検証する手段と、
を備えることを特徴とする検証者装置。
【請求項7】
コンピュータに請求項4に記載の認証システムの証明者端末の機能を実現させるプログラムであって、
証明者からの識別子IとパスワードAの入力を受け付けて、検証者装置に識別子Iを送信するステップと、
前記検証者装置から、前記巡回群の値Gと検証者装置によって生成した第3の任意数uで定まる第1の値Sと、前記第2の任意数Dから定まる第1関数Hの値Rと第3の任意数uで定まる第2の値Tとを受信するステップと、
受信した前記第1の値Sと、前記パスワードAと、受信した前記第2の値Tと、前記第1の任意数Bとから第2のパラメータXを算出し、第2のパラメータXと第4の任意数Mから定まる第2関数hの値Vを算出し、算出した値Vと第4の任意数Mを前記検証者装置に送信するステップと、
を実行させるためのプログラム。
【請求項8】
コンピュータに請求項4に記載の認証システムの検証者装置の機能を実現させるプログラムであって、
前記証明者端末から、証明者の識別子Iを受信するステップと、
受信した識別子Iと予め記憶している識別子Iとを検証し、一致した場合に予め記憶している第2の任意数Dを用いて、第2の任意数Dから定まる第1関数Hの値Rを算出し、第3の任意数uを生成し、前記巡回群の値Gと第3の任意数uで定まる第1の値Sと、値Rと第3の任意数uで定まる第2の値Tとを算出し、前記証明者端末に第1の値Sと第2の値Tを送信するステップと、
前記証明者端末から、前記第1の値S、前記パスワードA、前記第2の値T、および前記第1の任意数Bから算出された第2のパラメータXと、証明者端末によって生成した第4の任意数Mとで定まる第2関数hの値Vを受信するとともに、前記第4の任意数Mを受信するステップと、
前記第1のパラメータYと第3の任意数uで定まる第3の値と、受信した第4の任意数Mとで定まる第2関数hの値Vを算出し、算出した値Vを用いて、前記受信した値Vを検証するステップと、
を実行させるためのプログラム。
【請求項9】
証明者端末と検証者装置の双方において使用される共有鍵を生成する共有鍵生成方法であって、
前記証明者端末と前記検証者装置の双方は、巡回群の値Gと、第1関数Hと、第2関数hとを共有しており、
前記証明者端末は、証明者端末によって生成した第1の任意数Bと、前記検証者装置によって生成された第2の任意数Dを受信して算出した第1関数Hの値Rと、証明者から受け付けたパスワードAと、前記巡回群の値Gとを保持しており、
前記検証者装置は、証明者の識別子Iと、前記第2の任意数Dと、前記証明者端末から受信した、第1の任意数Bと値RとパスワードAと巡回群の値Gから定まる第1パラメータYとを予め記憶しており、
前記証明者端末が、証明者からの識別子IとパスワードAの入力を受け付けて、前記検証者装置に識別子Iを送信するステップと、
前記検証者装置が、識別子Iを受信して、受信した識別子Iと予め記憶している識別子Iとを検証し、一致した場合に予め記憶している第2の任意数Dを用いて、第2の任意数Dから定まる第1関数Hの値Rを算出し、第3の任意数uを生成し、前記巡回群の値Gと第3の任意数uで定まる第1の値Sと、値Rと第3の任意数uで定まる第2の値Tとを算出し、前記証明者端末に第1の値Sと第2の値Tを送信するステップと、
前記証明者端末が、前記第1の値Sと前記第2の値Tを受信して、前記第1の値Sと、前記パスワードAと、前記第2の値Tと、前記第1の任意数Bとから第2のパラメータXを算出し、証明者端末によって生成した第4の任意数Mを第2のパラメータXで暗号化して値Vを算出し、算出した値Vを前記検証者装置に送信するステップと、
前記検証者装置が、値Vを受信して、値Vを前記第1のパラメータYと第3の任意数uで定まる第3の値で復号化して値Mを算出し、値Mと検証者装置によって生成した第5の任意数Mとをビット結合したものを前記第3の値で暗号化して値Vを算出し、算出した値Vを前記検証者装置に送信するステップと、
前記証明者端末が、値Vを受信して、値Vを前記第2のパラメータXで復号化して値Mを算出し、値Mが第5の任意数Mによって分解できるかどうかを確認し、分解できれば第5の任意数Mを第2のパラメータXで暗号化して値Vを算出し、前記検証者装置に値Vを送信し、値Mと第5の任意数Mとをビット結合したもので定まる第2関数hの値を共有鍵Kとするステップと、
前記検証者装置が、値Vを受信して、値Vを前記第3の値で復号化して値Mを算出し、算出した値Mを用いて、前記第5の任意数Mを検証し、検証が成功であれば値Mと第5の任意数Mとをビット結合したもので定まる第2関数hの値を共有鍵Kとするステップと、
を含むことを特徴とする共有鍵生成方法。
【請求項10】
前記第1関数Hは、ハッシュ関数であって、値Rは、R=H(D)で表され、
前記第1パラメータYは、Y=Gで表され、
前記第1の値Sは、S=Gで表され、
前記第2の値Tは、T=Rで表され、
前記第2のパラメータXは、X=Sで表され、
前記第4の任意数Mを第2のパラメータXで暗号化して算出する値Vは、V=E(M)で表され、
前記値Vを前記第3の値で復号化して算出する値Mは、
【数1】

で表され、
前記値Mと前記第5の任意数Mとをビット結合したものを前記第3の値で暗号化して算出する値Vは、
【数2】

で表され、
前記第5の任意数Mを前記第2のパラメータXで暗号化して算出する値Vは、V=E(M)で表され、
前記値Vを前記第3の値で復号化して算出する値Mは、
【数3】

で表され、
前記第2関数hは、ハッシュ関数であることを特徴とする請求項9に記載の共有鍵生成方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate