説明

秘匿認証システム

【課題】高度な秘匿性を確保すると共に演算負荷を軽減してコストを削減する。
【解決手段】被認証装置1の正当性を示す認証データが、関数を特定する関数データとこの関数から認証データを特定する規則データとからなる複数の分散データに分散して定められ、複数の分散データの一部を、被認証装置と認証装置2との間で共有させ、被認証装置において、認証装置との間で共有しない分散データに対して第3者による分散データの算出が困難な演算処理を行って検証データを求めて、その検証データを認証装置に送り、認証装置において、自装置に蓄積された被認証装置ごとの認証データ及び分散データと、被認証装置から受け取った検証データとに基づいて、被認証装置の正当性を検証する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、他人に知られることなく認証データを被認証装置から認証装置に通知して認証を行う秘匿認証システムに関するものである。
【背景技術】
【0002】
インターネットバンキングやインターネットショッピングなどのインターネット商取引システムなど、近年、ネットワークを介して接続された端末に対してサーバから種々のサービスを提供するシステムが急速に普及しており、このようなシステムにおいては、ユーザが正規登録された者か否かを検証する認証システムが必要となるが、パスワードなどの認証データがネットワーク上に送出されるため、認証データを盗取して正規のユーザになりすまして不正に利益を受ける行為を阻止するための様々な技術が知られている(例えば特許文献1参照)。
【0003】
また、近年、電子マネー機能を有する非接触型ICカードが急速に普及しており、入退室管理システムや商品管理システムでも、非接触型ICカードやRFIDタグが利用されるようになってきたが、この種のRFIDデバイスを用いたシステムでは、スキミングにより認証データを盗取してなりすましにより不正に利益を受ける行為を阻止する必要があり、このようなRFIDデバイスの安全性を高める技術としては、Randomized Hash Lock方式、ハッシュチェーン方式(特許文献2参照)、再暗号化方式(特許文献3参照)が知られている。
【特許文献1】特開2007−293787号公報
【特許文献2】特再表2005−031579号公報
【特許文献3】特開2004−317764号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかるに、従来の様々な技術では、複雑な演算処理により認証データの秘匿性を高めることができる反面、高速な演算手段が必要になることから、コストが嵩み、低コスト化の要望を十分に満足することができず、低コスト化と高度な秘匿性とを両立させることが可能な技術が望まれる。また、秘匿認証システムにおいては、認証に関する事実(認証相手、認証日時など)を過去に遡って探索されることのないフォワードセキュアや、認証に関する事実を未来に渡って探索されることのないバックセキュアを実現することが望まれる。
【0005】
本発明は、このような従来技術の問題点を解消するべく案出されたものであり、その主な目的は、高度な秘匿性を確保すると共に演算負荷を軽減してコストを削減することができるように構成された秘匿認証システムを提供することにある。また本発明は、フォワードセキュア及びバックセキュアを実現することができる秘匿認証システムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明の秘匿認証システムは、被認証装置、またはユーザの正当性を示す認証データが、関数を特定する関数データとこの関数から認証データを特定する規則データとからなる複数の分散データに分散して定められ、複数の分散データの一部を、前記被認証装置と認証装置との間で共有させ、前記被認証装置において、前記認証装置との間で共有しない分散データに対して第3者による逆算の困難な演算処理を行って検証データを求めて、その検証データを認証装置に送り、前記認証装置において、自装置に蓄積された被認証装置、またはユーザごとの認証データ及び自装置に蓄積された分散データと、前記被認証装置から受け取った検証データとに基づいて、前記被認証装置の正当性を検証する構成とする。
【発明の効果】
【0007】
本発明によれば、分散データが全て揃わないと認証データを求めることができないため、高度な秘匿性を確保することができ、また、1次関数のように次数の小さな関数を用いることで、演算負荷を軽減することができるため、低速な演算手段で済み、コストを削減することができる。
【発明を実施するための最良の形態】
【0008】
上記課題を解決するためになされた第1の発明は、被認証装置、またはユーザの正当性を示す認証データが、関数を特定する関数データとこの関数から認証データを特定する規則データとからなる複数の分散データに分散して定められ、複数の分散データの一部を、前記被認証装置と認証装置との間で共有させ、前記被認証装置において、前記認証装置との間で共有しない分散データに対して第3者による逆算の困難な演算処理を行って検証データを求めて、その検証データを認証装置に送り、前記認証装置において、自装置に蓄積された被認証装置、またはユーザごとの認証データ及び自装置に蓄積された分散データと、前記被認証装置から受け取った検証データとに基づいて、前記被認証装置の正当性を検証する構成とする。
【0009】
これによると、被認証装置と認証装置との通信に介入する中間者により、被認証装置から認証装置に送られる分散データが盗み見されたとしても、中間者は、分散データが全て揃わないと認証データを求めることができないため、高度な秘匿性を確保することができ、また、1次関数のように次数の小さな関数を用いることで、演算負荷を軽減することができるため、低速な演算手段で済み、コストを削減することができる。
【0010】
また、分散データを検証データに変換せずに認証装置に送ることも考えられるが、この場合、中間者が、認証時の送信データを複数回収集することで認証データを推測することが可能になる余地がある。一方、本発明のように分散データを検証データに変換して送るようにすると、検証データの元になる分散データの内容がわからないため、認証データを推測することが困難になり、不正な認証を確実に阻止することができる。
【0011】
但し、中間者は、検証データから元になる分散データを逆算できずとも、元データの値に、適当な値を入れて計算結果が合致するか否かを確かめるオフライン攻撃を行うことは可能であるので、認証データの値は十分大きなものであることが望ましい。
【0012】
この場合、分散データの内、固定値のものは、予めあるいは認証時とは別の手順で被認証装置及び認証装置に保有させ、固定値でないものは、認証時に送受信を行って、被認証装置及び認証装置で共有するとすると効率が良い。但し、少なくとも1部の分散データは、演算処理された上で、認証時に被認証装置から認証装置に送られる。
【0013】
ここで、分散データの内、関数データとは、関数を一意に定めるものであり、例えば関数が示す1次直線あるいはn次曲線上の点の座標値、関数式の係数、傾き、及び切片などの値である。ここで、n次関数の直線あるいは曲線上の点の座標値を関数データとした場合には、関数データはn+1個の点のX値及びY値となり、これらの値により関数が一意に定められる。
【0014】
また、分散データの内、規則データとは、関数から認証データを特定する取り決めであり、例えば関数が示す1次直線あるいはn次曲線上の点のY値を認証データとした場合には、その点のX値が規則データとなる。さらに、関数が示す1次直線あるいはn次曲線と別の1次直線あるいはn次曲線との交点の座標値を認証データとすることもでき、この場合、その交点を形成する別の1次直線あるいはn次曲線を示す関数を特定する値が規則データとなる。また、関数の式の係数を認証データとすることもでき、この場合、係数を認証データとする指定情報が規則データとなる。
【0015】
また、認証データとは、被認証装置の正当性を示すものであり、被認証装置やこれを操作するユーザに与えられたパスワードや、被認証装置を操作するユーザに関するバイオメトリクス情報などである。
【0016】
なお、検証データを得るための演算処理は、1つの分散データの全てに対して行う他、その一部に対して行うものとしても良い。
【0017】
前記課題を解決するためになされた第2の発明は、前記第1の発明において、前記検証データは、前記分散データを一方向性関数を用いて変換する演算処理により求められる構成とする。
【0018】
これによると、逆関数の計算が困難であるため、被認証装置と認証装置との通信に介入する中間者は、検証データの元になる分散データを求めることができない。
【0019】
この場合、一方向性関数としては、逆関数の計算が困難で、元データを求めることが事実上できないものであり、その代表的なものとしてハッシュ関数があるが、べき乗関数、特に2乗関数でも、データ量(桁数)が大きくなると、実用上十分な一方向性が得られ、また演算負荷が低いことから、低速の演算機能しか備えていない簡易な装置にも適用することができる。なお、以下の一方向性関数も同様である。
【0020】
前記課題を解決するためになされた第3の発明は、前記第1の発明において、前記検証データは、前記分散データに認証データを乗じる演算処理により求められる構成とする。
【0021】
これによると、被認証装置と認証装置との通信に介入する中間者は、認証データを知らないと、検証データの元になる分散データを求めることができない。
【0022】
なお、分散データに認証データを乗じる演算処理とは、分散データや認証データの一部分のデータを乗じる演算処理でも、またこれらを一定の演算処理した値を乗じる演算処理でも良い。
【0023】
前記課題を解決するためになされた第4の発明は、前記第1の発明において、前記検証データは、前記分散データを前記認証装置の公開鍵、または前記被認証装置及び前記認証装置の双方において共有する共通鍵を用いて暗号化する演算処理により求められる構成とする。
【0024】
これによると、被認証装置と認証装置との通信に介入する中間者は、暗号鍵を持っていないので、検証データの元になる分散データを求めることができない。これは、一見、パスワードを暗号して認証するのと等価に見えるが、パスワードを暗号化する方法は、パスワードが変わらない間は常に同じ値になるので、問題である。
【0025】
前記課題を解決するためになされた第5の発明は、前記第1〜第4の発明において、前記被認証装置及び前記認証装置の双方において、互いに同一の一方向性関数を用いて前記認証データを変換して、その変換結果で前記認証データを更新する構成とする。
【0026】
これによると、他者により被認証装置や認証装置が保持する認証データが盗取されたとしても、被認証装置や認証装置が過去に保持していた認証データが分からないため、認証に関する事実(認証相手、認証日時など)を過去に遡って探索されることのないフォワードセキュアを実現することができる。また、自装置内での変換処理のみで済むため、コストを削減することができる。
【0027】
なお、一方向性関数を用いた認証データの変換は、認証データの全てに対して行う他、その一部に対して行うものとしても良い。
【0028】
前記課題を解決するためになされた第6の発明は、前記第1〜第5の発明において、前記被認証装置において、前記検証データと共に前記認証装置に送られる分散データを前記認証装置の公開鍵を用いて暗号化した上で前記認証装置に送り、前記認証装置において、暗号化された分散データを自身の秘密鍵を用いて復号化する構成とする。
【0029】
これによると、他者により被認証装置や認証装置が保持する分散データが盗取されたとしても、被認証装置から認証装置に送られる分散データが暗号化されているため、被認証装置と認証装置との通信に介入する中間者は、認証装置の秘密鍵がない限り、送信される分散データの内容がわからず、認証に関する事実を未来に渡って探索されることのないバックセキュアを実現することができる。また、認証に関する事実を過去に遡って探索されることのないフォワードセキュアを実現することができる。
【0030】
なお、分散データの暗号化は、1つの分散データの全てに対して行う他、その一部に対して行うものとしても良い。
【0031】
前記課題を解決するためになされた第7の発明は、前記第1〜第6の発明において、前記認証装置において、前記分散データに対して前記検証データを求める演算処理とは異なる演算処理を行って応答データを求めて、その応答データを前記被認証装置に送り、前記被認証装置において、自身が保有する分散データと、前記認証装置から受け取った応答データとに基づいて、前記認証装置の正当性を検証する構成とする。
【0032】
これによると、被認証装置が認証装置の正当性を確認することができ、双方向認証が可能になる。
【0033】
この場合、応答データは、検証データと同様に、分散データを一方向性関数を用いて変換する演算処理により求められるもの、分散データに認証データを乗じる演算処理により求められるもの、及び分散データを暗号化する演算処理により求められるものとすれば良いが、検証データを求める処理とは異なる処理でなければならない。
【0034】
なお、応答データを得るための演算処理は、1つの分散データの全てに対して行う他、その一部に対して行うものとしても良い。
【0035】
前記課題を解決するためになされた第8の発明は、前記第1〜第7の発明において、前記認証装置において、分散データを任意に生成して、前記被認証装置に送り、前記被認証装置において、前記認証装置から受け取った分散データと認証データから残りの分散データを求めて、その分散データに対して所要の演算処理を行って前記検証データを求める構成とする。
【0036】
これによると、認証装置から被認証装置に送られる分散データが逐次変化するため、認証装置と被認証装置との間での遣り取りを真似してここで用いられた分散データを使用して不正に認証を受けることができなくなり、リトライ攻撃を防御することができる。
【0037】
以下、本発明の実施の形態を、図面を参照しながら説明する。
【0038】
図1は、本発明による秘匿認証システムを示すシステム構成図である。ここでは、クライアント装置(被認証装置)5とサーバ装置(認証装置)6とがネットワーク接続され、サーバ装置2においてクライアント装置1の認証を行うための認証データ(パスワードなど)をクライアント装置1からサーバ装置2に通知するものである。このような認証システムでは、クライアント装置1とサーバ装置2との間の通信に介入した中間者装置3により認証データを盗取されたり、中間者装置3が正規のクライアント装置1になりすましてサーバ装置2で不正に認証を受けることを阻止するために、以下のような秘匿認証システムが採用される
【0039】
図2・図3は、本発明における秘匿認証の要領を説明する図である。ここでは、認証データmが、点S(x2,s)と点K(x3,k)とを通過する1次直線上でX値がx1となる点M(x1,m)のY値として与えられ、この直線の関数式は、関数データx2・x3・s・kにより一義的に定められ、これらの関数データと、直線の関数式から認証データmを特定するための規則データx1とから認証データmが求められる。
【0040】
なおここでは、認証データmを特定するものは、規則データx1としているが、これは関数データx2・x3・s・kにより一義的に定められる関数と、x=x1との交点のことであり、これを別の任意の関数との交点とすることも可能である。
【0041】
ここで、関数データx2・x3・s・k及び規則データx1は、認証データmを分散して規定する分散データとして位置付けられ、これらの分散データx1〜x3・s・kが全て揃わないと認証データmを求めることができない。
【0042】
分散データx1〜x3・s・kは、その一部が、認証時とは別の手順で事前にあるいは事後に、クライアント装置1とサーバ装置2との間で共有させ、クライアント装置1からサーバ装置2に対する認証要求時に、クライアント装置1において、認証データmから、サーバ装置2との間で共有しない分散データを生成して、その分散データをサーバ装置2に送り、サーバ装置2において、自装置が保持する分散データとクライアント装置1から受け取った分散データとから認証データを求めることができる。
【0043】
図2(A)に示す方式1では、1つの点SのY値である分散データsのみをクライアント装置1からサーバ装置2に送り、残りの分散データx1〜x3・kは、クライアント装置1とサーバ装置2との間で共有している。この残りの分散データx1〜x3・kは固定値であり、少なくとも一部の情報は秘密に保持する。この場合、認証データmに応じて分散データsのみが変動する。
【0044】
図2(B)に示す方式1の改良では、1つの点SのX値及びY値である分散データs・x2を送り、残りの分散データx1・x3・kは、クライアント装置1とサーバ装置2との間で共有している。この残りの分散データx1・x3・kは固定値であり、少なくとも一部の情報は秘密に保持する。この場合、分散データx2は任意の値、例えば乱数で生成して、2つの点M・Kを通る直線上に点Sがくるように分散データsが定められる。
【0045】
図3(A)に示す方式2では、2つの点S・KのY値である分散データs・kを送り、残りの分散データx1〜x3は、クライアント装置1とサーバ装置2との間で共有している。この残りの分散データx1〜x3は固定値であり、少なくとも一部の情報は秘密に保持する。この場合、分散データsは任意の値、例えば乱数で生成して、2つの点M・Sを通る直線上でX値がx3となる点KのY値として分散データkが定められる。
【0046】
図3(B)に示す方式2の改良では、点SのX値及びY値と点KのY値である分散データs・x2・kを送り、残りの分散データx1・x3は、クライアント装置1とサーバ装置2との間で共有している。この残りの分散データx1・x3は固定値であり、少なくとも一部の情報は秘密に保持する。この場合、分散データs・x2は任意の値、例えば乱数で生成して、2つの点M・Sを通る直線上でX値がx3となる点KのY値として分散データkが定められる。
【0047】
ここで、図2(A)の方式1では、同じ認証データmでは、毎回同じ値が送られることになり、その値を用いて中間者はなりすましを簡単に行うことができる。図2(B)の方式1の改良では、複数回認証を行うと、同じクライアント装置1では点S(x2,s)が同一直線上に並ぶため、この直線上の任意の点で分散データs・x2を決定すればなりすましが可能となる。
【0048】
図3(A)の方式2では、点S・Kを通る直線の傾きが認証のたびに変化するが、複数回認証を行うと、認証データmを特定する点M(x1,m)が、点S・Kを通る直線の交点として現れるため、認証データmが見破られる可能性がある。図3の方式2の改良でも同様である。
【0049】
図4は、本発明による秘匿認証の別の例による要領を説明する図である。ここでは、認証データm1が、点M2(x1,m2)と点K(x3,k)と点S(x4,s)とを通過する2次曲線上でX値がx1となる点M1(x1,m1)のY値として与えられ、この曲線の関数式は、関数データx2〜x4・m2・s・kにより一義的に定められ、これらの関数データと、曲線の関数式から認証データm1を特定するための規則データx1とから認証データmが求められる。
【0050】
ここで、関数データx2〜x4・m2・s・k及び規則データx1は、認証データm1を分散して規定する分散データとして位置付けられ、これらの分散データx1〜x4・m2・s・kが全て揃わないと認証データm1を求めることができない。
【0051】
分散データx1〜x4・m2・s・kは、その一部が、認証時とは別の手順で事前にあるいは事後に、クライアント装置1とサーバ装置2との間で共有させ、認証要求時に、クライアント装置1において、認証データmから、サーバ装置2との間で共有しない分散データを生成して、その分散データをサーバ装置2に送り、サーバ装置2において、自装置が保持する分散データとクライアント装置1から受け取った分散データとから認証データを求めることができる。
【0052】
ここで、クライアント装置1とサーバ装置2との間で共有させる分散データと、認証時にクライアント装置1からサーバ装置2に送る分散データをどのように設定するかは、図2・図3の1次直線を用いた例と同様に、種々の組み合わせが考えられるが、この2次関数による方式でも、図2・図3の例と同様に、中間者によるなりすましや認証データの盗取の余地がある。
【0053】
そこで、以下に示すように、クライアント装置1からサーバ装置2に分散データをそのまま送ることはせず、クライアント装置1において、分散データに所要の演算処理を行った検証データを生成して、その検証データをサーバ装置2に送り、サーバ装置2において、自身が保持する認証データと、クライアント装置1から受け取った検証データとに基づいて、クライアント装置1の正当性を検証する。
【0054】
<一方向性関数による検証データの例>
図5は、図1に示したクライアント装置及びサーバ装置の第1の例を示すブロック図である。ここでは、図3(A)の方式2が採用され、分散データx1〜x3がクライアント装置1とサーバ装置2との間で共有され、分散データkに所要の演算処理を行った検証データF(k)と分散データsがクライアント装置1からサーバ装置2に送られる。
【0055】
クライアント装置1は、自装置の正当性を示す認証データmを秘密に記憶する認証データ記憶部101と、分散データx1〜x3を秘密に記憶する分散データ記憶部102と、分散データsを乱数で生成する乱数生成部103と、認証データ記憶部101に記憶された認証データm、分散データ記憶部102に記憶された分散データx1〜x3、及び乱数生成部103で生成した分散データsから分散データkを求める関数処理部104と、関数処理部104で算出された分散データkを一方向性関数を用いて変換して検証データF(k)を求める検証データ生成部105とを有しており、クライアント装置1からサーバ装置2に対する認証要求時に、検証データ生成部105で得られた検証データF(k)と乱数生成部103で生成した分散データsとがサーバ装置2に送られる。関数処理部104では、分散データx1・x2・sと認証データmから関数が特定され、この関数と分散データx3から分散データkが求められる。
【0056】
検証データ生成部105で用いられる一方向性関数としては、ハッシュ関数などの典型的な一方向性関数も可能であるが、実用上十分な一方向性が得られる2乗関数が好適であり、演算負荷が低いことから、低速の演算機能しか備えていない簡易な装置(RFIDタグなど)にも適用することができる。
【0057】
サーバ装置2は、複数のクライアント装置1ごとの認証データmを蓄積する認証データ蓄積部201と、分散データx1〜x3を記憶する分散データ記憶部202と、分散データ記憶部202に記憶された分散データx1〜x3、認証データ蓄積部201に蓄積された認証データm、及びクライアント装置1から受け取った分散データsから分散データkを求める関数処理部203と、関数処理部203で算出された分散データkに対して、クライアント装置1の検証データ生成部105と同一の一方向性関数を用いて変換して検証データF(k)を求める検証データ生成部204と、検証データ生成部204で得られた検証データF(k)とクライアント装置1から受け取った検証データF(k)とを比較してクライアント装置1の正当性を検証する照合部205とを有している。
【0058】
関数処理部203では、分散データx1・x2・m・sから関数が復元され、この関数と分散データx3から分散データkが求められる。このとき、認証データ蓄積部201から認証データmが順次読み出され、照合部205において、検証データ生成部204で算出された検証データF(k)とクライアント装置1から受け取った検証データF(k)とが一致すれば認証が成功したものとし、両者が一致しなければ、次の認証データmを認証データ蓄積部201から読み出して同様の処理が行われ、一致するものがなければ認証が失敗したものとする。
【0059】
この構成では、中間者装置3が、分散データx1〜x3を知っていて、かつ中間者装置3により、クライアント装置1からサーバ装置2に送られる分散データsとF(k)を盗み見されたとしても、つまり、中間者装置3が、k以外のすべての分散データとF(k)を知りえたとしても、中間者装置3では、F(k)からkを求めることができないため、、認証データmを求めることはできない。
【0060】
なお、クライアント装置1の認証データmを識別するIDデータを、検証データF(k)及び乱数データsと共に、クライアント装置1からサーバ装置2に送るようにしても良い。このようにすると、クライアント装置1から受け取ったIDデータに対応する認証データmを認証データ蓄積部201から読み出すことで、照合部205での比較処理が1回で済み、処理が簡便になる。
【0061】
<積演算による検証データの例>
図6は、図1に示したクライアント装置及びサーバ装置の第2の例を示すブロック図である。ここでは、クライアント装置1が、関数処理部104で算出された分散データkに認証データmを乗じる演算処理を行って検証データm×kを求める検証データ生成部111を有しており、この検証データm×kと乱数データsとがサーバ装置2に送られる。サーバ装置2は、クライアント装置1から受け取った検証データm×kに対して、クライアント装置1の検証データ生成部111での演算処理と逆方向の演算処理、すなわち関数処理部203で算出された分散データkの逆数を検証データm×kに乗じて認証データmを求めるデータ抽出部211と、データ抽出部211で求められた認証データmと認証データ蓄積部201から取り出した認証データmとを比較してクライアント装置1の正当性を検証する照合部212とを有している。その他の構成は、図5の例と同様である。
【0062】
なお、サーバ装置2では、クライアント装置1と同様に、関数処理部203で算出された分散データkに認証データmを乗じて検証データm×kを求め、この検証データm×kと、クライアント装置1から受け取った検証データm×kとを比較してクライアント装置1の正当性を検証するものとしても良い。
【0063】
<暗号化による検証データの例>
図7は、図1に示したクライアント装置及びサーバ装置の第3の例を示すブロック図である。ここでは、クライアント装置1が、関数処理部104で算出された分散データkを、サーバ装置2の公開鍵を用いて暗号化する暗号化部121を有しており、暗号化された分散データE(k)と分散データsとがサーバ装置2に送られる。サーバ装置2は、クライアント装置1から受け取った暗号化された分散データE(k)を自身の秘密鍵を用いて復号化する復号化部221と、復号化部221で求められた分散データk、分散データ記憶部202に記憶された分散データx1〜x3、及びクライアント装置1から受け取った分散データsから認証データmを求める関数処理部222と、関数処理部222で求められた認証データmと認証データ蓄積部201から取り出した認証データmとを比較してクライアント装置1の正当性を検証する照合部223とを有している。その他の構成は、図5の例と同様である。
【0064】
なお、分散データkの値が非常に大きい場合は、乱数で共通鍵を発生させ、この共通鍵で分散データkの暗号化を行い、共通鍵は、サーバ装置2の公開鍵で暗号化を行うというハイブリッド暗号とすると良い。なおここでは、暗号鍵として、サーバ装置2の公開鍵を用いているが、これは、クライアント装置1とサーバ装置2との間で共有される、共通鍵であっても構わない。
【0065】
<フォワードセキュアを図る例>
図8は、図1に示したクライアント装置及びサーバ装置の第4の例を示すブロック図である。ここでは、クライアント装置1が、認証データ記憶部101に記憶された認証データmを一方向性関数を用いて変換して、その変換結果で認証データmを更新するデータ更新部131を有している。また、サーバ装置2が、認証データ蓄積部201に蓄積された認証データmを一方向性関数を用いて変換して、その変換結果で認証データmを更新するデータ更新部231を有している。その他の構成は、図5の例と同様である。
【0066】
クライアント装置1のデータ更新部131とサーバ装置2のデータ更新部231では互いに同一の一方向性関数が用いられる。この一方向性関数としては、ハッシュ関数などの典型的な一方向性関数も可能であるが、実用上十分な一方向性が得られる2乗関数が好適であり、演算負荷が低いことから、低速の演算機能しか備えていない簡易な装置(RFIDタグなど)にも適用することができる。
【0067】
また、クライアント装置1のデータ更新部131とサーバ装置2のデータ更新部231での更新処理は同一のタイミングで行われ、例えば1回の認証のたびに、クライアント装置1のデータ更新部131で認証データが更新されると同時に、サーバ装置2のデータ更新部231でクライアント装置1に関する認証データが更新される。
【0068】
これにより、他者によりクライアント装置1やサーバ装置2が保持する認証データが盗取され、かつこの者が、サーバ装置2と通信した、すべてのクライアント装置の過去の通信履歴を保持していたとしても、クライアント装置1やサーバ装置2が過去に保持していた認証データが分からないため、認証に関する事実(認証相手、認証日時など)を過去に遡って探索されることのないフォワードセキュアを実現することができる。また、自装置内での変換処理のみで済むため、コストを削減することができる。これによると、クライアント装置がカードであるカード認証などにおいて、カード廃棄を行う際に、カードに対して特に特別な対処を行わずとも、安全性が確保されるので良い。
【0069】
なお、データ更新部131・231において、分散データ記憶部102・202に記憶された分散データx1〜x3、特に認証データmの特定に必須の分散データx1を一方向性関数で更新するものとしても良い。
【0070】
<フォワード・バックセキュアを図る例>
図9は、図1に示したクライアント装置及びサーバ装置の第5の例を示すブロック図である。ここでは、クライアント装置1が、乱数生成部103で生成した分散データsをサーバ装置2の公開鍵を用いて暗号化する暗号化部141を有しており、ここで得られた暗号化データE(s)がサーバ装置2に送られる。また、サーバ装置2が、クライアント装置1から受け取った暗号化データE(s)を自身の秘密鍵を用いて復号化する復号化部241を有しており、ここで得られた分散データsが関数処理部203に送られる。その他の構成は、図5の例と同様である。
【0071】
これにより、他者によりクライアント装置1やサーバ装置2が保持する認証データが盗取されたとしても、クライアント装置1からサーバ装置2に送られる分散データが暗号化されているため、クライアント装置1とサーバ装置2との通信に介入する中間者装置3では、サーバ装置2の秘密鍵がない限り、送信される分散データの内容がわからず、認証に関する事実を未来に渡って探索されることのないバックセキュアを実現することができる。また、認証に関する事実を過去に遡って探索されることのないフォワードセキュアを実現することができる。これによると、クライアント装置がカードであるカード認証などにおいて、他者に、カードの中身をカード所持者に分からないように盗み見されても、少なくともカード所持者の行動が監視されることはなくなる。
【0072】
なおここでは、クライアント装置1からサーバ装置2に送られる検証データF(k)及び分散データsのうち、分散データsのみを暗号化したが、その両方を暗号化する、または検証データF(k)のみを暗号化するものとしても良い。
【0073】
また、分散データsやkの値が非常に大きい場合は、乱数で共通鍵を発生させ、この共通鍵で分散データsやkの暗号化を行い、共通鍵は、サーバ装置2の公開鍵で暗号化を行うというハイブリッド暗号とすると良い。
【0074】
<双方向認証の例>
図10は、図1に示したクライアント装置及びサーバ装置の第6の例を示すブロック図である。ここでは、サーバ装置2が、関数処理部203で算出された分散データkに認証データmを乗じる演算処理を行って応答データm×kを求める応答データ生成部251を有しており、この応答データm×kがクライアント装置1に送られる。クライアント装置1は、関数処理部104で算出された分散データkに認証データmを乗じる演算処理を行って応答データm×kを求める応答データ生成部151と、応答データ生成部151で算出された応答データm×kとサーバ装置2から受け取った応答データm×kとを比較してサーバ装置2の正当性を検証する照合部152とを有している。その他の構成は、図5の例と同様である。
【0075】
これにより、クライアント装置1がサーバ装置2の正当性を確認することができ、双方向認証が可能になる。
【0076】
ここで、応答データは、図5の例で示した検証データと同様に、分散データkを一方向性関数を用いて変換する演算処理により得られるものとしても良く、また、図7の例で示した検証データと同様に、分散データkを暗号化したものとすることも可能であるが、いずれにしても応答データは、検証データを求める処理とは異なる処理により得る必要がある。
【0077】
<チャレンジ・レスポンス方式でリトライ攻撃防御を図る例>
図11は、図1に示したクライアント装置及びサーバ装置の第7の例を示すブロック図である。ここでは、サーバ装置2が、分散データsを乱数で生成する乱数生成部261を有しており、ここで得られた分散データsがクライアント装置1に送られる。クライアント装置1では、サーバ装置2から受け取った分散データs、認証データ記憶部101に記憶された認証データm、及び分散データ記憶部102に記憶された分散データx1〜x3から分散データkを求める処理が関数処理部104にて行われ、ここで得られた分散データkがサーバ装置2に送られる。その他の構成は、図5の例と同様である。
【0078】
この構成では、サーバ装置2からクライアント装置1に送られる分散データsが不規則に変化するため、クライアント装置1とサーバ装置2との間での遣り取りを真似してここで用いられた分散データを使用して不正に認証を受けることができなくなり、リトライ攻撃を防御することができる。
【0079】
<逆認証の例>
図12は、図1に示したクライアント装置及びサーバ装置の第8の例を示すブロック図である。ここでは、前記の例とは逆に、クライアント装置1においてサーバ装置2の正当性を検証するものであり、クライアント装置1が認証装置となり、サーバ装置2が被認証装置となっている。
【0080】
クライアント装置(認証装置)1は、自装置の認証データmを識別するIDデータを記憶するIDデータ記憶部181を有しており、ここから取り出されたIDデータと乱数生成部103で生成した分散データsとがサーバ装置2に送られる。サーバ装置(被認証装置)2では、クライアント装置1から受け取ったIDデータに基づいて該当する認証データmが認証データ蓄積部201から取り出され、検証データ生成部204で得られた検証データF(k)がクライアント装置1に送られる。クライアント装置1は、検証データ生成部105で得られた検証データF(k)とサーバ装置2から受け取った検証データF(k)とを比較してサーバ装置2の正当性を検証する照合部182を有している。
【0081】
また、サーバ装置2が、分散データsを乱数で生成する乱数生成部281を有し、ここで得られた分散データsがクライアント装置1に送られるものとしても良い。これによると、クライアント装置が認証を受ける前に、サーバ装置が正規のものであるか否かを確かめることができる。
【0082】
なお、前記の各図に示された例を適宜に組み合わせて構成することも可能である。また図5以降の各例では、1次関数による方式を採用したが、図4に示した2次関数による方式も採用することができ、この他、3次関数など種々の関数による方式も可能である。
【0083】
また、前記の各図で、クライアント装置1においては、認証データmは、認証データ記憶部101に記憶されているものとして説明したが、認証データを保持するカード認証のようなものでなければ、ユーザが、認証のたびに、認証データをキー入力するものであっても良い。
【産業上の利用可能性】
【0084】
本発明にかかる秘匿認証システムは、高度な秘匿性を確保すると共に演算負荷を軽減してコストを削減することができる効果を有し、他人に知られることなく認証データを被認証装置から認証装置に通知して認証を行う秘匿認証システムなどとして有用である。
【図面の簡単な説明】
【0085】
【図1】本発明による秘匿認証システムを示すシステム構成図
【図2】本発明による秘匿認証の要領を説明する図
【図3】本発明による秘匿認証の要領を説明する図
【図4】本発明による秘匿認証の別の例による要領を説明する図
【図5】図1に示したクライアント装置及びサーバ装置の第1の例を示すブロック図
【図6】図1に示したクライアント装置及びサーバ装置の第2の例を示すブロック図
【図7】図1に示したクライアント装置及びサーバ装置の第3の例を示すブロック図
【図8】図1に示したクライアント装置及びサーバ装置の第4の例を示すブロック図
【図9】図1に示したクライアント装置及びサーバ装置の第5の例を示すブロック図
【図10】図1に示したクライアント装置及びサーバ装置の第6の例を示すブロック図
【図11】図1に示したクライアント装置及びサーバ装置の第7の例を示すブロック図
【図12】図1に示したクライアント装置及びサーバ装置の第8の例を示すブロック図
【符号の説明】
【0086】
1 クライアント装置
2 サーバ装置
3 中間者装置
101 認証データ記憶部、102 分散データ記憶部、103 乱数生成部、104 関数処理部、105 検証データ生成部、111 検証データ生成部、121 暗号化部、131 データ更新部、141 暗号化部、151 応答データ生成部、152 照合部、181 データ記憶部、182 照合部
201 認証データ蓄積部、202 分散データ記憶部、203 関数処理部、204 検証データ生成部、205 照合部、211 データ抽出部、212 照合部、221 復号化部、222 関数処理部、223 照合部、231 データ更新部、241 復号化部、251 応答データ生成部、261 乱数生成部、281 乱数生成部

【特許請求の範囲】
【請求項1】
被認証装置、またはユーザの正当性を示す認証データが、関数を特定する関数データとこの関数から認証データを特定する規則データとからなる複数の分散データに分散して定められ、
複数の分散データの一部を、前記被認証装置と認証装置との間で共有させ、
前記被認証装置において、前記認証装置との間で共有しない分散データに対して第3者による逆算の困難な演算処理を行って検証データを求めて、その検証データを認証装置に送り、
前記認証装置において、自装置に蓄積された被認証装置、またはユーザごとの認証データ及び自装置に蓄積された分散データと、前記被認証装置から受け取った検証データとに基づいて、前記被認証装置の正当性を検証することを特徴とする秘匿認証システム。
【請求項2】
前記検証データは、前記分散データを一方向性関数を用いて変換する演算処理により求められることを特徴とする請求項1に記載の秘匿認証システム。
【請求項3】
前記検証データは、前記分散データに認証データを乗じる演算処理により求められることを特徴とする請求項1に記載の秘匿認証システム。
【請求項4】
前記検証データは、前記分散データを前記認証装置の公開鍵、または前記被認証装置及び前記認証装置の双方において共有する共通鍵を用いて暗号化する演算処理により求められることを特徴とする請求項1に記載の秘匿認証システム。
【請求項5】
前記被認証装置及び前記認証装置の双方において、互いに同一の一方向性関数を用いて前記認証データを変換して、その変換結果で前記認証データを更新することを特徴とする請求項1乃至請求項4のいずれかに記載の秘匿認証システム。
【請求項6】
前記被認証装置において、前記検証データと共に前記認証装置に送られる分散データを前記認証装置の公開鍵を用いて暗号化した上で前記認証装置に送り、
前記認証装置において、暗号化された分散データを自身の秘密鍵を用いて復号化することを特徴とする請求項1乃至請求項5のいずれかに記載の秘匿認証システム。
【請求項7】
前記認証装置において、前記分散データに対して前記検証データを求める演算処理とは異なる演算処理を行って応答データを求めて、その応答データを前記被認証装置に送り、
前記被認証装置において、自身が保有する分散データと、前記認証装置から受け取った応答データとに基づいて、前記認証装置の正当性を検証することを特徴とする請求項1乃至請求項6のいずれかに記載の秘匿認証システム。
【請求項8】
前記認証装置において、分散データを任意に生成して、前記被認証装置に送り、
前記被認証装置において、前記認証装置から受け取った分散データと認証データから残りの分散データを求めて、その分散データに対して所要の演算処理を行って前記検証データを求めることを特徴とする請求項1乃至請求項7のいずれかに記載の秘匿認証システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2009−267583(P2009−267583A)
【公開日】平成21年11月12日(2009.11.12)
【国際特許分類】
【出願番号】特願2008−112375(P2008−112375)
【出願日】平成20年4月23日(2008.4.23)
【出願人】(000005821)パナソニック株式会社 (73,050)
【Fターム(参考)】