(57)【特許請求の範囲】
【請求項１】
被認証装置と認証装置とに前記被認証装置またはユーザの正当性を示す認証データと、第１、第２、第３の分散データとを共有する認証システムであって、
前記被認証装置は、
前記第１の分散データを前記認証データ、前記第２の分散データを所定データと対応づけて第１の関数を生成し、前記第１の関数において、前記第３の分散データに対応するデータを求め第４の分散データとする第１の関数処理部と、
前記第４の分散データを暗号化し第１の検証データを生成する第１の検証データ生成部と、
前記所定のデータと前記第１の検証データとを前記認証装置へ送信する送信部と、を備え、
前記認証装置は、
前記所定のデータと前記第１の検証データとを受信する受信部と、
前記前記第１、第２の分散データ、前記認証データ、前記被認証装置から受信した前記所定のデータをもとに第２の関数を求め、前記第２の関数において第３の分散データに対応するデータを求め第５の分散データとする第２の関数処理部と、
前記第１の検証データ生成装置と同じ方式で前記第５の分散データを暗号化し第２の検証データを生成する第２の検証データ生成部と、
前記第１の検証データと前記第２の検証データとに基づいて前記被認証装置の正当性を検証する照合部と、を備えたことを特徴とする秘匿認証システム。
【請求項２】
前記第４の分散データは前記第１の検証データ生成部にて一方向性関数を用いて暗号化され、第５の分散データは前記第２の検証データ生成部にて一方向性関数を用いて暗号化されることを特徴とする請求項１に記載の秘匿認証システム。
【請求項３】
前記第４、第５の分散データは、認証データを乗じることで暗号化することを特徴とする請求項１に記載の秘匿認証システム。
【請求項４】
前記第４、第５の分散データは、前記公開鍵、または前記被認証装置及び前記認証装置の双方において共有する共通鍵を用いて暗号化することを特徴とする請求項１に記載の秘匿認証システム。
【請求項５】
前記被認証装置及び前記認証装置の双方において、互いに同一の一方向性関数を用いて前記認証データを変換して、その変換結果で前記認証データを更新することを特徴とする請求項１または請求項２に記載の秘匿認証システム。
【請求項６】
前記所定のデータは乱数であることを特徴とする請求項１乃至請求項５いずれかに記載の秘匿認証システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、他人に知られることなく認証データを被認証装置から認証装置に通知して認証を行う秘匿認証システムに関するものである。
【背景技術】
【０００２】
インターネットバンキングやインターネットショッピングなどのインターネット商取引システムなど、近年、ネットワークを介して接続された端末に対してサーバから種々のサービスを提供するシステムが急速に普及しており、このようなシステムにおいては、ユーザが正規登録された者か否かを検証する認証システムが必要となるが、パスワードなどの認証データがネットワーク上に送出されるため、認証データを盗取して正規のユーザになりすまして不正に利益を受ける行為を阻止するための様々な技術が知られている（例えば特許文献１参照）。
【０００３】
また、近年、電子マネー機能を有する非接触型ＩＣカードが急速に普及しており、入退室管理システムや商品管理システムでも、非接触型ＩＣカードやＲＦＩＤタグが利用されるようになってきたが、この種のＲＦＩＤデバイスを用いたシステムでは、スキミングにより認証データを盗取してなりすましにより不正に利益を受ける行為を阻止する必要があり、このようなＲＦＩＤデバイスの安全性を高める技術としては、Randomized Hash Lock方式、ハッシュチェーン方式（特許文献２参照）、再暗号化方式（特許文献３参照）が知られている。
【特許文献１】特開２００７−２９３７８７号公報
【特許文献２】特再表２００５−０３１５７９号公報
【特許文献３】特開２００４−３１７７６４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかるに、従来の様々な技術では、複雑な演算処理により認証データの秘匿性を高めることができる反面、高速な演算手段が必要になることから、コストが嵩み、低コスト化の要望を十分に満足することができず、低コスト化と高度な秘匿性とを両立させることが可能な技術が望まれる。また、秘匿認証システムにおいては、認証に関する事実（認証相手、認証日時など）を過去に遡って探索されることのないフォワードセキュアや、認証に関する事実を未来に渡って探索されることのないバックセキュアを実現することが望まれる。
【０００５】
本発明は、このような従来技術の問題点を解消するべく案出されたものであり、その主な目的は、高度な秘匿性を確保すると共に演算負荷を軽減してコストを削減することができるように構成された秘匿認証システムを提供することにある。また本発明は、フォワードセキュア及びバックセキュアを実現することができる秘匿認証システムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の秘匿認証システムは、被認証装置と認証装置とに前記被認証装置またはユーザの正当性を示す認証データと、第１、第２、第３の分散データとを共有する認証システムであって、前記被認証装置は、前記第１の分散データを前記認証データ、前記第２の分散データを所定データと対応づけて第１の関数を生成し、前記第１の関数において、前記第３の分散データに対応するデータを求め第４の分散データとする第１の関数処理部と、前記第４の分散データを暗号化し第１の検証データを生成する第１の検証データ生成部と、前記所定のデータと前記第１の検証データとを前記認証装置へ送信する送信部と、を備え、前記認証装置は、前記所定のデータと前記第１の検証データとを受信する受信部と、前記前記第１、第２の分散データ、前記認証データ、前記被認証装置から受信した前記所定のデータをもとに第２の関数を求め、前記第２の関数において第３の分散データに対応するデータを求め第５の分散データとする第２の関数処理部と、前記第１の検証データ生成装置と同じ方式で前記第５の分散データを暗号化し第２の検証データを生成する第２の検証データ生成部と、前記第１の検証データと前記第２の検証データとに基づいて前記被認証装置の正当性を検証する照合部と、を備えたことを特徴とする。
【発明の効果】
【０００７】
本発明によれば、分散データが全て揃わないと認証データを求めることができないため、高度な秘匿性を確保することができ、また、１次関数のように次数の小さな関数を用いることで、演算負荷を軽減することができるため、低速な演算手段で済み、コストを削減することができる。
【発明を実施するための最良の形態】
【０００８】
上記課題を解決するためになされた第１の発明は、被認証装置と認証装置とに前記被認証装置またはユーザの正当性を示す認証データと、第１、第２、第３の分散データとを共有する認証システムであって、前記被認証装置は、前記第１の分散データを前記認証データ、前記第２の分散データを所定データと対応づけて第１の関数を生成し、前記第１の関数において、前記第３の分散データに対応するデータを求め第４の分散データとする第１の関数処理部と、前記第４の分散データを暗号化し第１の検証データを生成する第１の検証データ生成部と、前記所定のデータと前記第１の検証データとを前記認証装置へ送信する送信部と、を備え、前記認証装置は、前記所定のデータと前記第１の検証データとを受信する受信部と、前記前記第１、第２の分散データ、前記認証データ、前記被認証装置から受信した前記所定のデータをもとに第２の関数を求め、前記第２の関数において第３の分散データに対応するデータを求め第５の分散データとする第２の関数処理部と、前記第１の検証データ生成装置と同じ方式で前記第５の分散データを暗号化し第２の検証データを生成する第２の検証データ生成部と、前記第１の検証データと前記第２の検証データとに基づいて前記被認証装置の正当性を検証する照合部と、を備えたことを特徴とする。
【０００９】
これによると、被認証装置と認証装置との通信に介入する中間者により、被認証装置から認証装置に送られる分散データが盗み見されたとしても、中間者は、分散データが全て揃わないと認証データを求めることができないため、高度な秘匿性を確保することができ、また、１次関数のように次数の小さな関数を用いることで、演算負荷を軽減することができるため、低速な演算手段で済み、コストを削減することができる。
【００１０】
また、分散データを検証データに変換せずに認証装置に送ることも考えられるが、この場合、中間者が、認証時の送信データを複数回収集することで認証データを推測することが可能になる余地がある。一方、本発明のように分散データを検証データに変換して送るようにすると、検証データの元になる分散データの内容がわからないため、認証データを推測することが困難になり、不正な認証を確実に阻止することができる。
【００１１】
但し、中間者は、検証データから元になる分散データを逆算できずとも、元データの値に、適当な値を入れて計算結果が合致するか否かを確かめるオフライン攻撃を行うことは可能であるので、認証データの値は十分大きなものであることが望ましい。
【００１２】
この場合、分散データの内、固定値のものは、予めあるいは認証時とは別の手順で被認証装置及び認証装置に保有させ、固定値でないものは、認証時に送受信を行って、被認証装置及び認証装置で共有するとすると効率が良い。但し、少なくとも１部の分散データは、演算処理された上で、認証時に被認証装置から認証装置に送られる。
【００１３】
ここで、分散データの内、関数データとは、関数を一意に定めるものであり、例えば関数が示す１次直線あるいはｎ次曲線上の点の座標値、関数式の係数、傾き、及び切片などの値である。ここで、ｎ次関数の直線あるいは曲線上の点の座標値を関数データとした場合には、関数データはｎ＋１個の点のＸ値及びＹ値となり、これらの値により関数が一意に定められる。
【００１４】
また、分散データの内、規則データとは、関数から認証データを特定する取り決めであり、例えば関数が示す１次直線あるいはｎ次曲線上の点のＹ値を認証データとした場合には、その点のＸ値が規則データとなる。さらに、関数が示す１次直線あるいはｎ次曲線と別の１次直線あるいはｎ次曲線との交点の座標値を認証データとすることもでき、この場合、その交点を形成する別の１次直線あるいはｎ次曲線を示す関数を特定する値が規則データとなる。また、関数の式の係数を認証データとすることもでき、この場合、係数を認証データとする指定情報が規則データとなる。
【００１５】
また、認証データとは、被認証装置の正当性を示すものであり、被認証装置やこれを操作するユーザに与えられたパスワードや、被認証装置を操作するユーザに関するバイオメトリクス情報などである。
【００１６】
なお、検証データを得るための演算処理は、１つの分散データの全てに対して行う他、その一部に対して行うものとしても良い。
【００１７】
前記課題を解決するためになされた第２の発明は、前記第１の発明において、前記第４の分散データは、前記第１の検証データ生成部にて一方向性関数を用いて暗号化され、第５の分散データは前記第２の検証データ生成部にて一方向性関数を用いて暗号化されることを特徴とする。
【００１８】
これによると、逆関数の計算が困難であるため、被認証装置と認証装置との通信に介入する中間者は、検証データの元になる分散データを求めることができない。
【００１９】
この場合、一方向性関数としては、逆関数の計算が困難で、元データを求めることが事実上できないものであり、その代表的なものとしてハッシュ関数があるが、べき乗関数、特に２乗関数でも、データ量（桁数）が大きくなると、実用上十分な一方向性が得られ、また演算負荷が低いことから、低速の演算機能しか備えていない簡易な装置にも適用することができる。なお、以下の一方向性関数も同様である。
【００２０】
前記課題を解決するためになされた第３の発明は、前記第１の発明において、前記第４、第５の分散データは、認証データを乗じることで暗号化することを特徴とする。
【００２１】
これによると、被認証装置と認証装置との通信に介入する中間者は、認証データを知らないと、検証データの元になる分散データを求めることができない。
【００２２】
なお、分散データに認証データを乗じる演算処理とは、分散データや認証データの一部分のデータを乗じる演算処理でも、またこれらを一定の演算処理した値を乗じる演算処理でも良い。
【００２３】
前記課題を解決するためになされた第４の発明は、前記第１の発明において、前記第４、第５の分散データは、前記公開鍵、または前記被認証装置及び前記認証装置の双方において共有する共通鍵を用いて暗号化することを特徴とする。
【００２４】
これによると、被認証装置と認証装置との通信に介入する中間者は、暗号鍵を持っていないので、検証データの元になる分散データを求めることができない。これは、一見、パスワードを暗号して認証するのと等価に見えるが、パスワードを暗号化する方法は、パスワードが変わらない間は常に同じ値になるので、問題である。
【００２５】
前記課題を解決するためになされた第５の発明は、前記第１〜第２の発明において、前記被認証装置及び前記認証装置の双方において、互いに同一の一方向性関数を用いて前記認証データを変換して、その変換結果で前記認証データを更新する構成とする。
【００２６】
これによると、他者により被認証装置や認証装置が保持する認証データが盗取されたとしても、被認証装置や認証装置が過去に保持していた認証データが分からないため、認証に関する事実（認証相手、認証日時など）を過去に遡って探索されることのないフォワードセキュアを実現することができる。また、自装置内での変換処理のみで済むため、コストを削減することができる。
【００２７】
なお、一方向性関数を用いた認証データの変換は、認証データの全てに対して行う他、その一部に対して行うものとしても良い。
【００３７】
以下、本発明の実施の形態を、図面を参照しながら説明する。
【００３８】
図１は、本発明による秘匿認証システムを示すシステム構成図である。ここでは、クライアント装置（被認証装置）５とサーバ装置（認証装置）６とがネットワーク接続され、サーバ装置２においてクライアント装置１の認証を行うための認証データ（パスワードなど）をクライアント装置１からサーバ装置２に通知するものである。このような認証システムでは、クライアント装置１とサーバ装置２との間の通信に介入した中間者装置３により認証データを盗取されたり、中間者装置３が正規のクライアント装置１になりすましてサーバ装置２で不正に認証を受けることを阻止するために、以下のような秘匿認証システムが採用される
【００３９】
図２・図３は、本発明における秘匿認証の要領を説明する図である。ここでは、認証データｍが、点Ｓ（ｘ２，ｓ）と点Ｋ（ｘ３，ｋ）とを通過する１次直線上でＸ値がｘ１となる点Ｍ（ｘ１，ｍ）のＹ値として与えられ、この直線の関数式は、関数データｘ２・ｘ３・ｓ・ｋにより一義的に定められ、これらの関数データと、直線の関数式から認証データｍを特定するための規則データｘ１とから認証データｍが求められる。
【００４０】
なおここでは、認証データｍを特定するものは、規則データｘ１としているが、これは関数データｘ２・ｘ３・ｓ・ｋにより一義的に定められる関数と、ｘ＝ｘ１との交点のことであり、これを別の任意の関数との交点とすることも可能である。
【００４１】
ここで、関数データｘ２・ｘ３・ｓ・ｋ及び規則データｘ１は、認証データｍを分散して規定する分散データとして位置付けられ、これらの分散データｘ１〜ｘ３・ｓ・ｋが全て揃わないと認証データｍを求めることができない。
【００４２】
分散データｘ１〜ｘ３・ｓ・ｋは、その一部が、認証時とは別の手順で事前にあるいは事後に、クライアント装置１とサーバ装置２との間で共有させ、クライアント装置１からサーバ装置２に対する認証要求時に、クライアント装置１において、認証データｍから、サーバ装置２との間で共有しない分散データを生成して、その分散データをサーバ装置２に送り、サーバ装置２において、自装置が保持する分散データとクライアント装置１から受け取った分散データとから認証データを求めることができる。
【００４３】
図２（Ａ）に示す方式１では、１つの点ＳのＹ値である分散データｓのみをクライアント装置１からサーバ装置２に送り、残りの分散データｘ１〜ｘ３・ｋは、クライアント装置１とサーバ装置２との間で共有している。この残りの分散データｘ１〜ｘ３・ｋは固定値であり、少なくとも一部の情報は秘密に保持する。この場合、認証データｍに応じて分散データｓのみが変動する。
【００４４】
図２（Ｂ）に示す方式１の改良では、１つの点ＳのＸ値及びＹ値である分散データｓ・ｘ２を送り、残りの分散データｘ１・ｘ３・ｋは、クライアント装置１とサーバ装置２との間で共有している。この残りの分散データｘ１・ｘ３・ｋは固定値であり、少なくとも一部の情報は秘密に保持する。この場合、分散データｘ２は任意の値、例えば乱数で生成して、２つの点Ｍ・Ｋを通る直線上に点Ｓがくるように分散データｓが定められる。
【００４５】
図３（Ａ）に示す方式２では、２つの点Ｓ・ＫのＹ値である分散データｓ・ｋを送り、残りの分散データｘ１〜ｘ３は、クライアント装置１とサーバ装置２との間で共有している。この残りの分散データｘ１〜ｘ３は固定値であり、少なくとも一部の情報は秘密に保持する。この場合、分散データｓは任意の値、例えば乱数で生成して、２つの点Ｍ・Ｓを通る直線上でＸ値がｘ３となる点ＫのＹ値として分散データｋが定められる。
【００４６】
図３（Ｂ）に示す方式２の改良では、点ＳのＸ値及びＹ値と点ＫのＹ値である分散データｓ・ｘ２・ｋを送り、残りの分散データｘ１・ｘ３は、クライアント装置１とサーバ装置２との間で共有している。この残りの分散データｘ１・ｘ３は固定値であり、少なくとも一部の情報は秘密に保持する。この場合、分散データｓ・ｘ２は任意の値、例えば乱数で生成して、２つの点Ｍ・Ｓを通る直線上でＸ値がｘ３となる点ＫのＹ値として分散データｋが定められる。
【００４７】
ここで、図２（Ａ）の方式１では、同じ認証データｍでは、毎回同じ値が送られることになり、その値を用いて中間者はなりすましを簡単に行うことができる。図２（Ｂ）の方式１の改良では、複数回認証を行うと、同じクライアント装置１では点Ｓ（ｘ２，ｓ）が同一直線上に並ぶため、この直線上の任意の点で分散データｓ・ｘ２を決定すればなりすましが可能となる。
【００４８】
図３（Ａ）の方式２では、点Ｓ・Ｋを通る直線の傾きが認証のたびに変化するが、複数回認証を行うと、認証データｍを特定する点Ｍ（ｘ１，ｍ）が、点Ｓ・Ｋを通る直線の交点として現れるため、認証データｍが見破られる可能性がある。図３の方式２の改良でも同様である。
【００４９】
図４は、本発明による秘匿認証の別の例による要領を説明する図である。ここでは、認証データｍ１が、点Ｍ２（ｘ１，ｍ２）と点Ｋ（ｘ３，ｋ）と点Ｓ（ｘ４，ｓ）とを通過する２次曲線上でＸ値がｘ１となる点Ｍ１（ｘ１，ｍ１）のＹ値として与えられ、この曲線の関数式は、関数データｘ２〜ｘ４・ｍ２・ｓ・ｋにより一義的に定められ、これらの関数データと、曲線の関数式から認証データｍ１を特定するための規則データｘ１とから認証データｍが求められる。
【００５０】
ここで、関数データｘ２〜ｘ４・ｍ２・ｓ・ｋ及び規則データｘ１は、認証データｍ１を分散して規定する分散データとして位置付けられ、これらの分散データｘ１〜ｘ４・ｍ２・ｓ・ｋが全て揃わないと認証データｍ１を求めることができない。
【００５１】
分散データｘ１〜ｘ４・ｍ２・ｓ・ｋは、その一部が、認証時とは別の手順で事前にあるいは事後に、クライアント装置１とサーバ装置２との間で共有させ、認証要求時に、クライアント装置１において、認証データｍから、サーバ装置２との間で共有しない分散データを生成して、その分散データをサーバ装置２に送り、サーバ装置２において、自装置が保持する分散データとクライアント装置１から受け取った分散データとから認証データを求めることができる。
【００５２】
ここで、クライアント装置１とサーバ装置２との間で共有させる分散データと、認証時にクライアント装置１からサーバ装置２に送る分散データをどのように設定するかは、図２・図３の１次直線を用いた例と同様に、種々の組み合わせが考えられるが、この２次関数による方式でも、図２・図３の例と同様に、中間者によるなりすましや認証データの盗取の余地がある。
【００５３】
そこで、以下に示すように、クライアント装置１からサーバ装置２に分散データをそのまま送ることはせず、クライアント装置１において、分散データに所要の演算処理を行った検証データを生成して、その検証データをサーバ装置２に送り、サーバ装置２において、自身が保持する認証データと、クライアント装置１から受け取った検証データとに基づいて、クライアント装置１の正当性を検証する。
【００５４】
＜一方向性関数による検証データの例＞
図５は、図１に示したクライアント装置及びサーバ装置の第１の例を示すブロック図である。ここでは、図３（Ａ）の方式２が採用され、分散データｘ１〜ｘ３がクライアント装置１とサーバ装置２との間で共有され、分散データｋに所要の演算処理を行った検証データＦ（ｋ）と分散データｓがクライアント装置１からサーバ装置２に送られる。
【００５５】
クライアント装置１は、自装置の正当性を示す認証データｍを秘密に記憶する認証データ記憶部１０１と、分散データｘ１〜ｘ３を秘密に記憶する分散データ記憶部１０２と、分散データｓを乱数で生成する乱数生成部１０３と、認証データ記憶部１０１に記憶された認証データｍ、分散データ記憶部１０２に記憶された分散データｘ１〜ｘ３、及び乱数生成部１０３で生成した分散データｓから分散データｋを求める関数処理部１０４と、関数処理部１０４で算出された分散データｋを一方向性関数を用いて変換して検証データＦ（ｋ）を求める検証データ生成部１０５とを有しており、クライアント装置１からサーバ装置２に対する認証要求時に、検証データ生成部１０５で得られた検証データＦ（ｋ）と乱数生成部１０３で生成した分散データｓとがサーバ装置２に送られる。関数処理部１０４では、分散データｘ１・ｘ２・ｓと認証データｍから関数が特定され、この関数と分散データｘ３から分散データｋが求められる。
【００５６】
検証データ生成部１０５で用いられる一方向性関数としては、ハッシュ関数などの典型的な一方向性関数も可能であるが、実用上十分な一方向性が得られる２乗関数が好適であり、演算負荷が低いことから、低速の演算機能しか備えていない簡易な装置（ＲＦＩＤタグなど）にも適用することができる。
【００５７】
サーバ装置２は、複数のクライアント装置１ごとの認証データｍを蓄積する認証データ蓄積部２０１と、分散データｘ１〜ｘ３を記憶する分散データ記憶部２０２と、分散データ記憶部２０２に記憶された分散データｘ１〜ｘ３、認証データ蓄積部２０１に蓄積された認証データｍ、及びクライアント装置１から受け取った分散データｓから分散データｋを求める関数処理部２０３と、関数処理部２０３で算出された分散データｋに対して、クライアント装置１の検証データ生成部１０５と同一の一方向性関数を用いて変換して検証データＦ（ｋ）を求める検証データ生成部２０４と、検証データ生成部２０４で得られた検証データＦ（ｋ）とクライアント装置１から受け取った検証データＦ（ｋ）とを比較してクライアント装置１の正当性を検証する照合部２０５とを有している。
【００５８】
関数処理部２０３では、分散データｘ１・ｘ２・ｍ・ｓから関数が復元され、この関数と分散データｘ３から分散データｋが求められる。このとき、認証データ蓄積部２０１から認証データｍが順次読み出され、照合部２０５において、検証データ生成部２０４で算出された検証データＦ（ｋ）とクライアント装置１から受け取った検証データＦ（ｋ）とが一致すれば認証が成功したものとし、両者が一致しなければ、次の認証データｍを認証データ蓄積部２０１から読み出して同様の処理が行われ、一致するものがなければ認証が失敗したものとする。
【００５９】
この構成では、中間者装置３が、分散データｘ１〜ｘ３を知っていて、かつ中間者装置３により、クライアント装置１からサーバ装置２に送られる分散データｓとＦ（ｋ）を盗み見されたとしても、つまり、中間者装置３が、ｋ以外のすべての分散データとＦ（ｋ）を知りえたとしても、中間者装置３では、Ｆ（ｋ）からｋを求めることができないため、、認証データｍを求めることはできない。
【００６０】
なお、クライアント装置１の認証データｍを識別するＩＤデータを、検証データＦ（ｋ）及び乱数データｓと共に、クライアント装置１からサーバ装置２に送るようにしても良い。このようにすると、クライアント装置１から受け取ったＩＤデータに対応する認証データｍを認証データ蓄積部２０１から読み出すことで、照合部２０５での比較処理が１回で済み、処理が簡便になる。
【００６１】
＜積演算による検証データの例＞
図６は、図１に示したクライアント装置及びサーバ装置の第２の例を示すブロック図である。ここでは、クライアント装置１が、関数処理部１０４で算出された分散データｋに認証データｍを乗じる演算処理を行って検証データｍ×ｋを求める検証データ生成部１１１を有しており、この検証データｍ×ｋと乱数データｓとがサーバ装置２に送られる。サーバ装置２は、クライアント装置１から受け取った検証データｍ×ｋに対して、クライアント装置１の検証データ生成部１１１での演算処理と逆方向の演算処理、すなわち関数処理部２０３で算出された分散データｋの逆数を検証データｍ×ｋに乗じて認証データｍを求めるデータ抽出部２１１と、データ抽出部２１１で求められた認証データｍと認証データ蓄積部２０１から取り出した認証データｍとを比較してクライアント装置１の正当性を検証する照合部２１２とを有している。その他の構成は、図５の例と同様である。
【００６２】
なお、サーバ装置２では、クライアント装置１と同様に、関数処理部２０３で算出された分散データｋに認証データｍを乗じて検証データｍ×ｋを求め、この検証データｍ×ｋと、クライアント装置１から受け取った検証データｍ×ｋとを比較してクライアント装置１の正当性を検証するものとしても良い。
【００６３】
＜暗号化による検証データの例＞
図７は、図１に示したクライアント装置及びサーバ装置の第３の例を示すブロック図である。ここでは、クライアント装置１が、関数処理部１０４で算出された分散データｋを、サーバ装置２の公開鍵を用いて暗号化する暗号化部１２１を有しており、暗号化された分散データＥ（ｋ）と分散データｓとがサーバ装置２に送られる。サーバ装置２は、クライアント装置１から受け取った暗号化された分散データＥ（ｋ）を自身の秘密鍵を用いて復号化する復号化部２２１と、復号化部２２１で求められた分散データｋ、分散データ記憶部２０２に記憶された分散データｘ１〜ｘ３、及びクライアント装置１から受け取った分散データｓから認証データｍを求める関数処理部２２２と、関数処理部２２２で求められた認証データｍと認証データ蓄積部２０１から取り出した認証データｍとを比較してクライアント装置１の正当性を検証する照合部２２３とを有している。その他の構成は、図５の例と同様である。
【００６４】
なお、分散データｋの値が非常に大きい場合は、乱数で共通鍵を発生させ、この共通鍵で分散データｋの暗号化を行い、共通鍵は、サーバ装置２の公開鍵で暗号化を行うというハイブリッド暗号とすると良い。なおここでは、暗号鍵として、サーバ装置２の公開鍵を用いているが、これは、クライアント装置１とサーバ装置２との間で共有される、共通鍵であっても構わない。
【００６５】
＜フォワードセキュアを図る例＞
図８は、図１に示したクライアント装置及びサーバ装置の第４の例を示すブロック図である。ここでは、クライアント装置１が、認証データ記憶部１０１に記憶された認証データｍを一方向性関数を用いて変換して、その変換結果で認証データｍを更新するデータ更新部１３１を有している。また、サーバ装置２が、認証データ蓄積部２０１に蓄積された認証データｍを一方向性関数を用いて変換して、その変換結果で認証データｍを更新するデータ更新部２３１を有している。その他の構成は、図５の例と同様である。
【００６６】
クライアント装置１のデータ更新部１３１とサーバ装置２のデータ更新部２３１では互いに同一の一方向性関数が用いられる。この一方向性関数としては、ハッシュ関数などの典型的な一方向性関数も可能であるが、実用上十分な一方向性が得られる２乗関数が好適であり、演算負荷が低いことから、低速の演算機能しか備えていない簡易な装置（ＲＦＩＤタグなど）にも適用することができる。
【００６７】
また、クライアント装置１のデータ更新部１３１とサーバ装置２のデータ更新部２３１での更新処理は同一のタイミングで行われ、例えば１回の認証のたびに、クライアント装置１のデータ更新部１３１で認証データが更新されると同時に、サーバ装置２のデータ更新部２３１でクライアント装置１に関する認証データが更新される。
【００６８】
これにより、他者によりクライアント装置１やサーバ装置２が保持する認証データが盗取され、かつこの者が、サーバ装置２と通信した、すべてのクライアント装置の過去の通信履歴を保持していたとしても、クライアント装置１やサーバ装置２が過去に保持していた認証データが分からないため、認証に関する事実（認証相手、認証日時など）を過去に遡って探索されることのないフォワードセキュアを実現することができる。また、自装置内での変換処理のみで済むため、コストを削減することができる。これによると、クライアント装置がカードであるカード認証などにおいて、カード廃棄を行う際に、カードに対して特に特別な対処を行わずとも、安全性が確保されるので良い。
【００６９】
なお、データ更新部１３１・２３１において、分散データ記憶部１０２・２０２に記憶された分散データｘ１〜ｘ３、特に認証データｍの特定に必須の分散データｘ１を一方向性関数で更新するものとしても良い。
【００７０】
＜フォワード・バックセキュアを図る例＞
図９は、図１に示したクライアント装置及びサーバ装置の第５の例を示すブロック図である。ここでは、クライアント装置１が、乱数生成部１０３で生成した分散データｓをサーバ装置２の公開鍵を用いて暗号化する暗号化部１４１を有しており、ここで得られた暗号化データＥ（ｓ）がサーバ装置２に送られる。また、サーバ装置２が、クライアント装置１から受け取った暗号化データＥ（ｓ）を自身の秘密鍵を用いて復号化する復号化部２４１を有しており、ここで得られた分散データｓが関数処理部２０３に送られる。その他の構成は、図５の例と同様である。
【００７１】
これにより、他者によりクライアント装置１やサーバ装置２が保持する認証データが盗取されたとしても、クライアント装置１からサーバ装置２に送られる分散データが暗号化されているため、クライアント装置１とサーバ装置２との通信に介入する中間者装置３では、サーバ装置２の秘密鍵がない限り、送信される分散データの内容がわからず、認証に関する事実を未来に渡って探索されることのないバックセキュアを実現することができる。また、認証に関する事実を過去に遡って探索されることのないフォワードセキュアを実現することができる。これによると、クライアント装置がカードであるカード認証などにおいて、他者に、カードの中身をカード所持者に分からないように盗み見されても、少なくともカード所持者の行動が監視されることはなくなる。
【００７２】
なおここでは、クライアント装置１からサーバ装置２に送られる検証データＦ（ｋ）及び分散データｓのうち、分散データｓのみを暗号化したが、その両方を暗号化する、または検証データＦ（ｋ）のみを暗号化するものとしても良い。
【００７３】
また、分散データｓやｋの値が非常に大きい場合は、乱数で共通鍵を発生させ、この共通鍵で分散データｓやｋの暗号化を行い、共通鍵は、サーバ装置２の公開鍵で暗号化を行うというハイブリッド暗号とすると良い。
【００７４】
＜双方向認証の例＞
図１０は、図１に示したクライアント装置及びサーバ装置の第６の例を示すブロック図である。ここでは、サーバ装置２が、関数処理部２０３で算出された分散データｋに認証データｍを乗じる演算処理を行って応答データｍ×ｋを求める応答データ生成部２５１を有しており、この応答データｍ×ｋがクライアント装置１に送られる。クライアント装置１は、関数処理部１０４で算出された分散データｋに認証データｍを乗じる演算処理を行って応答データｍ×ｋを求める応答データ生成部１５１と、応答データ生成部１５１で算出された応答データｍ×ｋとサーバ装置２から受け取った応答データｍ×ｋとを比較してサーバ装置２の正当性を検証する照合部１５２とを有している。その他の構成は、図５の例と同様である。
【００７５】
これにより、クライアント装置１がサーバ装置２の正当性を確認することができ、双方向認証が可能になる。
【００７６】
ここで、応答データは、図５の例で示した検証データと同様に、分散データｋを一方向性関数を用いて変換する演算処理により得られるものとしても良く、また、図７の例で示した検証データと同様に、分散データｋを暗号化したものとすることも可能であるが、いずれにしても応答データは、検証データを求める処理とは異なる処理により得る必要がある。
【００７７】
＜チャレンジ・レスポンス方式でリトライ攻撃防御を図る例＞
図１１は、図１に示したクライアント装置及びサーバ装置の第７の例を示すブロック図である。ここでは、サーバ装置２が、分散データｓを乱数で生成する乱数生成部２６１を有しており、ここで得られた分散データｓがクライアント装置１に送られる。クライアント装置１では、サーバ装置２から受け取った分散データｓ、認証データ記憶部１０１に記憶された認証データｍ、及び分散データ記憶部１０２に記憶された分散データｘ１〜ｘ３から分散データｋを求める処理が関数処理部１０４にて行われ、ここで得られた分散データｋがサーバ装置２に送られる。その他の構成は、図５の例と同様である。
【００７８】
この構成では、サーバ装置２からクライアント装置１に送られる分散データｓが不規則に変化するため、クライアント装置１とサーバ装置２との間での遣り取りを真似してここで用いられた分散データを使用して不正に認証を受けることができなくなり、リトライ攻撃を防御することができる。
【００７９】
＜逆認証の例＞
図１２は、図１に示したクライアント装置及びサーバ装置の第８の例を示すブロック図である。ここでは、前記の例とは逆に、クライアント装置１においてサーバ装置２の正当性を検証するものであり、クライアント装置１が認証装置となり、サーバ装置２が被認証装置となっている。
【００８０】
クライアント装置（認証装置）１は、自装置の認証データｍを識別するＩＤデータを記憶するＩＤデータ記憶部１８１を有しており、ここから取り出されたＩＤデータと乱数生成部１０３で生成した分散データｓとがサーバ装置２に送られる。サーバ装置（被認証装置）２では、クライアント装置１から受け取ったＩＤデータに基づいて該当する認証データｍが認証データ蓄積部２０１から取り出され、検証データ生成部２０４で得られた検証データＦ（ｋ）がクライアント装置１に送られる。クライアント装置１は、検証データ生成部１０５で得られた検証データＦ（ｋ）とサーバ装置２から受け取った検証データＦ（ｋ）とを比較してサーバ装置２の正当性を検証する照合部１８２を有している。
【００８１】
また、サーバ装置２が、分散データｓを乱数で生成する乱数生成部２８１を有し、ここで得られた分散データｓがクライアント装置１に送られるものとしても良い。これによると、クライアント装置が認証を受ける前に、サーバ装置が正規のものであるか否かを確かめることができる。
【００８２】
なお、前記の各図に示された例を適宜に組み合わせて構成することも可能である。また図５以降の各例では、１次関数による方式を採用したが、図４に示した２次関数による方式も採用することができ、この他、３次関数など種々の関数による方式も可能である。
【００８３】
また、前記の各図で、クライアント装置１においては、認証データｍは、認証データ記憶部１０１に記憶されているものとして説明したが、認証データを保持するカード認証のようなものでなければ、ユーザが、認証のたびに、認証データをキー入力するものであっても良い。
【産業上の利用可能性】
【００８４】
本発明にかかる秘匿認証システムは、高度な秘匿性を確保すると共に演算負荷を軽減してコストを削減することができる効果を有し、他人に知られることなく認証データを被認証装置から認証装置に通知して認証を行う秘匿認証システムなどとして有用である。
【図面の簡単な説明】
【００８５】
【図１】本発明による秘匿認証システムを示すシステム構成図
【図２】本発明による秘匿認証の要領を説明する図
【図３】本発明による秘匿認証の要領を説明する図
【図４】本発明による秘匿認証の別の例による要領を説明する図
【図５】図１に示したクライアント装置及びサーバ装置の第１の例を示すブロック図
【図６】図１に示したクライアント装置及びサーバ装置の第２の例を示すブロック図
【図７】図１に示したクライアント装置及びサーバ装置の第３の例を示すブロック図
【図８】図１に示したクライアント装置及びサーバ装置の第４の例を示すブロック図
【図９】図１に示したクライアント装置及びサーバ装置の第５の例を示すブロック図
【図１０】図１に示したクライアント装置及びサーバ装置の第６の例を示すブロック図
【図１１】図１に示したクライアント装置及びサーバ装置の第７の例を示すブロック図
【図１２】図１に示したクライアント装置及びサーバ装置の第８の例を示すブロック図
【符号の説明】
【００８６】
１  クライアント装置
２  サーバ装置
３  中間者装置
１０１  認証データ記憶部、１０２  分散データ記憶部、１０３  乱数生成部、１０４  関数処理部、１０５  検証データ生成部、１１１  検証データ生成部、１２１  暗号化部、１３１  データ更新部、１４１  暗号化部、１５１  応答データ生成部、１５２  照合部、１８１  データ記憶部、１８２  照合部
２０１  認証データ蓄積部、２０２  分散データ記憶部、２０３  関数処理部、２０４  検証データ生成部、２０５  照合部、２１１  データ抽出部、２１２  照合部、２２１  復号化部、２２２  関数処理部、２２３  照合部、２３１  データ更新部、２４１  復号化部、２５１  応答データ生成部、２６１  乱数生成部、２８１  乱数生成部
【図１】
0005378702.tif 000002
【図２】
0005378702.tif 000003
【図３】
0005378702.tif 000004
【図４】
0005378702.tif 000005
【図５】
0005378702.tif 000006
【図６】
0005378702.tif 000007
【図７】
0005378702.tif 000008
【図８】
0005378702.tif 000009
【図９】
0005378702.tif 000010
【図１０】
0005378702.tif 000011
【図１１】
0005378702.tif 000012
【図１２】
0005378702.tif 000013