(57)【要約】【課題】インターネット上のグループに属する複数のサービス提供者Ｖｊ（ｊ＝１〜ｎ）に対して、チケット型のシングルサインオン方式を用いることで、サービス利用者Ｕへ利便を図り、匿名性を保証し行動履歴を秘匿する。また、暗号鍵の共有を同時に行う。【解決手段】次の様に暗号鍵を共有する。１）システム管理者によりＵ、Ｓ、Ｖｊ（ｊ＝１〜ｎ）の秘密鍵、公開鍵を生成し、配布するセットアップルーチンと、２）ＵがＳにＶi（i⊆｛１〜ｎ｝）にアクセスするチケットの発行を要求し、Ｓが公開鍵を用いたチケットを発行するチケット取得ルーチンと、３）Ｖｉ用のチケットσｉを生成して送信し、Ｖｉがσｉを検証するチケット利用ルーチンと、４）Ｖｉが共有鍵生成情報Ｔｉを生成して送信し、ＵとＶｉ間で共有鍵Ｋｉを得る鍵共有ルーチンと、を含む処理で、利用者の匿名性を保証すると同時に暗号化通信路を確立でき、また、行動履歴を秘匿する。  【選択図】図２
2009027565.tif 000002
【特許請求の範囲】
【請求項１】
公衆ネットワーク回線に接続されたサービス利用者端末Ｕ、チケット発行者端末Ｓ、複数のサービス提供者端末Ｖｊ（ｊ＝１、…、ｎ）間で、それぞれの公開鍵を交換して、暗号鍵を共有する方法であって、
（１）システム管理者によりＵ、Ｓ、Ｖｊ（ｊ＝１、…、ｎ）の秘密鍵、公開鍵を生成し、配布するセットアップルーチンと、  
（２）ＵがＳに上記の公開鍵を用いた要求によって単数あるいは複数のＶｉ（ｉ⊆｛１、…、ｎ｝）にアクセスするためのチケットの発行を要求し、チケット発行者端末Ｓが上記の公開鍵を用いたチケットを発行するチケット取得ルーチンと、  
（３）Ｕが利用しようとするＶｉに対して上記の公開鍵を用いたチケットσｉを生成して送信し、Ｖｉでσｉの検証を行なうチケット利用ルーチンと、
（４）Ｖｉが上記の秘密鍵を用いて共有鍵生成情報Ｔｉを生成して送信し、ＵとＶｉとの間で共有鍵Ｋｉの共有を行なう鍵共有ルーチンと、
を、含むことを特徴とする匿名資格認証方法。
【請求項２】
請求項１に記載の匿名資格認証方法のチケット取得ルーチンにおいて、
チケット発行者端末Ｓは、要求されたチケットに対して、サービス内容あるいはチケット数において、制限されたチケットを発行することを特徴とする匿名資格認証方法。
【請求項３】
請求項２に記載の匿名資格認証方法のチケット取得ルーチンにおいて、
チケット発行者端末Ｓは、ＵがＳに対して行なうチケット発行の要求は利用可能なＶｉの全てである、と見做してチケットを発行することを特徴とする匿名資格認証方法。
【請求項４】
請求項１に記載の匿名資格認証方法において、
チケットを複数回利用する場合は、上記のチケット利用ルーチンと、鍵共有ルーチンとを、チケットの利用回数に応じて複数回繰り返し行ない、前記繰り返しの度に、σｉの生成に異なる符号を用いることを特徴とする匿名資格認証方法。
【請求項５】
請求項１から４のいずれかひとつに記載の匿名資格認証方法であって、
Ｇ１は大きな素数ｑを位数とする加法群とし、
Ｇ２はｑを位数とする乗法群とし、
Ｐ、Ｑ、ＦはＧ１上のトリビアルでない要素とし、
ｅをＧ１×Ｇ１からＧ２への双線形写像とし、
また、Ｓ、Ｕ、複数のＶj（ｊ＝１、…、ｎ）の秘密鍵は、ｑと互いに素な乗法群Ｚｑ*から選択されるものとし、それぞれｘS、ｘU、ｘVjとし、
Ｓ、Ｕ、Ｖjの公開鍵は、それぞれ、ＲS＝ｘSＰ、ＲU＝ｘUＰ、ＲVj＝ｘVjＰ、であるとし、
さらに、Ｐ、Ｑ、Ｆと、Ｇ１とＧ２の位数ｑは、公開されており、Ｓは、ＵがアクセスできるＶiを全て知っているものとするとき、
（１）ＵがＶiにアクセス可能なチケット（σi）（ｉ⊆｛１、…、ｎ｝）を取得しようとするとき、Ｕは、
１．Ｚｑ*から乱数αを選び、
２．Ｘ1＝α-1ｘUＱを計算し、
３．Ｘ2＝αＲSを計算し、
なる処理を行い、Ｕの識別子とともに、（Ｕ、Ｘ1、Ｘ2）を含む信号をリクエストとして、チケット発行者Ｓに送る手続きと、
（２）Ｓがこのリクエストを受け取ると、
ｅ（Ｘ1、Ｘ2）と、ｅ（Ｑ、ＲU）Xsとが一致するかどうかを調べ、一致する場合は、チケットを有効化するために、
１．Ｚｑ*から乱数βを選び、
２．Ｙ1＝β-1ｘS（Ｘ1＋Ｆ）を計算し、
３．Ｙ2＝βＰを計算し、
４．上記のサービス提供者（検証者でもある）の全体から複数を選び（以下では、その集合をＩと示す）、
５．Ｗi＝βＲViを計算し（ｉ∈Ｉ）、
６．（Ｙ1、Ｙ2、Ｗi）をチケットとして＾σにセットし、
なる処理を行なう手続きと、
（３）サービス利用者Ｕは、
ｅ（Ｙ1，Ｙ2）と、ｅ（Ｘ1＋Ｆ，ＲS）とが一致するかどうか、と、
ｅ（Ｗi，Ｐ）と、ｅ（ＲVi，Ｙ2）とが一致するかどうか、とを、見て、
（＾σ，Ｉ）が有効なチケットであことを確認する手続きと、
（４）Ｕは、リストＩに属するサービス提供者Ｖiに記帳しようとするとき、
１．Ｚｑ*から乱数δiを選び、
２．σi＝ｅ（Ｙ1，αδiＷi）を計算し、
３．ρi＝αδiＸ1を計算し、
４．ηi＝αδiＲSを計算し、
なる処理を行う手続きと、
（５）有効なＶi用のチケット（σi、ρi、ηi）を、サービス提供者Ｖiに送る手続きと、
（６）サービス提供者Ｖiは、それを受け取って、
（ｅ（ρi，ＲS），ｅ（Ｆ，ηi））XVjと、σiと、が一致するかどうかを見て、一致する場合は、
１．Ｚｑ*から乱数λiを選ぶ、
２．Ｔi＝λiｘVjＱを計算する、
３．Ｋi＝ＫＤＦ（（ｅ（ρi，ＲS）XVi）λi）（ＫＤＦは、鍵導出関数）を計算する、
なる処理を行なってセッション用の共通鍵を計算する手続きと、
（７）その後、ＴiをＵに送る手続きと、
（８）Ｕでは、セッション用の共通鍵Ｋi′を、
Ｋi′＝ＫＤＦ（ｅ（Ｔi，ＲS）δiXu）、
なる処理を行なって、計算する手続きと、
を、含み、正しく処理が行われた場合はＫi′＝Ｋiとなることを用いて、Ｋiを、ＵとＶiとの間でセッション用の共通鍵として用いることを特徴とする匿名資格認証方法。
【請求項６】
関数ｈ（・）は、ウォータのハッシュ関数Ｈｗ（・）で領域がＧ１のものであるとするとき、上記のＦをｈ（ｔ）で置き換えることによってタイムスタンプ機能を付加することを特徴とする請求項５に記載の匿名資格認証方法。
【請求項７】
Ｇ１とＧ２は、楕円曲線上の群であることを特徴とする請求項５から６のいずれかひとつに記載の匿名資格認証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、チケット型のシングルサインオン方式を用いることで利用者へ利便を図りつつ、インターネット上でのひとつのグループに属する複数のサービス提供者に対して、その利用者の匿名性を保証し上記の利用者の行動履歴を秘匿することができる匿名資格認証方法に関している。
【背景技術】
【０００２】
インターネット上では、既に様々なサービスが提供されている。例えば会員制サービスの場合、サービス契約や会員登録の際に、サービス提供者が利用者ＩＤとパスワードをその利用者に発行することがよく行なわれている。利用者が、この利用者ＩＤとパスワードをその利用時に提示する事で、サービス提供者は、利用者認証を行いサービスを提供する。
【０００３】
しかし、上記の利用者が複数の会員制サービスを利用する場合、それぞれの利用者ＩＤとパスワードを設定することが求められる。これらの利用者ＩＤとパスワードは、安全上の理由から、それぞれ異なり、しかも、なるべく複雑なパスワードとすることが求められ、たとえ利用頻度の高くないサービスでも同様に設定する必要があり、利用者への大きな負担となっている。
【０００４】
複数の会員制サービスを利用する場合、それぞれの利用者ＩＤとパスワードを設定することについては、シングルサインオン技術によって利用者の負担を軽減することができることが知られている。シングルサインオン技術では、サービス提供者同士が共通の認証機関を通じて信頼関係を結ぶ事で、あるサービスにおいて認証された利用者は、再び認証を受ける事無く他のサービス提供を受ける事が可能になる。つまり、表面上は、一回のログイン作業のみで複数のサービスを利用する事が可能となる。しかし、認証機関には利用者情報が集中し、利用者のプライバシが侵害されやすくなるという問題がある。例えば、サービスＡを利用するために認証を受けた利用者が、サービスＢを利用したとき、認証機関はその行動を追跡ことも可能である。
【０００５】
本発明は、グループ認証技術を応用する事で、利用者の行動履歴を秘匿可能な匿名資格認証方法を提案している。その際、シングルサインオン技術と、秘匿に必要なペアリング技術とを用いるので、これらを先ず説明する。
【０００６】
シングルサインオン
様々なサービスを利用する際に、何度もＩＤ、パスワードを入力する事は多くの手間を必要とする。そこで、シングルサインオン技術を利用する事で、煩雑な作業を簡単にする事が注目されている。シングルサインオンには、大別すると
（１）エージェント型、（２）プロキシ型、（３）チケット型、の３種類がある。
【０００７】
エージェント型のシングルサインオン方式では、利用者の利用するクライアント端末上に、利用者の代わりに認証情報（ＩＤやパスワード）を入力するエージェントが動作する。そのため、サービス提供者側から認証の要求があった場合は、利用者の代わりにエージェントが認証処理を行うことになる。
【０００８】
プロキシ型のシングルサインオン方式では、サービスを利用する利用者は必ずプロキシを経由してアクセスすることになる。初めてアクセスする場合は、プロキシサーバにより認証が行われ、次回以降は、サービス提供者がプロキシに対して認証の確認を行う。プロキシサーバには利用者が利用しようとするサービスからの問い合わせが発生するため、利用者のプライバシ（行動履歴）が露呈する恐れがある。
【０００９】
チケット型のシングルサインオン方式では、最初にチケットサーバにより利用者認証を行う。認証を行う際に、サービス利用チケットを発行する。利用者はこのサービス利用チケットをサービス提供者に提示する事により、サービスを利用する。複数のサービスを利用した場合は、同じチケットを利用することになるため、利用者のプライバシ（行動履歴）がサービス提供者同士の結託により露呈する恐れがある。
【００１０】
ペアリング
ペアリングは、例えば暗号に用いられる技術で、非特許文献２に記載されている。このペアリングとは、位数がｑ（大きな素数）となるような加法群Ｇ１、乗法群Ｇ２があるとき、Ｇ１×Ｇ１からＧ２への写像ｅである双線形写像（Bilinear Map）のことである。
【００１１】
ここで用いる双線形写像は以下の性質を満たす。
双線形性：すべてのＰ，Ｑ∈Ｇ１（Ｇ１は加法群）および、ａ，ｂ∈Ｚｑ（位数qの乗法群）において、
ｅ（ａＰ，ｂＱ）＝ｅ（Ｐ，Ｑ）abが成り立つ。
非退化性：ＰがＧ１の生成元のとき、ｅ（Ｐ，Ｐ）はＧ２の生成元となる。
計算可能性：すべてのＰ，Ｑ∈Ｇ１に対して、ｅを計算するための効率的なアルゴリズムが存在する。
【００１２】
また、第３者によって容易には解読されないという意味で安全性を確保するために、ＢＤＨ（Bilinear Diffie-Hellman）問題を利用する。
【００１３】
ＢＤＨ問題とは、
Ｐ∈Ｇ１、  ａ，ｂ，ｃ∈Ｚq、
に対し、Ｐ，ａＰ，ｂＰ，ｃＰから、ｅ（Ｐ，Ｐ）abcを計算する問題であり、逆算することが非常に困難であることで、第３者による解読が困難になる。
【００１４】
本発明に近いものとして、非特許文献１の記載を挙げることができる。この非特許文献１では、検証２者を指定する事で以下の機能を実現している。
完全性          ：グループ管理者Ｓは検証者Ｖを指定した認証子σをメンバＵに正しく発行可能。
検証者制限可能性：Ｕは指定された（自分では指定不可能な）Ｖに対してσを示す事が可能。
再利用不可能性  ：指定されたＶのみが、ＵがＳの管理するグループメンバであるという事を検証可能（Ｕの匿名性は守られる）。
【００１５】
より具体的には、非特許文献１では以下に示す６つの確率的アルゴリズムによる構成が開示されている。
【００１６】
１）Ｓｅｔｕｐ（ｌ）→（Ｇ１，Ｇ２，ｑ，ｅ，Ｐ，Ｈｏ）
セキュリティパラメータｌ（エル）を入力として、システムパラメータＣＰ＝（Ｇ１，Ｇ２，ｑ，ｅ，Ｐ，Ｈｏ）を出力するアルゴリズム。ここで、Ｇ１は位数がｑとなる加法群、ｑは160ビット程度の素数、ｅはＧ１×Ｇ１→Ｇ２を満たす双線形写像、Ｐ（∈Ｇ１）は生成元、Ｈｏ：｛０，１｝*→Ｇ１を満たすハッシユ関数である（{0, 1}*は２進数の任意ビット長を表す）。
【００１７】
２）ＫＧｅｎ（ＣＰ）→（ＳＫ，ＰＫ）
上記のＣＰを入力として、鍵対の生成を行うアルゴリズム。ここで、Ｕの秘密鍵をＳＫU＝ｘU（∈Ｚｑ*：Ｚｑ*はｑと互いに素な乗法群）、公開鍵をＰＫU＝ｘUＰとし、Ｓの秘密鍵をＳＫS＝ｘS（∈Ｚｑ*）、公開鍵をＰＫS＝ｘSＰ、Ｖiの秘密鍵をＳＫi＝ｘi（∈Ｚｑ*）、公開鍵をＰＫi＝ｘiＰとする。（ｉ＝１、…、ｍ）。
【００１８】
３）ＣＧｅｎ（ＣＰ，ＳＫS、ＰＫ1，・・・，ＰＫn、ＰＫU）→（σ，Ｌ）
ＣＰ、Ｓの秘密鍵ＳＫS、ｎ人の指定検証者の公開鍵ＰＫ1、・・・、ＰＫn（ｎ⊆ｍ）、Ｕの公開鍵ＰＫｕを入力として、認証子σ、指定検証者リストＬ、を生成するアルゴリズム。ここで、ｎ人は、上記の（ｉ＝１、…、ｍ）から選んだｎ人である。
【００１９】
４）ＣＶｅｒｉｆｙ（ＣＰ，ＳＫS，ＳＫu，ＰＫ1，・・・，ＰＫn，Ｍ，σ，Ｌ）  
ＣＰ，ＰＫS，ＳＫu，Ｓにより指定された検証者の公開鍵（ＰＫ1、…、ＰＫn）、メッセージＭ、σ、Ｌを入力とし、正しければＴｒｕｅを、そうでなければＦａｌｓｅを出力する検証アルゴリズム。
【００２０】
５）ＣＤｅｓｉｇｎａｔｅ（ＣＰ，ＰＫS，Ｍ，σ，Ｌ，ｊ）→＾σj 
ＣＰ、ＰＫS、Ｍ、σ、Ｌ、検証者インデクスｊ、を入力とし、検証者ｊ用の認証子＾σjを出力するアルゴリズム（ｊ∈Ｌ）。
【００２１】
６）ＤＣＶｅｒｉｆｙ（ＣＰ，ＰＫS，ＳＫj，Ｍ，＾σj）  
ＣＰ、ＰＫS、検証者Ｖｊの秘密鍵ＳＫj、Ｍ、検証者ｊ用の認証子＾σj、を入力とし、正しければＴｒｕｅを、そうでなければＦａｌｓｅを出力する検証アルゴリズム。
【００２２】
次に、上記のアルゴリズムを用いた認証手続きを示す。
Ｓｔｅｐ＿１：  （準備）システム管理者はセキュリティパラメータｌを入力として、上記のシステムパラメータ生成アルゴリズムＳｅｔｕｐを実行する。
Ｓｔｅｐ＿２：  （鍵生成）システム管理者はＳｔｅｐ＿１で生成したシステムパラメータＣＰを入力として鍵対の生成アルゴリズムＫＧｅｎを実行し、各エンティティの鍵対を生成する。そして、各エンティティに秘密に配布する。
【００２３】
以降の認証手続きの詳細を図４に示す。
図４において、
（１）グループ管理者であるＳは、
Ｍを、任意の資格情報の２進数表現、
Ｌを、１〜ｍまでの整数のｎ個の部分集合、
ｒは、ｑと互いに素な乗法群の乱数、とする。
ｓ＝ｒ-1ＳＫsＨｏ（Ｍ）、
Ｒ＝ｒＰ、Ｒu＝ｒＰＫu、Ｒ1＝ｒＰＫ1、・・・、Ｒn＝ｒＰＫn、
σ＝｛ｓ、Ｒ、Ｒu、Ｒ1、・・・、Ｒn｝、
として、σ、Ｍ、ＬをメンバＵに送付する。
（２）メンバＵは、
ｅ（ｓ，Ｒu）とｅ（Ｈｏ（Ｍ），ＰＫs）SKuとが一致するかどうか、
ｅ（ｓ，Ｒ）とｅ（Ｈｏ（Ｍ），ＰＫs）とが一致するかどうか、
ｅ（Ｒj，Ｐ）とｅ（ＰＫj，Ｒ）とが一致するか、（一致するものをｊとする）
を確認する（j∈L）。
（３）さらに、メンバＵは検証者ｊに対応する指定検証者認証子、
＾σj  ＝ｅ（ｓ，Ｒj）
として、Ｓに（＾σj，Ｍ）を送付する。
（４）検証者Ｖjは、
ｅ（Ｈｏ（Ｍ），ＰＫs）SKjと、＾σjとが一致するかどうかを検証する。
【００２４】
次に、上記の方法に於ける問題点について説明する。まず、上記の概略を示す。
グループメンバＵは管理者Ｓから認証子σを受け取る。σから指定検証者認証子（検証者ｊ用の認証子）＾σjの変換には
＾σj＝ｅ（ｓ、ＰＫj）、                      （１）
を計算する。ここで上記の様に、ＲjはＳにより指定された検証者Ｖjの公開鍵ＰＫjを含むため、Ｓによる検証者の制限が可能になる（制限者制限可能性）。また、＾σjの検証には
ｅ（Ｈｏ（Ｍ）、ＰＫｓ）SKj＝？＾σj、          （２）
（ただし、“＝？”は、左右が一致するかどうかを確認することを意味する）
を計算するため、Ｓにより指定されたＶjの秘密鍵ＳＫjが必要になる。従って、＾σjはＶjのみ検証可能になる（再利用不可能性）。
【００２５】
一方で、認証子σの発行時にはＵの認証を行っていないため、発行処理とは別に認証フェーズが必要となる。また、＾σjの変換にはＵの秘密情報を必要としていないため、（σ、Ｌ）を入手可能な第三者は誰でも式（１）を計算し、＾σjを生成する事が可能である。従って、Ｓのグループメンバ以外の第三者がＵに成り済まし、式（２）を満たす＾σjを生成可能である。
【００２６】
また、認証子発行者Ｓは全ての＾σjを生成可能なため、検証者Ｖjの所有する＾σjから、グループメンバＵの匿名性を保証する事ができていない。
さらに、^σjは複数回利用した場合でも同じ値であるため、同一の利用者による利用である事がわかる。
【非特許文献１】Ching Yu Ng, Willy Susilo, and Yi Mu,“Designated Group Credentials”, ASIACCS'06、 pp.59-65, 2006.
【非特許文献２】D. Boneh and M. Franklin, Identity-based encryption from the Weil pairing, in Advances in Cryptology - CRYPTO 2001, LNCS 2139, PP. 213-229, springer-verlag, Berlin, 2001.
【発明の開示】
【発明が解決しようとする課題】
【００２７】
インターネット上でのひとつのグループに属する複数のサービス提供者に対して、チケット型のシングルサインオン方式を用いることで利用者へ利便を図りつつ、その利用者の匿名性を保証し上記の利用者の行動履歴を秘匿することができるようにする。また、サービスを安全に提供するため、暗号通信路を構成するための暗号鍵の共有を同時に行う。
【発明の効果】
【００２８】
インターネット上で、利用者が複数の会員制サービスを利用する場合、サービス利用時に安全な通信路を確立するためのセッション鍵の共有が可能で、それぞれのサービスに対してそれぞれの利用者ＩＤとパスワードを設定する必要がなくなり、しかも、その利用者の匿名性を保証しその行動履歴を秘匿することができるようになる。さらに、安全な通信路を構成するための暗号鍵の共有が可能になる。
【課題を解決するための手段】
【００２９】
本発明は、匿名資格認証方法であって、より、具体的には、公衆ネットワーク回線に接続されたサービス利用者端末Ｕ、チケット発行者端末Ｓ、複数のサービス提供者端末Ｖj（ｊ＝１、…、ｎ）間で、次のように、それぞれの公開鍵を交換して、暗号鍵を共有する方法である。つまり、
（1）Ｕ、Ｓ、Ｖj（j＝１、…、ｎ）のそれぞれが、秘密鍵、公開鍵を生成し、配布するセットアップルーチンと、 
（２）ＵがＳに上記の公開鍵を用いた要求によって単数あるいは複数のＶｋ（ｋ⊆｛１、…、ｎ｝）にアクセスするためのチケットの発行を要求し、チケット発行者端末Ｓが上記の公開鍵を用いたチケットを発行するチケット取得ルーチンと、  
（３）Ｕが利用しようとするＶｉに対して上記の公開鍵を用いたチケットσｉを生成して送信し、Ｖｉでσｉの検証を行なうチケット利用ルーチンと、
（４）Ｖｉが上記の公開鍵を用いた新たな公開鍵Ｔｉを生成して送信し、ＵとＶｉとの間で共有鍵Ｋｉの共有を行なうＶｉで鍵共有ルーチンと、
を、含む処理によって、利用者の匿名性を保証し前記利用者の行動履歴を秘匿することができるようにする。
【００３０】
また、また、匿名資格認証方法のチケット取得ルーチンにおいて、チケット発行者端末Ｓは、要求されたチケットに対して、サービス内容あるいはチケット数において、制限されたチケットを発行する。これは、例えば、Ｕ側の付帯条件（例えば、年齢、金額）、に基づいて、Ｓ側で制限を加える際に用いるものである。
【００３１】
チケット発行者端末Ｓは、ＵがＳに対して行なうチケット発行の要求は利用可能なＶｊの全てである、と見做してチケットを発行することもある。この場合は、例えば、Ｓにデフォルト値として全指定を設定するものである。
【００３２】
また、チケットを複数回利用する場合は、上記のチケット利用ルーチンと、鍵共有ルーチンとを、チケットの数に応じた複数回繰り返し行ない、前記繰り返しの度に、σｉの生成に異なる符号を用いる。異なる符合としては、乱数を用いるのが簡便であり、安全性を高めることができる。
【００３３】
より具体的な処理としては、次のように行なう。
Ｇ１は大きな素数ｑを位数とする加法群とし、
Ｇ２はｑを位数とする乗法群とし、
Ｐ、Ｑ、ＦはＧ１上のトリビアルでない要素とし、
ｅをＧ１×Ｇ１からＧ２への双線形写像とし、
また、Ｓ、Ｕ、複数のＶj（j＝１、…、ｎ）の秘密鍵は、ｑと互いに素な乗法群Ｚｑ*から選択されるものとし、それぞれｘS、ｘU、ｘViとし、
Ｓ、Ｕ、Ｖjの公開鍵は、それぞれ、ＲS＝ｘSＰ、ＲU＝ｘUＰ、ＲVj＝ｘVjＰ、であるとし、
さらに、Ｐ、Ｑ、Ｆと、Ｇ１とＧ２の位数ｑは、公開されており、Ｓは、ＵがアクセスできるＶiを全て知っているものとするとき、
（１）ＵがＶiにアクセス可能なチケット（σi）（ｉ⊆{１、…、ｎ}）を取得しようとするとき、Ｕは、
１．Ｚｑ*から乱数αを選び、
２．Ｘ1＝α-1ｘUＱを計算し、
３．Ｘ2＝αＲSを計算し、
なる処理を行い、Ｕの識別子とともに、（Ｕ、Ｘ1、Ｘ2）を含む信号をリクエストとして、チケット発行者Ｓに送る手続きと、
（２）Ｓがこのリクエストを受け取ると、
ｅ（Ｘ1、Ｘ2）と、ｅ（Ｑ、ＲU）Xsとが一致するかどうかを調べ、一致する場合は、チケットを有効化するために、
１．Ｚｑ*から乱数βを選び、
２．Ｙ1＝β-1ｘS（Ｘ1+Ｆ）を計算し、
３．Ｙ2＝βＰを計算し、
４．上記のサービス提供者（検証者でもある）の全体から複数を選び（以下では、その集合をＩと示す）、
５．Ｗi＝βＲViを計算し（ｉ∈Ｉ）、
６．（Ｙ1、Ｙ2、Ｗi）をチケットとして＾σにセットし、
なる処理を行なう手続きと、
（３）サービス利用者Ｕは、
ｅ（Ｙ1，Ｙ2）と、ｅ（Ｘ1＋Ｆ，ＲS）とが一致するかどうか、と、
ｅ（Ｗi，Ｐ）と、ｅ（ＲVi，Ｙ2）とが一致するかどうか、とを、見て、
（＾σ，Ｉ）が有効なチケットであことを確認する手続きと、
（４）Ｕは、リストＩに属するサービス提供者Ｖiに記帳しようとするとき、
１．Ｚｑ*から乱数δiを選び、
２．σi＝ｅ（Ｙ1，αδiＷi）を計算し、
３．ρi＝αδiＸ1を計算し、
４．ηi＝αδiＲSを計算し、
なる処理を行う手続きと、
（５）有効なＶi用のチケット（σi、ρi、ηi）を、サービス提供者Ｖiに送る手続きと、
（６）サービス提供者Ｖiは、それを受け取って、
（ｅ（ρi，ＲS）ｅ（Ｆ，ηi））XVjと、σiと、が一致するかどうかを見て、一致する場合は、
１．Ｚｑ*から乱数λiを選ぶ、
２．Ｔi＝λiｘVjＱを計算する、
３．Ｋi＝ＫＤＦ（（ｅ（ρi，ＲS）XVi）λi）（ＫＤＦは、鍵導出関数）を計算する、
なる処理を行なってセッション用の共通鍵を計算する手続きと、
（７）その後、ＴiをＵに送る手続きと、
（８）Ｕでは、セッション用の共通鍵Ｋi′を、
Ｋi′＝ＫＤＦ（ｅ（Ｔi，ＲS）δiXu）、
なる処理を行なって、計算する手続きと、
を、含み、正しく処理が行われた場合はＫi′＝Ｋiとなることを用いて、Ｋiを、ＵとＶiとの間でセッション用の共通鍵として用いる。
【００３４】
また、上記の匿名資格認証方法であって、
（１）において、
Ｕは、Ｚｑ*からγiを選択し（ここで、ｉ∈Ｉで、Ｉはｎ人のサービス提供者からｍ人選択したものであり、Ｉ⊆（１、・・・、ｎ））、
リクエストにＺi＝γiＲViを追加し、
（Ｕ、Ｘ1、Ｘ2、Ｚi）をリクエストとして、
（２）において、
Ｓがチケット＾σ、を発行する際に、
Ｗi＝βＺiとし、
（３）において、Ｕは、チケットについて２つの有効性をチェックする。つまり、
ｅ（Ｙ1，Ｙ2）と、ｅ（Ｘ1＋Ｆ，ＲS）とが一致するかどうか、と、
ｅ（Ｗi，Ｐ）と、ｅ（ＲVi，Ｙ2）γiとが一致するかどうか、とを見て、
２．σi＝ｅ（Ｙ1，αδiＷi）Ξ、ここでΞ＝αδiγi-1、
とするものである。
【００３５】
また、関数ｈ（・）は、ウォータのハッシュ関数Ｈｗ（・）で領域がＧ１のものであるとするとき、上記のＦをｈ（ｔ）で置き換えることによってタイムスタンプ機能を付加するものである。ここでｔは時刻情報であり、ここでは、チケットの有効期限を指定可能である。
【００３６】
Ｇ１とＧ２は、楕円曲線上の群であることで、安全な匿名資格認証方法とすることができる。  
【発明を実施するための最良の形態】
【００３７】
本発明は、図１に示す様に、公衆ネットワーク回線に接続されたサービス利用者端末Ｕ、チケット発行者端末Ｓ、複数のサービス提供者端末Ｖj（j＝１、…、ｎ）間で、それぞれの公開鍵を交換して、暗号鍵を共有する方法であって、サービス利用者端末Ｕからどのサービス提供者端末Ｖjを利用したかを、サービス利用者端末Ｕ以外から知られることのない匿名資格認証方法に関するものである。
以下の説明においては、煩雑さを避けるために、サービス利用者端末Ｕをサービス利用者あるいは単に利用者と、同様に、チケット発行者端末Ｓをチケット発行者と、複数のサービス提供者端末Ｖjをサービス提供者あるいは認証者と、それぞれ呼ぶ場合がある。
【００３８】
以下に於いて、Ｇ１は大きな素数ｑを位数とする加法群とし、Ｇ２はｑを位数とする乗法群とする。Ｐ、Ｑ、ＦはＧ１上のトリビアルでない要素とし、ｅをＧ１×Ｇ１からＧ２への双線形写像とし、これをペアリングと呼ぶ。
【００３９】
また、Ｓ、Ｕ、Ｖjの秘密鍵は、何らかの選択方法Ａによって、ｑと互いに素な乗法群Ｚｑ*から、偏りなく選択されるものとし、それぞれｘS、ｘU、ｘViとする。つまり、秘密鍵は、それぞれＺｑ*の要素である。
【００４０】
Ｓ、Ｕ、Ｖjの公開鍵は、それぞれ
ＲS＝ｘSＰ、ＲU＝ｘUＰ、ＲVj＝ｘVjＰ、
である。Ｐ、Ｑ、Ｆと、Ｇ１とＧ２の位数ｑは、公開されているものとする。
【実施例１】
【００４１】
この実施例で想定するシングルサインオンは、上記のグループ管理者に相当する一人のチケット発行者Ｓ（認証者）と、複数のサービス提供者Ｖｊ（サービス提供者は検証者でもある）で構成する（ここで、ｊ＝１、・・・、ｎ）。また、各Ｖｊに対して、利用者Ｕの匿名性を満たす。Ｕは複数のサービスＶ1、Ｖ2、を利用したとしても、その利用履歴はどのエンティティにも漏れない。そこで、上記の、完全性、検証者制限可能性、再利用不可能性、の３つの機能にさらに以下の要求条件を追加する。
認証性      ：Ｓは認証子発行時に、Ｕの認証を行う。
追跡不可能性：Ｕは＾σj利用の有無をＳに知られない。また同時に、複数のＶやＳとＶが結託してもＵの利用履歴を追跡できない。
匿名鍵共有性：安全な通信路を構成するための暗号化鍵をＵとＶiは共有する事ができる。
【００４２】
また、この実施例の概要を示すと、まず、チケット型のシングルサインオン方式を採用するという特徴がある。また、初めてサービスを利用する利用者Ｕはチケット発行者Ｓにチケット＾σの発行を要求する。Ｓは、Ｕが正しい利用者（Ｓの管理する利用者）である事を認証し、利用可能サービススを指定した＾σを発行する。Ｕは、＾σの正当性を検証し、正しければ指定されたサービスＶi用のチケットσiに変換する。Ｖiを利用するときには、σiを提示する。Ｖiはσiの正当性を検証し、正しい場合はセッション鍵Ｋiを共有する。
【００４３】
基本プロトコル
基本プロトコルにおけるチケット発行者をＳとする。Ｓは、Ｕがアクセスできるサービス提供者Ｖiを全て知っているものとする。
【００４４】
［セットアップルーチン］
セットアップルーチンで、システム管理者によりＵ、Ｓ、Ｖj（j＝１、…、ｎ）の秘密鍵、公開鍵を生成し、それぞれに秘密に配布する。
【００４５】
［チケット取得ルーチン］
チケット取得ルーチンで、ＵがＳに上記の公開鍵を用いた要求によって単数あるいは複数のＶi（i⊆｛１、…、ｎ｝）にアクセスするためのチケットの発行を要求し、チケット発行者端末Ｓが上記の公開鍵を用いたチケットを発行する。
【００４６】
図２に示す様に、ＵがＶiのチケット（ｉ⊆１、…、ｎ）を取得しようとするとき、Ｕは、次の計算を行い、Ｕの識別子とともに、チケット発行者Ｓに送る。
１．Ｚｑ*からαをランダムに偏りなく選ぶ。
２．Ｘ1＝α-1ｘUＱを計算する。
３．Ｘ2＝αＲSを計算する。
この場合、（Ｕ、Ｘ1、Ｘ2）がリクエストとなる。
【００４７】
Ｓがこのリクエストを受け取ると、
ｅ（Ｘ1、Ｘ2）と、ｅ（Ｑ、ＲU）Xsとが一致するかどうかを調べる。
一致する場合は、チケットを有効化するために次のようにする。
１．Ｚｑ*からβをランダムに偏りなく選ぶ。
２．Ｙ1＝β-1ｘS（Ｘ1+Ｆ）を計算する。
３．Ｙ2＝βＰを計算する。
４．サービス提供者（検証者でもある）の複数Ｉを選ぶ。
Ｉ⊆（１、・・・、ｎ）。
５．Ｗi＝βＲViを計算する。（ｉ∈Ｉ）。
６．チケットとして（Ｙ1、Ｙ2、Ｗi）として＾σにセットする。
【００４８】
［チケット利用ルーチン］
チケット利用ルーチンでは、Ｕが利用しようとするＶｉに対して上記の公開鍵を用いたチケットσｉを生成して送信し、Ｖｉでσｉの検証を行なう。
【００４９】
（＾σ，Ｉ）が有効なチケットである場合、サービス利用者Ｕは、
ｅ（Ｙ1，Ｙ2）と、ｅ（Ｘ1＋Ｆ，ＲS）とが一致するかどうか、と、
ｅ（Ｗi，Ｐ）と、ｅ（ＲVi，Ｙ2）とが一致するかどうか、とを、見て、一致するようであれば次に進める。
【００５０】
検証
Ｕは、リストＩに属するサービス提供者Ｖiに記帳しようとするとき、次の計算を行う。
１．Ｚｑ*からδiをランダムに偏りなく選ぶ。
２．σi＝ｅ（Ｙ1，αδiＷi）を計算する。
３．ρi＝αδiＸ1を計算する。
４．ηi＝αδiＲSを計算する。
【００５１】
Ｖiに対する有効なチケット（σi、ρi、ηi）を、サービス提供者Ｖiに送る。
【００５２】
［鍵共有ルーチン］
鍵共有ルーチンでは、Ｖｉが上記の秘密鍵を用いた共有鍵生成情報Ｔｉを生成して送信し、ＵとＶｉとの間で共有鍵Ｋｉの共有を行なう。
【００５３】
サービス提供者Ｖiは、それを受け取ると、
（ｅ（ρi，ＲS）ｅ（Ｆ，ηi））XViと、σiと、が一致するかどうかを見て、一致する場合は、セッション用の共通鍵を計算する。
１．Ｚｑ*からλiをランダムに偏りなく選ぶ。
２．Ｔi＝λiｘViＱを計算する。
３．Ｋi＝ＫＤＦ（（ｅ（ρi，ＲS）XVi）λi）
ＫＤＦは、鍵導出関数であり、例えば、ＩＥＥＥ標準１３６３−２０００で定義されるＫＤＦ１関数を用いることができる。
【００５４】
鍵の共有
その後、ＴiをＵに送る。Ｕでは、セッション用の共通鍵Ｋi′を次のように計算する。
Ｋi′＝ＫＤＦ（ｅ（Ｔi，ＲS）δiXu）
【００５５】
上記のプロトコルが正確に実行された場合は、Ｋi＝Ｋi′となるので、ＵとＶiとの間で秘密鍵として用いることができる。
【００５６】
次に、この実施例が、上記の、完全性、検証者制限可能性、再利用不可能性、認証性、追跡不可能性、匿名鍵共有性を満たしているか、を検証する。
【００５７】
完全性          ：正しくプロトコルを実行する事で、指定されたサービス提供者Ｖiのみと、必ずセッション鍵Ｋiを共有する事が可能である。
【００５８】
検証者制限可能性：チケット＾σ、各サービス提供者用に変換後のチケットσiの検証には，Ｒiが必要となる。ここで、Ｒiの生成にはチケット発行者Ｓが生成した乱数βと秘密鍵ｘSが必要となるため，正しく検証可能なσiの生成は困難である。
【００５９】
再利用不可能性  ：変換後のチケットσiを検証するためには、サービス提供者Ｖiの秘密鍵ｘiが必要となる。そのため、Ｖi以外のサービス提供者およびチケット発行者Ｓはその正当性を検証できないため利用不可能である。
【００６０】
認証性          ：利用者Ｕは認証要求ｒｅｑ＝（Ｕ，Ｘ1，Ｘ2）を生成する。ここで、Ｘ1はメッセージα-1Ｑに対するＵの署名であると見なす事が出来る。そのため，ｒｅｑを生成可能なのはＵに限定される。したがって、ｒｅｑをＳが検証する事で、Ｕの認証とする事が可能である。
【００６１】
追跡不可能性      ：各サービス提供者に示すチケットσiを生成する際、δiによりランダマイズ化する事でサービス提供者ごとに異なったチケットを生成する。そのため、２人の異なるサービス提供者Ｖi、Ｖi′が結託しても、σiとσi′が同じＵが生成したものであるか特定する事は困難である。また、たとえＳとＶｉが結託した場合でも、Ｕにより生成されたδiを知る事無くＳが＾σとσiを関連づける事は困難である。
【００６２】
匿名鍵共有性：ＵとＶiが共有する鍵Ｋiを生成するには、正しいσiとＶiの秘密鍵ｘiまたは、ＴiとＵの秘密鍵ｘuが必要であるため、ＵとＶiの間でしか正しく共有する事はできない。
【００６３】
上記のチケット取得ルーチンにおいて、チケット発行者端末Ｓは、要求されたチケットに対して、サービス内容あるいはチケット数において、制限されたチケットを発行することができる。この場合は、サービス提供者（検証者でもある）の複数Ｉの内容を変更することになる。
【００６４】
また、上記のチケット取得ルーチンにおいて、チケット発行者端末Ｓは、当初、ＵがＳに対して行なうチケット発行の要求は利用可能なＶjの全てである、と見做すことで、全指定の場合の手続きを減らすことが出来る。
【００６５】
また、チケットを複数回利用する場合は、上記のチケット利用ルーチンと、鍵共有ルーチンとを連続して、チケットの利用数に応じた複数回繰り返し行なう。その際、前記繰り返しの度に、σｉの生成に異なる符号、例えば乱数列から選択した数を用いることで、容易に追跡不可能な符合とすることができる。
【実施例２】
【００６６】
特に、サービス提供者Ｖiがサービス利用者Ｕから指名されるが、これをＳからは見えないようにすることができる。Ｓが入手する情報は、Ｕがアクセスすることのできるサービス提供者の番号のみである。上記の基本プロトコルで、Ｓに対してサービス提供者の情報は開かれているが、これを閉じることは容易である。
【００６７】
この場合、Ｕは、まず、Ｚｑ*からγiをランダムに偏りなく選ぶ。ここで、ｉ∈Iで、Ｉはサービス提供者（検証者でもある）の複数であり、Ｉ⊆（１、・・・、ｎ）である。
また、リクエストに
Ｚi＝γiＲViを追加する。結局リクエストは（Ｕ、Ｘ1、Ｘ2、Ｚi）となる。
Ｓがチケット＾σ、を発行する際に、
Ｗi＝βＺiとする。
Ｕは、チケットについて２つの有効性をチェックする。つまり、
ｅ（Ｙ1，Ｙ2）と、ｅ（Ｘ1＋Ｆ，ＲS）とが一致するかどうか、と、
ｅ（Ｗi，Ｐ）と、ｅ（ＲVi，Ｙ2）γiとが一致するかどうか、とを見る。
指定のチケットは、次のようになる。
２．σi＝ｅ（Ｙ1，αδiＷi）Ξ、ここでΞ＝αδiγi-1、を計算する。
【実施例３】
【００６８】
図３に示す様に、上記のスキームを拡張してタイムスタンプを設けたものにすることができる。ただし、外部のタイムスタンプサービスを用いるのではなく、時刻情報にウォータのハッシュ関数（Waters' hash function）を用いる。
【００６９】
この場合は、次のようにする。
まず、認証者Ａが、群Ｇ１、Ｇ２、ペアリングのための写像ｅ，Ｇ１に含まれるトリビアルでない要素、Ｐ，Ｐ0，・・・，Ｐn，Ｑ∈Ｇ１を生成するものとする。
また、関数ｈ（・）は、ウォータのハッシュ関数Ｈｗ（・）で領域がＧ１のものであるとする。
このとき、上記のＦをｈ（ｔ）で置き換えればよい。時刻情報ｔはｈ（ｔ）とすることでＧ１上のトリビアルでない要素になる。ここで、ｔはチケットの利用期限情報とすることで、チケットに有効期限を設ける事が可能になる。
【産業上の利用可能性】
【００７０】
インターネット上に設けられたショッピングモールの運営者をチケット発行者とし、そのショッピングモールに属する各種の店舗をサービス提供者とし、その店舗で買い物をする者をサービス利用者とするシステムに本発明を適用することができる。
【００７１】
例えば次の様にして、定額制ダウンロードサービスに、本発明を適用することができる。
１．  セットアップルーチンは、既に済んでいるものとする。
２．  チケット取得ルーチンを実行して、サービスに加入する（例えば年会費を払う）。これによって、例えば、１年間有効なチケットが発行される。このとき、利用可能サービス（Ｖi）の違いにより年会費が異なる。
３．  会員となってソフトウェア（又は，オンデマンド配信画像や，音楽配信など）をダウンロードするときには、チケット利用ルーチンを実行し、Ｖiはチケットの有効性をチェックする。
４．  次に、上記ソフトウェアを安全にダウンロードできるように鍵共有ルーチンを実行し、鍵の共有を行う。
【図面の簡単な説明】
【００７２】
【図１】公衆ネットワーク回線に接続されたサービス利用者端末Ｕ、チケット発行者端末Ｓ、複数のサービス提供者端末Ｖj（j＝１、…、ｎ）間で、それぞれの公開鍵を交換して、暗号鍵を共有する方法であることを示す図である。
【図２】第１の実施例を示す図である。
【図３】第３の実施例を示す図である。
【図４】非特許文献１の開示を示す図である。
【図１】
2009027565.tif 000003
【図２】
2009027565.tif 000004
【図３】
2009027565.tif 000005
【図４】
2009027565.tif 000006