(57)【要約】【課題】秘密のパスワードの覚え易さと不正に対する安全性の高さのバランスを保つとともに、秘密のパスワードに用いたプライバシー情報が漏洩することのない、ユーザ認証方法の提供。【解決手段】サーバ側認証装置２とユーザ側認証装置１とでユーザ認証を行う。ユーザ側認証装置１は、パスワードの設定時に、秘密情報を閾値秘密分散法にて複数の秘密断片に分割し、ユーザから入力された複数のパスワードで前記複数の秘密断片をそれぞれ暗号化し複数の暗号化断片を生成し、これらをサーバ側認証装置２側に保存しておく。パスワードの認証時に、ユーザ側認証装置１は、保存されていた複数の暗号化断片と、ユーザから入力された不確実な複数のパスワードとによって、秘密情報候補を復元する。サーバ側認証装置２は、この秘密情報候補が正しいものか確認するために、パスワードの設定時より前に秘密情報を保持しておく。【選択図】図１
2008090547.tif 000002
【特許請求の範囲】
【請求項１】
ユーザから複数のパスワードが入力されるユーザ側認証装置と、該ユーザを認証するための検証情報を予め保存するサーバ側認証装置とにより、該ユーザを認証するユーザ認証方法であって、
パスワード登録時には、
前記ユーザ側認証装置が、秘密情報を閾値秘密分散法にて複数の秘密断片に分割し、ユーザから入力される複数のパスワードで定まる複数の秘密鍵で前記複数の秘密断片をそれぞれ暗号化し複数の暗号化断片を生成し、前記サーバ側認証装置へ前記複数の暗号化断片を送信し、
前記サーバ側認証装置が、前記複数の暗号化断片を受信し、受信した前記複数の暗号化断片と予め共有した前記秘密情報とを保存し、
パスワードの認証時には、
前記サーバ側認証装置が、前記ユーザ側認証装置へ保存していた前記複数の暗号化断片を送信し、
前記ユーザ側認証装置が、前記複数の暗号化断片を受信し、ユーザから入力される複数のパスワードで定まる複数の秘密鍵と、受信した前記複数の暗号化断片とで復号された複数の秘密断片候補の少なくとも幾つかを用いて前記閾値秘密分散法にて秘密情報候補にを復元し、復元した前記秘密情報候補から検証情報候補を得て、
前記サーバ側認証装置へ前記検証情報候補を送信し、
前記サーバ側認証装置が、前記検証情報候補を受信し、予め保存する前記検証情報と受信した前記検証情報候補とが一致するかを確認するようにしたことを特徴とするユーザ認証方法。
【請求項２】
ユーザを認証するための検証情報を予め保存するサーバ側認証装置と通信を行って、入力される複数のパスワードによるユーザ認証を行うユーザ側認証装置であって、
秘密情報を閾値秘密分散法にて複数の秘密断片に分割する秘密分割手段と、
ユーザから入力された複数のパスワードで定まる複数の秘密鍵で前記複数の秘密断片をそれぞれ暗号化し複数の暗号化断片を生成する暗号化断片生成手段と、
前記サーバ側認証装置へ前記複数の暗号化断片を送信する第１送信手段と、
認証時に、前記サーバ側認証装置から前記複数の暗号化断片を受信する第１受信手段と、
ユーザから入力される複数のパスワードで定まる複数の秘密鍵と、受信した前記複数の暗号化断片とで復号された複数の秘密断片候補の少なくとも幾つかを用いて前記閾値秘密分散法にて秘密情報候補に復元し、復元した前記秘密情報候補から検証情報候補を得る秘密情報候補復元手段と、
前記サーバ側認証装置へ得られた前記検証情報候補を送信する第２送信手段と、
前記サーバ側認証装置から、前記検証情報候補と前記検証情報とが一致するか否かを示す情報を受信する第２受信手段とを備えたことを特徴とするユーザ側認証装置。
【請求項３】
前記検証情報は前記秘密情報そのものであり、前記検証情報候補は前記秘密情報候補そのものであることを特徴とする請求項２記載のユーザ側認証装置。
【請求項４】
前記検証情報は前記秘密情報にハッシュ関数を施したものであり、前記検証情報候補は、前記秘密情報候補に該ハッシュ関数を施したものであることを特徴とする請求項２記載のユーザ側認証装置。
【請求項５】
前記検証情報は前記秘密情報の特定箇所の情報であり、前記検証情報候補は、前記秘密情報候補の該特定箇所の情報であることを特徴とする請求項２記載のユーザ側認証装置。
【請求項６】
前記秘密情報候補復元手段は、前記第２受信手段で一致しないことを示す情報を受けたとき、ユーザから入力される複数のパスワードで定まる複数の秘密鍵と受信した前記複数の暗号化断片とで復号された複数の秘密断片候補の少なくとも幾つかの秘密鍵断片候補の選択を変更して、前記閾値秘密分散法にて秘密情報候補に復元し、復元した前記秘密情報候補から検証情報候補を得るようにしたことを特徴とする請求項２記載のユーザ側認証装置。
【請求項７】
前記秘密情報候補復元手段は、前記第２受信手段で一致しないことを示す情報を受けたとき、ユーザから入力される複数のパスワードで定まる複数の秘密鍵と、受信した前記複数の暗号化断片との組み合わせを変えて、複数の秘密断片候補へ復号し、復号された複数の秘密断片候補の少なくとも幾つかを用いて前記閾値秘密分散法にて秘密情報候補に復元し、復元した前記秘密情報候補から検証情報候補を得るようにしたことを特徴とする請求項２記載のユーザ側認証装置。
【請求項８】
前記秘密情報候補復元手段は、ユーザから入力される複数のパスワードで定まる複数の秘密鍵と受信した前記複数の暗号化断片とで復号された複数の秘密断片候補の少なくとも幾つかの組み合わせを変更して、前記閾値秘密分散法にて秘密情報候補を復元し、且つ、ユーザから入力される複数のパスワードで定まる複数の秘密鍵と受信した前記複数の暗号化断片との組み合わせを変えて、複数の秘密断片候補へ復号し、復号された複数の秘密断片候補の少なくとも幾つかを用いて前記閾値秘密分散法にて秘密情報候補に復元し、復元した複数の前記秘密情報候補から複数の検証情報候補を得るようにし、
前記第２送信手段は、前記サーバ側認証装置へ復元した前記複数の検証情報候補の全てを送信するようにしたことを特徴とする請求項２記載のユーザ側認証装置。
【請求項９】
前記秘密情報は、乱数と乱数から生成される前記検証情報とを結合した情報であり、
前記秘密情報候補復元手段で復元された前記秘密情報候補から、前記検証情報の部分に対応する第１部分情報と前記乱数の部分に対応する第２部分情報とに分離し、該第２部分情報から前記第１部分情報が生成できるか判別し、生成できると判別した場合に、前記第１部分情報を前記検証情報候補として得るようにしたことを特徴とする請求項２記載のユーザ側認証装置。
【請求項１０】
前記秘密情報候補復元手段は、ユーザから入力される複数のパスワードで定まる複数の秘密鍵と受信した前記複数の暗号化断片とで復号された複数の秘密断片候補の少なくとも幾つかの組み合わせを変更して、前記閾値秘密分散法にて秘密情報候補を復元し、且つ、ユーザから入力される複数のパスワードで定まる複数の秘密鍵と受信した前記複数の暗号化断片との組み合わせを変えて、複数の秘密断片候補へ復号し、復号された複数の秘密断片候補の少なくとも幾つかを用いて前記閾値秘密分散法にて秘密情報候補に復元し、復元した複数の前記秘密情報候補から複数の検証情報候補を得るようにし、
前記第２送信手段は、前記サーバ側認証装置へ復元した前記複数の検証情報候補の全てのうち同じ検証情報候補を優先的に送信するようにしたことを特徴とする請求項２記載のユーザ側認証装置。
【請求項１１】
ユーザから入力される複数のパスワードで定まる複数の秘密鍵は、秘密の質問に対する秘密のパスワードを入力として用いる変換関数で処理したデータとするようにしたことを特徴とする請求項２乃至請求項９の何れかに記載のユーザ側認証装置。
【請求項１２】
前記変換関数は、自然言語処理により同義の秘密に対して同値の出力となるよう出力を正規化するようにしたことを特徴とする請求項１０記載のユーザ側認証装置。
【請求項１３】
ユーザを認証するための検証情報を予め保存するサーバ側認証装置と通信を行って、入力される複数のパスワードによるユーザ認証を行うための、コンピュータに実行させるプログラムであって、
秘密情報を閾値秘密分散法にて複数の秘密断片に分割させる第１のプログラムコードと、
ユーザから入力された複数のパスワードで定まる複数の秘密鍵で前記複数の秘密断片をそれぞれ暗号化し複数の暗号化断片を生成させる第２のプログラムコードと、
前記サーバ側認証装置へ前記複数の暗号化断片を送信させる第３のプログラムコードと、
認証時に、前記サーバ側認証装置から前記複数の暗号化断片を受信させる第４のプログラムコードと、
ユーザから入力される複数のパスワードで定まる複数の秘密鍵と、受信した前記複数の暗号化断片とで復号された複数の秘密断片候補の少なくとも幾つかを用いて前記閾値秘密分散法にて秘密情報候補に復元させ、復元させた前記秘密情報候補から検証情報候補を得させる第５のプログラムコードと、
前記サーバ側認証装置へ得られた前記検証情報候補を送信させる第６のプログラムコードと、
前記サーバ側認証装置から、前記検証情報候補と前記検証情報とが一致するか否かを示す情報を受信する第７のプログラムコードとを備えた、コンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザを認証するユーザ認証方法、ユーザ側認証装置、および、プログラムに関する。
【背景技術】
【０００２】
計算機などの資源、サービスなどにアクセスする際には、その権限を認証する必要のある場合があり、そのために利用者個人またはグループを特定するさまざまな認証方式が知られているが、その多くは暗号技術に基くものであり、必然的に認証される本人（またはグループ）が、本人しか知り得ない秘密情報を持つことに基いている。一般に秘密情報は不正なユーザに推測されない十分に長いバイナリデータであり、人間が記憶するには向かないため、計算機のハードディスクに保存したり、ICカードなどの記憶装置に保存したり
する。また、安全性を高めるために人間の覚えるパスワードと組み合わせて記憶することもある。
【０００３】
このように、何らかの秘密情報を持つことに基く認証では、万一利用者が秘密情報の格納されたＩＣカードを紛失したり、ハードディスクの障害により秘密情報が不意に失われたり、またそれらを暗号化するためのパスワードを忘れたりすると、利用者を認証することができなくなるため、何らかの方法で利用者を救済する必要が生じる。
【０００４】
従来から、秘密のパスワードを登録し、認証時にそのパスワードを入力させ認証する方法が良く利用されている。例えば、利用者の母親の旧姓や飼っているペットの名前などを「秘密のパスワード」として認証する側に予め登録しておき、認証時には「秘密のパスワード」を正しく言い当てた利用者に対し権利を与える。
【０００５】
しかし、上記の認証方法では、秘密情報が他人から簡単に推測できたり、いくつかの可能性を繰り返し試したり、あるいは戸籍を調査して調べたりすることによって第三者が不正に認証を得ることが決して難しく無い。
【０００６】
また、第三者に推測されないように「秘密のパスワード」を意味のない非常に複雑なものにすると、今度は本人がそれを忘れてしまう可能性が高くなり、実用的ではない。
【０００７】
また、この問題を防ぐために、本人が忘れない簡単な「秘密のパスワード」を沢山登録しておけば良いという考え方もあるが、その場合、本人しか知り得ない沢山の「秘密のパスワード」を登録するために開示する必要がある。このような方法を、特にオンラインサービスに適用する場合には、認証を行う側へ、「秘密のパスワード」を多数開示する必要がある。「秘密のパスワード」は、ユーザのプライバシ情報であることが多く、プライバシ情報の漏洩にもつながる。
【０００８】
さらには、こういった方法でパスワードリカバリを行う（認証する側の）オンラインサービス提供者（以下サイトと略す）が複数現れた場合、プライバシーがあちこちに漏洩してしまうという問題のみならず、サーバーのクラッキングや管理者の不正などにより、ひとつのサイトから「秘密のパスワード」が漏洩した際に、その利用者の使っている全てのサイトで不正に認証されてしまう。典型的には、オンラインゲームのサイトがクラックされたが為に、別のサイトである自分の銀行口座からお金を引き出されてしまう。これでは利用者は安心して自分の「秘密のパスワード」を登録することはできない。
【０００９】
「秘密のパスワード」の漏洩を防止する方法としては、特許文献１がある。これには、母親の旧姓などの秘密情報を符号化することで暗号化し、その結果を鍵として使用して秘密鍵を暗号化する。さらに承認機関の公開鍵を使用して非対称暗号化により再び暗号化し、その結果を鍵回復ファイルとして記憶する。これにより万一秘密鍵を失っても、母親の旧姓などの秘密情報から秘密鍵を復元することができる。しかし、この方法では、母親の旧姓などの秘密情報を開示せずに秘密鍵が復元できるという効果はあるものの、第三者が簡単な「秘密のパスワード」を言い当てることで不正に認証ができてしまうという問題は解決できない。不正な鍵回復を行わせないためには、非対称暗号化に用いた秘密鍵を持っている信頼できる承認機関がユーザを認証しなければならず、本来の認証相手（サイト）が利用者の認証をするという要求に答える方式ですらない。
【特許文献１】特開平１１−２１５１１７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上述したように従来からの「秘密のパスワード」を用いたユーザ認証方法では、容易に秘密のパスワードが破られたり、沢山の秘密のパスワードを覚える必要があったり、サービス提供者にプライバシー情報を知られる必要があり情報漏洩が危惧されたり、あるサイトから漏れた秘密のパスワードを元に別のサイトのサービスに不正にアクセスされてしまうなどの問題があった。
【００１１】
本発明は秘密のパスワードの覚え易さと不正に対する安全性の高さのバランスを保つとともに、秘密のパスワードに用いたプライバシー情報が漏洩することのない、ユーザ認証方法、ユーザ側認証装置、および、プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明は、ユーザから複数のパスワードが入力されるユーザ側認証装置と、該ユーザを認証するための検証情報を予め保存するサーバ側認証装置とにより、該ユーザを認証するユーザ認証方法であって、パスワード登録時には、前記ユーザ側認証装置が、秘密情報を閾値秘密分散法にて複数の秘密断片に分割し、ユーザから入力される複数のパスワードで定まる複数の秘密鍵で前記複数の秘密断片をそれぞれ暗号化し複数の暗号化断片を生成し、前記サーバ側認証装置へ前記複数の暗号化断片を送信し、前記サーバ側認証装置が、前記複数の暗号化断片を受信し、受信した前記複数の暗号化断片と予め共有した前記秘密情報とを保存し、パスワードの認証時には、前記サーバ側認証装置が、前記ユーザ側認証装置へ保存していた前記複数の暗号化断片を送信し、前記ユーザ側認証装置が、前記複数の暗号化断片を受信し、ユーザから入力される複数のパスワードで定まる複数の秘密鍵と、受信した前記複数の暗号化断片とで復号された複数の秘密断片候補の少なくとも幾つかを用いて前記閾値秘密分散法にて秘密情報候補にを復元し、復元した前記秘密情報候補から検証情報候補を得て、前記サーバ側認証装置へ前記検証情報候補を送信し、前記サーバ側認証装置が、前記検証情報候補を受信し、予め保存する前記検証情報と受信した前記検証情報候補とが一致するかを確認するようにしたことを特徴とする。
【００１３】
また、本発明は、ユーザを認証するための検証情報を予め保存するサーバ側認証装置と通信を行って、入力される複数のパスワードによるユーザ認証を行うユーザ側認証装置であって、秘密情報を閾値秘密分散法にて複数の秘密断片に分割する秘密分割手段と、ユーザから入力された複数のパスワードで定まる複数の秘密鍵で前記複数の秘密断片をそれぞれ暗号化し複数の暗号化断片を生成する暗号化断片生成手段と、前記サーバ側認証装置へ前記複数の暗号化断片を送信する第１送信手段と、認証時に、前記サーバ側認証装置から前記複数の暗号化断片を受信する第１受信手段と、ユーザから入力される複数のパスワードで定まる複数の秘密鍵と、受信した前記複数の暗号化断片とで復号された複数の秘密断片候補の少なくとも幾つかを用いて前記閾値秘密分散法にて秘密情報候補に復元し、復元した前記秘密情報候補から検証情報候補を得る秘密情報候補復元手段と、前記サーバ側認証装置へ得られた前記検証情報候補を送信する第２送信手段と、前記サーバ側認証装置から、前記検証情報候補と前記検証情報とが一致するか否かを示す情報を受信する第２受信手段とを備えたことを特徴とする。
【００１４】
また、本発明は、ユーザを認証するための検証情報を予め保存するサーバ側認証装置と通信を行って、入力される複数のパスワードによるユーザ認証を行うための、コンピュータに実行させるプログラムであって、秘密情報を閾値秘密分散法にて複数の秘密断片に分割させる第１のプログラムコードと、ユーザから入力された複数のパスワードで定まる複数の秘密鍵で前記複数の秘密断片をそれぞれ暗号化し複数の暗号化断片を生成させる第２のプログラムコードと、前記サーバ側認証装置へ前記複数の暗号化断片を送信させる第３のプログラムコードと、認証時に、前記サーバ側認証装置から前記複数の暗号化断片を受信させる第４のプログラムコードと、ユーザから入力される複数のパスワードで定まる複数の秘密鍵と、受信した前記複数の暗号化断片とで復号された複数の秘密断片候補の少なくとも幾つかを用いて前記閾値秘密分散法にて秘密情報候補に復元させ、復元させた前記秘密情報候補から検証情報候補を得させる第５のプログラムコードと、前記サーバ側認証装置へ得られた前記検証情報候補を送信させる第６のプログラムコードと、前記サーバ側認証装置から、前記検証情報候補と前記検証情報とが一致するか否かを示す情報を受信する第７のプログラムコードとを備えた。
【発明の効果】
【００１５】
本発明によれば、秘密のパスワードの覚え易さと不正に対する安全性の高さのバランスを保ちつつ、秘密のパスワードに用いたプライバシー情報が漏洩することなく認証を実現できる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施形態を詳細に説明する。 
図１は、本実施の形態のシステム全体の機能ブロックを示している。本システムは、ユーザから入力される複数の秘密のパスワードを登録しておき、認証が必要な際にユーザへそれら複数のパスワード入力させるが、その際に、ユーザが幾つかの秘密のパスワードを忘れていても、あるいは、誤って覚えていたとしても、残りの秘密のパスワードがある数以上で正しい場合に、認証結果が正しいことを得ることが可能なものである。なお、ここで言う「秘密のパスワード」とは、一般にユーザ本人以外には知り得ない、または知ることが困難なデータのことを指す。
【００１７】
本システムは、ユーザ側認証装置１とサーバ側認証装置２とを備え、また、機能としてみた場合には、本システムは、ユーザ側認証装置１とサーバ側認証装置２とが協働で動作するパスワードの登録機能部３とパスワードの確認機能部４とを有しているともいえる。
【００１８】
そこでまず、パスワードの登録機能部３の構成について説明する。
【００１９】
秘密情報保存部１１および秘密情報保存部２１は、何らかの方法で予め共有された秘密情報を保存している。
【００２０】
ここで秘密情報とは、認証作業に必要となる任意の値であり他人に推測できないような性質を持つものである。例えば乱数発生装置（図示しない）によって発生された全く意味の無い乱数で良い。また、安全性を高めるため、この乱数はできるだけ長いものであることが好ましい。
【００２１】
この秘密情報は、認証を行うサーバ側認証装置２とユーザ側認証装置１との間でのみ知ることのできる秘密であり、例えば、ユーザ側認証装置１は、別の異なるサーバ側認証装置（図示しない）との間では別の秘密情報を持つことが好ましく、同様に、サーバ側認証装置１は、別の異なるユーザのユーザ側認証装置（図示しない）に対しては別の秘密情報を持つことが好ましい。
【００２２】
また、ここでは秘密情報は、秘密情報保存部１１および秘密情報保存部２１の間で予め保存しておくとしたが、これに限るものではなく、サーバ側認証装置２またはユーザ側認証装置１が生成しそれを相手に送信しても良い。この場合、送信するタイミングは、実際に秘密のパスワードの登録時点でも良いし、それ以前に送信しておいても良い。また、秘密情報を自ら生成するのではなく、外部で生成された秘密情報を入力し利用するのでも構わないのは言うまでもない。
【００２３】
また、ここでは秘密情報はユーザ側認証装置１とサーバー側認証装置２とで同じものを持つようにしたが、正確には同じものに基づいていれば良い。例えば、ユーザ側認証装置１の秘密情報が十分な長さを持つのであれば、そのうちの一部分をサーバ側認証装置２で持つようにしても（信頼性ある一致の確認ができるので）良いし、例えば、ユーザ側認証装置１の秘密情報を所定の方法で変換して、サーバ側認証装置２で持つようにしても良い。後者の例については、詳細には後述する。
【００２４】
また、送信にあたっては、暗号化通信路を用いるなどして、送信した秘密情報が第三者に傍受されぬように行う。暗号化通信路についてはＳＳＬ(Secure Sockets Layer)などの一般に知られている方式を用いれば良く、特に説明しない。
【００２５】
暗号化断片生成部１２は、秘密情報と秘密のパスワードの組（ここではｎ個の組）を入力し、複数（ここではｎ個）の暗号化断片を出力するものである。図２に暗号化断片生成部１２の機能ブロック図を示し、詳細に説明する。
【００２６】
秘密分割部４１は、秘密情報保存部１１からの秘密情報を入力し、閾値秘密分散法によりｎ個の秘密断片を生成するものである。
【００２７】
ここで言う閾値秘密分散法とは、(k, n)秘密分散方式、またはk-out-of-n分散方式などと呼ばれているものであり、分割された秘密断片n個のうち、任意のk個 (k < n) が得られれば、そのk個の秘密断片から元の情報を復元することのできる手法である。つまりk個以上の秘密断片を知れば復元できるという意味で閾値秘密分散法と呼ばれている。
【００２８】
閾値秘密分散法を実現する代表的な手法として多項式を用いたShamirの手法(A. Shamir: How to Share a Secret, Communications of the ACM, Vol. 22,  No. 11, pp. 612-613, 1979)や、射影幾何を用いたBlakleyの手法(G. R. Blakley:  Safeguarding Cryptographic Keys, Proc. of AFIPS 1979 National Computer  Conference, Vol. 48, pp. 313-317, 1979)などが知られている。 
秘密分割部４１が、秘密情報からn個の秘密断片を生成する部分については、例えばこれら公知の閾値秘密分散法を用いれば構成することができるが、特にこれらの方式に限定するものではなく、一般に閾値秘密分散法であればいかなる方式を用いても良く、その分割のアルゴリズムについては本明細書では説明を省略する。また、後述する、複数の秘密断片から秘密を復元する際のアルゴリズムについても同様に説明を省略する。
【００２９】
なお、閾値秘密分散法において、特定の入力情報に対し、出力となる断片の組み合わせは一意には決まらない。閾値秘密分散法の性質上、処理過程においてランダム性のある値を用いることができるため、実行ごとに異なる秘密断片の組み合わせを出力するのが一般的である。秘密分割部４１においては、出力が一意に決まる場合であっても、決まらない場合であっても、本実施の形態の有効性は損なわれることは無いが、願わくば一意に決まらない方式を用いた方が安全性はより高まると考えられる。一意に決まらない方式については、既に述べた公知の文献手法で実現することができる。
【００３０】
次に、図２の秘密断片暗号部４２は、 秘密分割部４１で生成されたn個の秘密断片を入力し、ユーザ操作による外部から入力されるｎ個の秘密のパスワードに基づくｎ個の秘密鍵でそれぞれ暗号化し、ｎ個の暗号化断片を生成するものである。
【００３１】
ここで、秘密鍵とは何かについて、その意味をより具体的に例を挙げて説明する。まずユーザが何等かの秘密を考える。例えば、「初恋の相手のあだ名はオラウータンだった」というのをひとつの秘密に決めるとする。この秘密はかなりの高い確率で本人は忘れないようなものである。もちろん、そのユーザの知人なら誰でもその初恋の相手が誰だったか知っているような場合にはこれは悪い例であるし、さらにそのあだ名が有名なものであれば一層秘密が破られる危険性が高くなるので好ましくない。ただし、本実施の形態の特徴として、万一この秘密が誰かに知られたとしても、すぐさま不正に正しい認証を得られるということは無いという安全性の高さがある。
【００３２】
また、「初恋の相手」のような良くありそうな秘密では攻撃者に推測され易いとの考えから、突飛な秘密を考えることもできる。例えば、「小学校の時タイムカプセルにしまった文集は徹夜で書き上げたものだ」のようなものである。これがほとんど忘れないような重要な記憶であれば良いのだが、必ずしもそうではないだろう。本実施の形態では、必要となる秘密の数(k および n)を自由に設定できるので、個々の秘密を極端に難しくしなくても、k の値を大きめに取るなどの方法で安全性と利便性のバランスを取ることができるため、こういった秘密のレベル（覚え易さ）が問題にならないというメリットもある。
【００３３】
ここで、本実施の形態における秘密鍵の生成方法について、説明する。図３は、ｎ個の秘密鍵の生成のための機能ブロック図であり、図４は、ユーザＩ／Ｆの一例である。この例では、図４のようにユーザＩ／Ｆを介し、ｎ個の秘密の質問を提示し、ユーザはこれらの質問に対し、入力部を介して秘密の回答を行うことにより、ｎ個の秘密のパスワードが入力される。入力されたｎ個のパスワードは、必要に応じて正規化したのち、ダミー定数を加えたものをハッシュ関数でハッシュし、秘密鍵を生成する。ここで、正規化とは、秘密の回答によって秘密断片を暗号化する秘密鍵を導出する際、自然言語処理により同義の秘密に対して同値の出力となるような変換関数で、出力を正規化することを指す。
【００３４】
例えば、秘密のパスワード登録時には「初恋の相手のあだ名はオラウータンだった」という秘密のパスワードから秘密鍵を生成したのにもかかわらず、秘密のパスワード確認時には、「初恋の人のあだ名はオラウータンだった」という秘密を思い出し、単純に入力したのでは、設定時とは異なる秘密鍵が生成されるため、この秘密鍵をもって復号化断片を復元することはできない。
【００３５】
このような場合、秘密のパスワード文字列をそのままハッシュ関数にかけるのではなく、("初恋", "あだ名", "オラウータン")といった意味の素片に分解してからハッシュ関数にかけた方が好ましいことになる。さらにはこの素片を５０音順に並べ替え、("あだ名", "オラウータン", "初恋")とするなどしてより正規化を確実にすることも考えられる。さらには、「あだ名」の代わりに「ニックネーム」などを入力しても同一視できるように正規化することもできる。これらの正規化方法については、一般に知られている自然言語処理の要約などの技術を用いれば良く、本明細書においては、その詳細説明を省略する。
【００３６】
また、ハッシュ部への入力にダミー定数を加えることはオプションであり、ダミー定数は無くともよい。
【００３７】
更に、ｎ個の秘密鍵の生成の一部、あるいは全部を図５に示すような指紋認証、等のバイオメトリクス情報で実現するようにしても良い。ユーザが指紋入力センサに指をかざし、指紋データが入力されると、従来から知られている一般的な指紋認証の技術を用いることにより、特徴点を抽出し、さらにそのデータを正規化することによって、特定の指からは同一の値が出力されるようにし、そのデータをさらにハッシュ部を通してハッシュすることにより秘密鍵を生成する。ここでハッシュするのは安全性のためであり、ハッシュ部は無くとも良い。
【００３８】
その他、同様に秘密鍵を生成する方法はいろいろと考えられる。例えば、ユーザの記憶している６桁の数字を暗証番号として用いたり、乱数発生器によって発生した乱数をメモリカードなどの記憶装置に格納してそれを用いるなどで実現しても良い。
【００３９】
本実施の形態の秘密鍵の生成方法の場合は、秘密のパスワードを決められた箇所に入力させるため各パスワードは順番を持つことができ、各パスワード（および各秘密鍵）と秘密断片とは対応関係を持つことができる。なお、ここでは、入力される秘密の回答（パスワード）を変換して秘密鍵を生成しているが、秘密鍵はパスワードそのものでも良い。
【００４０】
また、秘密断片暗号部４２の各暗号化処理において、同じ暗号化アルゴリズムを用いても、異なる暗号化アルゴリズムを用いても良いが、後者の場合、その暗号化断片とその暗号化アルゴリズムとの対応が取れるシステム構成の場合に限るのが好ましい。対応が取れるとは、例えば、ユーザがパスワードを入力するために提示される秘密の質問が広く公開されたものであり、その順番も決まっているようなシステムにおいて、秘密鍵がその秘密の質問に対応する秘密の回答から生成されるような場合を言う。こういった場合であればn個の暗号化断片がそれぞれどの暗号化アルゴリズムによって暗号化されたのかが不明にならないので問題が生じない。あるいは、ある番号はある秘密鍵生成方法だと判っているような場合は必然的に異なる暗号化アルゴリズムで問題が無くなる。例えば５番目の暗号化断片は、秘密のパスワードとして右手人差し指の指紋入力より生成されるデータを秘密鍵として用いる、と決まっているシステムにおいては、その秘密鍵を適用する暗号アルゴリズムは他の断片の暗号化に用いる暗号アルゴリズムと一致していても異なっていてもシステム構成上さしたる問題は生じない。
【００４１】
なお、本実施の形態においては、秘密断片の暗号化に用いるn個の秘密鍵の全てまたは大部分はユーザの記憶を元に生成されることを想定して記述するが、勿論n個のうちの一部の秘密鍵について異なる性質を持つ秘密鍵を用いたとしても本実施の形態の主旨は損なわれない。
【００４２】
秘密断片暗号部４２は、 上記のようにして生成したｎ個の暗号化断片を出力する。
【００４３】
図１に戻り、暗号化断片送信部１３は、暗号化断片生成部１２の秘密断片暗号部４２からのｎ個の暗号化断片の全てをサーバ側認証装置２に送信するものである。この送信は、暗号通信路を用いるのが好ましいが、必ずしもそれに限定する必要は無い。
【００４４】
暗号化断片受信部２２は、ユーザ側認証装置１の暗号化断片送信部１３から送信された全ての暗号化断片を受信する。
【００４５】
暗号化断片保存部２３は、暗号化断片受信部２２で受信した全ての暗号化断片を保存する。なお、説明を簡略化するためにn個の暗号化断片は同一に処理および送信されまた同一の記憶装置に保存されるものとして記述するが、勿論一部の暗号化断片を別の記憶装置（例えば別のサーバ装置やユーザが別途保管するリムーバブルディスク等やサーバ管理者が別途保管するバックアップ装置等）に保存するという形態も当業者によって容易に想像し得るので、別途説明することは省略する。
【００４６】
以上で、秘密のパスワードの登録機能部３は構成され、また、ユーザからの秘密のパスワードの組がサーバ側認証装置２に知られることなく登録される。
【００４７】
なお、サーバ側認証装置２おいては、暗号化断片保存部２３に保存された複数の暗号化断片の全てを、少なくともパスワードの確認機能４でパスワードの確認が行われるまでは、保存しておかなければならない。一方、ユーザ側認証装置１においては、複数の暗号化断片の送信が完了すれば秘密情報も複数の暗号化断片も保存する必要は無い。そもそも、ユーザ側認証装置に、ユーザのみアクセス可能な記憶領域に秘密情報や秘密のパスワード（秘密鍵）を記憶しているのであれば、本実施の形態の仕組みは必要なく、本実施の形態は、そのような秘密情報や秘密のパスワード（秘密鍵）を失った場合においても、条件を満たせば回復できる仕組みを提供するものである。なお、本実施の形態は、秘密情報がたまたま残っていたというケースを除外するものではない。
【００４８】
次に、パスワードの確認機能部４について、構成を説明する。
【００４９】
暗号化断片取得部２４は、暗号化断片保存部２３に保存されるユーザ側認証装置１の暗号化断片を全て読み出す。暗号化断片取得部２４は、サーバ側認証装置２が何等かのサービスを能動的に提供するにあたり、必要に応じて読み出し動作を開始しても良いし、あるいはユーザ側認証装置１からの要求信号（図１上の暗号化断片取得部２４への点線の矢印）により、読み出し動作を開始しても良い。例えば、ユーザ側認証装置１から特定のユーザ名をサーバ側認証装置２に送信することにより、サーバ側認証装置２は、そのユーザ名に該当するユーザについての暗号化断片をそのユーザ側認証装置１に送信するようにしても良い。
【００５０】
暗号化断片送信部２５は、暗号化断片取得部２４で読み出された全ての暗号化断片をユーザ側認証装置１へ送信する。なお、この送信においても、上記の暗号化断片送信部１３の説明の時と同様、暗号通信路を用いることが望ましいが、これに限るものではない。
【００５１】
暗号化断片受信部１４は、送信された全ての暗号化断片を受信する。
【００５２】
秘密情報復元部１５は、暗号化断片受信部１４で受信した全ての暗号化断片を入力し、また、ユーザ操作によって入力されるパスワードの組を入力し、これら入力に基づいて秘密情報を復元を試み、その復元結果を出力するものである。
【００５３】
図６に、秘密情報復元部１５の機能ブロック図を示し、詳細に説明する。
【００５４】
秘密断片復号部５１は、暗号化断片受信部１４で受信したｎ個の暗号化断片を、ユーザ操作によって入力されるパスワードの組に基づく秘密鍵によって復号する。パスワードの入力方法は、上記で説明した秘密断片暗号部４２と同様の方法で入力させればよい。但し、登録の処理時とは異なり、この確認の処理時のタイミングでは、ユーザ操作によって入力されるパスワードの組の幾つかのパスワードは、ユーザが忘れたため未入力になったり、ユーザの勘違いなどによる誤った入力になったりすることを想定している。
【００５５】
従って、秘密断片復号部５１では、ｎ個全ての暗号化断片のうち、対応する秘密鍵があるもののみを復号し、各復号結果（以下、復号化断片と称する）を出力する。ここで注意すべき点として、各復号化断片は、パスワードが未入力だったものを除き全てある（ｍ個とする、ｍはｎ以下の正整数）が、パスワードが誤っている場合には、本来生成されるべき復号化断片と異なるものが含まれていることである。そこで、復号化断片選択部５２は、生成された各復号化断片から、ｋ個を選択する。このｋ個は、先に説明した閾値秘密分散法の説明時に記載した際に登場したｋ個であり、秘密断片（＝復号化断片）から元の情報（＝秘密情報）を復元するために必要な個数である。なお、復号化断片の総数ｍ個が、ｋ個に満たない場合は、秘密情報の復元は不可能であり、この場合はパスワードの確認機能部４の処理は終了となる。
【００５６】
秘密情報復元部５３は、復号化断片選択部５２で選択されたｋ個の復号化断片を入力し、先に説明した閾値秘密分散法による復号を行うものである。このようにして秘密情報復元部５３で復元された復元結果を出力する。
【００５７】
図１に戻り、秘密情報送信部１６は、秘密情報復元部１５で復元された復元結果を秘密情報と見做し（これを秘密情報候補と称す）、サーバ側認証装置２へ送信する。秘密情報受信部２６は、その秘密情報候補を受信する。
【００５８】
秘密情報比較部２７は、秘密情報受信部２６で受信された秘密情報候補と、登録機能部４での処理の際に秘密情報保存部２１に保存した秘密情報とを入力し、両入力を比較し、一致した場合には正しいことを示す認証結果を、一致しなかった場合には間違っていることを示す認証結果を出力する。認証結果送信部２８は、秘密情報比較部２７の認証結果を送信する。
【００５９】
認証結果受信部１７は、認証結果送信部２８から送信される認証結果が一致しないことを示す場合には、秘密情報復元部１５の復号化断片選択部４２へ送信し、ｍ個からまだ認証を行っていないｋ個を選択し、秘密情報復元部５３で、秘密情報候補の復元を再び行う。つまり、認証が失敗したとしてもまた復号化断片の別の組み合わせで、正しい秘密情報が生成できるかを繰り返し行い、認証結果が一致するか、または全てのｋ個の組み合わせが尽きるまで認証を行う。
【００６０】
一方、認証結果受信部１７は、認証結果送信部２８から送信される認証結果が一致したことを示す場合には、正しいユーザに利用されていると判断できる。
【００６１】
以上で、パスワードの確認機能部４は構成される。
【００６２】
なお、上記の説明では復元した秘密情報を都度生成して認証するようにしていたが、全てのｋ個の組み合わせの秘密情報候補を生成してから、纏めてサーバ側認証装置２へ送付し、サーバ側認証装置２で、それら秘密情報候補を一つずつ認証するようにしても良いことは勿論である。
【００６３】
以上説明してきた本実施の形態の安全性について説明する。ここで、安全性とはすなわち、サーバ側認証装置２に保存された複数の暗号化断片を入手した攻撃者（なりすましを試みる不正なユーザ）が、何等かの方法によりサーバ側認証装置に保管されている本来知ることのできない秘密情報（上記例においては秘密乱数）を言い当てることが困難であるということである。
【００６４】
本実施の形態では、暗号化断片から秘密情報を復元するには、秘密断片の暗号化に用いられた秘密鍵を知らなくてはならない。この秘密鍵は漏洩しないことを前提としているから、問題となるのはこの秘密鍵を得る元となる「秘密のパスワード」導出した場合である。
【００６５】
しかし、本実施の形態では、万一「秘密のパスワード」を一つあるいはｋ個より少ない数だけ言い当てていたとしても、正しく復元された、一つあるいはｋ個より少ない数の秘密断片のそれぞれは、攻撃者にとって全く意味の無いランダムな値であるので、個々に秘密断片が正しいものか否かがわからない。従って「秘密のパスワード（秘密鍵）」を言い当てているか否かが不明である。つまり、個々に秘密のパスワードを的中させてそれを繰り返すような攻撃は通用せず、同時にｋ個の秘密のパスワードを的中させない限り攻撃は通用しないため、非常に安全性が高いといえる。
【００６６】
一方、単純にk個の秘密を全て知らないと鍵を生成することのできないようなシステムでは、確かに攻撃は難しくなるものの、今度は正規のユーザが秘密のパスワードをひとつでも思い出せないと認証されなくなってしまうため実用性が乏しい。これに対し、本実施の形態では、全ての秘密のパスワードの幾つかは思い出せなくても認証可能であり、実用性があるといえる。
【００６７】
更に、プライバシー情報である秘密のパスワードは、ユーザ側認証端末１のみで扱われるため、サーバ側認証装置２にプライバシー情報が知られないという利点もある。
【００６８】
以上、本実施の形態は、閾値秘密分散法を巧みに利用したことにより、安全性の高い、可用性のある、且つ、プライバシー情報の漏洩防止にも対処した、認証システムを提供できる。
【００６９】
次に、本実施の形態の変形例について、説明する。
【００７０】
図７は、秘密情報のバリエーションを示すものであり、（ａ）は秘密情報の変形例１、（ｂ）は秘密情報の変形例２である。
【００７１】
図からわかるように、変形例１は登録時には、暗号化断片生成部１２へは秘密情報をそのまま入力するがサーバ側認証装置２へは秘密情報にハッシュ関数（一方向関数）を施した結果である秘密情報検証値を保存させ、確認時には秘密情報復元部１５で生成された秘密情報候補に同じハッシュ関数を施して秘密情報検証値候補としてサーバ側認証装置２へ提供する例である。
【００７２】
この変形例１は上記の実施の形態と比較し、登録時処理が終了すると、秘密情報そのものがサーバ側認証装置２にも存在し無くすることができ、安全性が増す。
【００７３】
また、変形例２は図７の（ｂ）にも示したように、登録時には、暗号化断片生成部１２へは乱数と乱数をハッシュした検証用パリティとを連結した秘密情報を入力し、またサーバ側認証装置２へは乱数を保存させ、確認時には秘密情報復元部１５で生成された秘密情報候補を乱数候補と検証用パリティ候補に分離し、一方の乱数候補をハッシュし、他方の検証用パリティ候補と一致するかを比較し、一致する場合には該乱数候補をサーバ側認証装置２へ提供する例である。この変形例２は上記の実施の形態例と比較し、検証用パリティ候補を用いて、秘密情報候補が秘密情報であると思われる場合だけ、サーバ側認証装置２へ秘密情報候補に含む乱数候補を送信するので、乱数候補の送信を軽減することができるから、ユーザ認証の高速化が期待できる。
【００７４】
次に、秘密鍵の復元・認証に関する変形例を説明する。
【００７５】
秘密鍵は、上記実施の形態では秘密鍵に順序を与えていたが、次のように順序が無いものも考えられる。図８は、秘密鍵に順序を与えない場合のユーザＩ／Ｆの一例である。この例では、予め用意された質問が表示されることはない。質問および回答を自由にユーザに入力させる。ユーザが入力した自由な質問回答文から上記で説明した本実施の形態と同様な仕組みで秘密鍵を生成する。この場合、登録時のｎ個の秘密鍵の順番どおりに、復元時に秘密のパスワードを入力することは、一般には困難である。
【００７６】
そこで、生成された各秘密鍵の順序は不定で良いとし、それら秘密鍵で復号処理を行う各復号化断片の組み合わせを替えて暗号化断片を復号するように上記実施の形態を変更すればよい。具体的には、n個の暗号化断片から任意のm個を選び出し、それに対応するm個の秘密鍵（m個の秘密のパスワードから算出したもの）の組み合わせを全て試せば、k個以上の秘密を思い出した場合には認証が成功するようになる。
【００７７】
例えば、ｎ＝６，ｍ＝４であれば、組み合わせ方は６×５×４×３=３６０通りあり、の３６０通りの秘密情報候補の中には必ず正解が含まれている。なお、これは上記で説明した実施の形態の場合に比べて３６０倍の計算量を要するように思われるかもしれないが、正解となる組み合わせ、すなわちｍ個の中のk個以上が正しい位置になる組み合わせは、例えばk=2 の場合 １２×７＋4×２＋１＝９３通りあり、サーバ側認証装置２で正しい認証結果が得られるまで繰り返す仕組みとすれば、この例では計算量の増大はおよそ４倍程度で済む。また、別の仕組みとしては、３６０通りの秘密情報候補を全てユーザ側認証端末１側で求めてからサーバ側認証装置２へ秘密情報候補を送信する場合には、同じ秘密情報候補が多いものを優先的にサーバ側認証装置２へ送信するようにすれば、３６０倍の計算量を要するが、最初に送信する秘密認証候補が正しく認証される確率が高いため、サーバ側認証端末２へ送信する回数が一度、あるいは少数回ですみ、効率的である。これら仕組みは、ユーザ認証のために取り扱う情報量や用途に応じて、適宜定めればよい。
【００７８】
実際、現実のシステムにおいては、pがkよりも小さい場合には、ユーザに対して秘密のパスワードの修正を求めたり、あるいは別の秘密のパスワードを追加で思い出すことを求めるなどしてpの値を大きくすることを試みることも可能である。
【００７９】
つまり、ここまでの説明においては、mはnと等しいかまたは小さいことを前提にしてきたが、mがnより大きいことも考えられる。つまり、登録の際にn個の秘密のパスワードを入力したが、それを思い出す際にはn個より多くの秘密のパスワードを思い付くこともあり得る。その場合にもやはりn個の暗号化断片に対し考えられるm個の秘密鍵の組み合わせを全て試せば良く、特に処理上の困難は生じない。
【００８０】
この変形例によれば、秘密のパスワードを自由に入力するため、上記で説明した本実施の形態の質問形式よりも、より秘密のパスワードの推測を困難にするため、計算量は増加するが、より不正なユーザによるなりすましが困難となり、安全性が増す。
【００８１】
また、この変形例で用いる秘密のパスワードは同じ秘密のパスワードを複数個登録してもよい。このようにするとユーザは複数の秘密のパスワードに重み付けをすることができる。つまり、ユーザにとってのみ思い出しやすい秘密のパスワードは数回登録しておけば、認証時にその思い出しやすい秘密のパスワードを数回入力しやすく、ユーザにとってより認証入力が簡便になる。なお、この場合、複数回入力されたパスワードに基づく秘密鍵を暗号化断片の復号に優先的に使用するような設計仕様にすることにより、認証結果が正しいことを早く得られる確率が高くなり認証処理の高速化も期待できる。
【００８２】
以上、詳細に説明した本実施の形態、および、各変形例は、認証システムの用途に応じて適宜組み合わせて用いてよいことは勿論である。
【００８３】
また、本実施の形態、および、変形例のユーザ認証方法は、特に常時ユーザ認証で用いるようなシステムよりは、寧ろ稀に使うことが想定されるパスワードリカバリ方法、等に適している。その理由は、稀にしか使わないため、幾つかを憶えているが全てのパスワードを憶えている可能性は低く、且つ、安全性を保つことが必要なためである。
【００８４】
また、上記で説明したユーザ側認証装置１、サーバ側認証装置２を通常のコンピュータとし、ユーザ側認証装置１、サーバ側認証装置２の内部の各構成の全てあるいはその一部をソフトウェアプログラムで作成し、コンピュータ上で実行させることにより、実現してもよいことは勿論である。
【図面の簡単な説明】
【００８５】
【図１】本実施の形態のシステム全体の機能ブロックを示す図。
【図２】暗号化断片生成部１２の機能ブロック図を示し、
【図３】ｎ個の秘密鍵の生成のための機能ブロック図。
【図４】ユーザＩ／Ｆの一例
【図５】指紋認証による秘密鍵の生成のための機能ブロック図。
【図６】秘密情報復元部１５の機能ブロック図。
【図７】秘密鍵生成のための変形例１、２を示す機能ブロック図。
【図８】秘密鍵に順序を与えない場合のユーザＩ／Ｆの一例。
【符号の説明】
【００８６】
１・・・ユーザ側認証装置
２・・・サーバ側認証装置
１１・・・秘密情報保存部
１２・・・暗号化断片生成部
１３・・・暗号化断片送信部
１４・・・暗号化断片受信部
１５・・・秘密情報復元部
１６・・・秘密情報送信部
１７・・・認証結果受信部
２１・・・秘密情報保存部
２２・・・暗号化断片受信部
２３・・・暗号化断片保存部
２４・・・暗号化断片取得部
２５・・・暗号化断片送信部
２６・・・秘密情報受信部
２７・・・秘密情報比較部
２８・・・認証結果送信部
４１・・・秘密分割部
４２・・・秘密断片暗号部
５１・・・秘密断片復号部
５２・・・復号化断片選択部
５３・・・秘密情報復元部
【図１】
2008090547.tif 000003
【図２】
2008090547.tif 000004
【図３】
2008090547.tif 000005
【図４】
2008090547.tif 000006
【図５】
2008090547.tif 000007
【図６】
2008090547.tif 000008
【図７】
2008090547.tif 000009
【図８】
2008090547.tif 000010