【文献】
KIEFER, F. and MANULIS, M.,Zero-Knowldge Password Policy Checks and Verifier-Based PAKE,Cryptology ePrin Archive,2015年 1月,Report 2014/242,pp.1-16,[2021年1月14日検索],URL,https://eprint.iacr.org/2014/242
(58)【調査した分野】(Int.Cl.,DB名)
クライアントデバイスからのユーザを認証するためのサーバデバイスであって、前記ユーザは認証文字列へのアクセスを有し、前記認証文字列は複数の位置に複数の文字を有し、前記文字は文字セットから選択され、前記サーバデバイスは、
文字/位置データのセットのサブセットから計算された第1の検証番号を格納するストレージであって、前記サブセットは前記認証文字列によって示され、前記文字/位置データのセットは、前記文字セットからの文字と、認証文字列内の位置との各組み合わせに対する数字を含む、ストレージと、
プロセッサ回路とを備え、前記プロセッサ回路は、
準同型暗号アルゴリズムに従って前記文字/位置データのセットを暗号化して、暗号化された前記セットを前記クライアントデバイスに送信し、
前記クライアントデバイスから第2の検証番号を受信し、ここで、前記第2の検証番号は、暗号化された前記セットのサブセットから、暗号化された第2の検証番号を準同型的に計算することによって計算され、前記サブセットは前記認証文字列によって示され、
前記ユーザを認証するために、前記第1の検証番号と暗号化された前記第2の検証番号との間の対応を検証する、
サーバデバイス。
サーバデバイスに対してユーザを認証するためのクライアントデバイスであって、前記ユーザは認証文字列へのアクセスを有し、前記認証文字列は複数の位置に複数の文字を有し、前記文字は文字セットから選択され、前記クライアントデバイスは、
プロセッサ回路を備え、前記プロセッサ回路は、
準同型暗号アルゴリズムに従って暗号化された文字/位置データのセットを受け取り、ここで、暗号化された前記文字/位置データのセットは、前記文字セットからの文字と、認証文字列内の位置との各組み合わせに対する数字を含み、
暗号化された前記文字/位置データのセットのサブセットから、暗号化された第2の検証番号を準同型的に計算し、ここで、前記サブセットは前記認証文字列によって示され、
暗号化された前記第2の検証番号を前記サーバデバイスに送信する、
クライアントデバイス。
前記クライアントデバイスは、ブラインディング数を格納するためのストレージを含み、前記プロセッサ回路は、暗号化された前記第2の検証番号を前記ブラインディング数でブラインドする、
請求項11または12に記載のクライアントデバイス。
クライアントデバイスからのユーザを認証するためのサーバ方法であって、前記ユーザは認証文字列へのアクセスを有し、前記認証文字列は複数の位置に複数の文字を有し、前記文字は文字セットから選択され、前記サーバ方法は、
文字/位置データのセットのサブセットから計算された第1の検証番号を格納するステップであって、前記サブセットは前記認証文字列によって示され、前記文字/位置データのセットは、前記文字セットからの文字と、認証文字列内の位置との各組み合わせに対する数字を含む、ステップと、
準同型暗号アルゴリズムに従って前記文字/位置データのセットを暗号化し、暗号化された前記セットを前記クライアントデバイスに送信するステップと、
前記クライアントデバイスから第2の検証番号を受信するステップであって、前記第2の検証番号は、暗号化された前記セットのサブセットから、暗号化された第2の検証番号を準同型的に計算することによって計算され、前記サブセットは前記認証文字列によって示される、ステップと、
前記ユーザを認証するために、前記第1の検証番号と暗号化された前記第2の検証番号との間の対応を検証するステップとを含む、
方法。
サーバデバイスに対してユーザを認証するためのクライアント方法であって、前記ユーザは認証文字列へのアクセスを有し、前記認証文字列は複数の位置に複数の文字を有し、前記文字は文字セットから選択され、前記クライアント方法は、
準同型暗号アルゴリズムに従って暗号化された文字/位置データのセットを受け取るステップであって、暗号化された前記文字/位置データのセットは、前記文字セットからの文字と、認証文字列内の位置との各組み合わせに対する数字を含む、ステップと、
暗号化された前記文字/位置データのセットのサブセットから、暗号化された第2の検証番号を準同型的に計算するステップであって、前記サブセットは前記認証文字列によって示される、ステップと、
暗号化された前記第2の検証番号を前記サーバデバイスに送信するステップとを含む、
方法。
【発明を実施するための形態】
【0014】
本発明は、様々な形態の実施形態を取り得るが、図面および以下の説明では、1つまたは複数の具体的実施形態が詳細に示される。本開示は、本発明の原理の例示として考えられるべきであり、本発明を図示および説明される具体的実施形態に限定するものではないことを理解されたい。
【0015】
以下、理解を目的として、動作中の実施形態の要素が説明される。しかしながら、各要素が、各要素によって実行されるものとして記載されている機能を実行するように構成されていることは明らかであろう。さらに、本発明は、実施形態に限定されるものではなく、本発明は、本明細書に記載されるまたは互いに異なる従属請求項に記載される全ての新規の特徴または特徴の組み合わせに及ぶ。
【0016】
一般的な認証メカニズムは、ユーザ資格情報とも呼ばれるユーザ名とパスワードとの組み合わせである。通常、資格情報は確認のために認証サーバに送信される。攻撃者があるユーザの資格情報を取得すると、攻撃者はサーバ上でユーザになりすますことができ、つまり、攻撃者は、自分が資格情報を盗まれたユーザであるとサーバに納得させることができる。残念ながら、実際には、多くのユーザが複数のアプリケーションで同じパスワードを使用している。このため、攻撃者は、破ったアプリケーション以外のアプリケーションでもユーザになりすますことができる。
【0017】
ユーザが資格情報を入力しているときに、一部の攻撃者がメモリを読み取ることができるという問題が存在する。これらの攻撃はメモリスクレイピングとして知られている。既存のソリューションは主に多要素認証に基づいており、多要素認証では、ユーザは複数の認証ステップを、好ましくは別々のデバイス上で実行する必要がある。その結果、攻撃者がサーバ上でユーザになりすますには資格情報をスクレイプだけでは不十分になるが、一方で、ユーザは機密データ(複数のアプリケーションで使用されている可能性が高い、ユーザのパスワード)を失う。
【0018】
考えられるソリューションは、パスワードがメモリ内に存在することがないようにすることである。例えば、セキュアキーボードを使用して数列を入力するようユーザが促され、ここで、押されたボタンの位置は数字の値を漏らさず、ボタンを押すことで生じる値はそのままの値ではなく、値を符号化したものである。
【0019】
このセキュアキーボードにより、例えばPIN等のパスワードの全ての情報がメモリスクレイパーから隠される。このようなソリューションは、機密の個人パスワードをそのような攻撃者に漏らさない。しかし、攻撃者は依然として、単純に、サーバへの符号化されたパスワードをスクレイピングして再生し、ユーザになりすまし得る。
【0020】
サーバへの認証にあたり、クライアントは通常、資格情報をセキュアチャネルを介して送信する。そして、サーバは自身のデータベースを使用して、ユーザ名およびパスワードの組み合わせが合致するか否かを確認する。例えば、データベースはユーザ名Uと、対応するパスワードの(ソルト付き)ハッシュH
Uとの組み合わせを備える。サーバがユーザ名Uおよびパスワードpを取得すると、サーバはH(p)を計算し、H(p)=H
Uであるか否かを確認する。
【0021】
攻撃者がサーバを攻撃できる場合、攻撃者はユーザ資格情報(の派生物)を含むデータベースを見つけることができる。前例における暗号学的ハッシュの使用のように、攻撃者がデータベースから機密パスワードにアクセスできないようにするのに適したソリューションが存在する。しかし、攻撃者がアクティブサーバのメモリをスクレイプできる場合、ほとんどのケースで、攻撃者はサーバのメモリにおいて平文のパスワードを見ることができる。以下、クライアントデバイスおよびサーバデバイスの両方において、認証実行中に認証文字列、例えばパスワードを保護するために準同型暗号を使用する実施形態について記載する。
【0022】
図1は、認証システム101の実施形態の例を概略的に示す。認証システム101はクライアントデバイス200およびサーバデバイス100を備え、これらのデバイスは、クライアントデバイス200がサーバデバイス100に対してクライアントデバイス200のユーザを認証できるように構成される。ユーザは認証文字列を知っていることを証明することで認証される。
【0023】
クライアントデバイス200およびサーバデバイス100は、本発明の実施形態として構成された電子デバイスであり得る。クライアントデバイス200は、サーバデバイスと通信するように構成された通信インターフェース130を備え、サーバデバイス100は通信インターフェース130を備える。これらの通信インターフェースは、例えばコンピュータネットワークを介して、例えばデジタルメッセージを交換することにより、デジタル形式で互いに通信するように構成される。例えば、コンピュータネットワークはインターネット、イントラネット、WLAN等であり得る。コンピュータネットワークはインターネットであり得る。例えば、通信インターフェース130および/または230は有線インターフェース、例えばイーサネットポートであってよい。例えば、通信インターフェース130および/または230は無線インターフェース、例えばWi‐Fi(登録商標)アンテナを備えたWi‐Fi(登録商標)インターフェース等であってもよい。
【0024】
クライアントデバイス200およびサーバデバイス100は、クライアントデバイスがサーバデバイス100に対してクライアントデバイス200のユーザを認証できるように協働する。例えば、サーバデバイス100は、当該ユーザは権限を有するが、他のユーザは権限を有さない何らかのサービスのために構成されてもよい。例えば、サーバ100は、ユーザがアクセス可能なドキュメントを格納するファイルサーバや、価値のあるコンテンツへのアクセスを提供するストリーミングサーバ、あるいはユーザのクレジットカード情報を格納するウェブショップ等であり得る。
【0025】
クライアントデバイス200およびサーバデバイス100はそれぞれプロセッサ回路を備える。両デバイスはまた、コンピュータプロセス命令を含むメモリを備え得る。プロセッサ回路は、メモリに格納された命令を実行するように構成される。認証の実行はプロセッサ回路で実施され、その例が本明細書で示される。
図1は、プロセッサ回路の機能ユニットであり得る複数の機能ユニットを示す。例えば、
図1は、プロセッサ回路が有し得る機能的構成の青写真として使用され得る。プロセッサ回路は
図1の機能ユニットとは別に示されていない。例えば、
図1に示される機能ユニットは、デバイス100または200において、例えば、デバイス100または200の電子メモリ内に格納されており、デバイス100または200のマイクロプロセッサによって実行可能なコンピュータ命令として完全にまたは部分的に実装され得る。ハイブリッド実施形態では、機能ユニットは部分的にハードウェアで、例えばコプロセッサ、例えば暗号化コプロセッサとして実装され、部分的に、デバイス100または200上で格納および実行されるソフトウェアで実装される。
【0026】
サーバデバイス100は、クライアントデバイス200からのユーザを認証するように構成される。ユーザは認証文字列へのアクセスを有する。認証文字列は複数の位置に複数の文字を有し、各文字は文字セットから選択される。例えば、認証文字列はPINであり、その場合、文字セットは数字{0,1,2,・・・,9}である。例えば、認証文字列は英数字の文字列であり、その場合、文字セットは{a,・・・,z,A,・・・,Z,0,・・・,9}であり得る。さらに、認証システム101で望まれる場合、1つまたは複数の句読文字が文字セットに追加されてもよい。
【0027】
サーバデバイス100は、第1の検証番号を格納するように構成されたストレージ110、例えば検証番号ストレージ110を備える。第1の検証番号は、セットアップフェーズ中に認証文字列から計算されている。しかし、一実施形態では、第1の検証番号を知っているだけでは認証文字列を取得するのに十分ではない。さらに、第1の検証番号は、それ自体ではサーバ100への認証に使用することはできない。言い換えると、攻撃者が第1の検証番号を取得したとしても、認証文字列を取得したり、サーバデバイス100に対して認証されることへの助けとはならない。クライアントデバイス200は、認証プロセス中に、認証文字列から第2の検証番号が計算されるように構成される。ユーザが、自らが知っている認証文字列に基づいて入力を提供するので、クライアントデバイス200はこれを行うことができる。その後、第2の検証番号はサーバデバイス100に送信される。第1の検証番号と第2の検証番号との間の対応が検証され、これにより、両方の検証番号が同じ認証文字列から計算されたことが検証される。その結果、ユーザが認証される。
【0028】
検証番号ストレージ110は、複数のユーザのための複数の検証番号を含み得る。例えば、検証番号はユーザ名に関連付けられ得る。例えば、検証番号とユーザ名とのペアが保存され得る。関連付けはユーザ名の派生物、例えばハッシュやソルト付きハッシュ等を介して行われてもよい。その場合、検証番号ストレージ110は、派生物とともに検証番号を記憶し得る。
【0029】
図2は、可能なデータ依存性の実施形態の例を概略的に示す。図は、第1の検証番号および第2の検証番号と認証文字列との間の可能な関係を説明している。
【0030】
図2は、文字/位置データのセット310を示す。セット310は、文字セットからのある文字と認証文字列内の位置との組み合わせごとに数字を含む。文字/位置データは秘密であってもよいが、これは必須ではなく、公開データであってもよい。典型的には、数字は、例えば、使用される準同型暗号スキームによって使用されるように、有限群、環、または体から選択される。準同型暗号スキームでは、データ(例えば、群内の数字)を暗号化することができる。さらに、暗号化された数字に対して実行され得る少なくとも1つの二項演算が存在する。例えば、加算をサポートする準同型暗号スキームでは、複数の数字のセットの和を暗号化しながら計算することができる。例えば、ある暗号化Eに対して、f(E(x
1),...,E(x
n))=E(x
1+・・・+x
n)となるようなfが存在する。すなわち、暗号化された被加数から和の暗号化を計算することができ、さらに、これは復号鍵を知らなくても実行することができる。一部の準同型暗号スキームは乗算をサポートし得る。また、複数の演算、例えば加算および乗算算をサポートする準同型暗号スキームも存在する。そのようなスキームが実施形態で使用されてもよいが、1つの演算しか必要とされないので、このような複雑なタイプの準同型暗号は必要とされない。準同型暗号スキームの例は、(パディングされていない)RSA、ElGamal、Goldwasser−Micali、Benaloh、Paillier等を含む。例えば、数字は、素数を法とする整数の群から選択され得る。他の例は、何らかのジェネレータによって生成された楕円曲線上の群である。可逆数の群は合成数を法とする、等である。
【0031】
図3は、文字/位置データの実施形態の例を概略的に示す。複数の位置410が示されている。認証文字列は、認証文字列の位置ごとに文字セット420から文字を選択することによって取得され得る。複数の位置410のうちのある位置と、文字セット420のうちの各文字との組み合わせごとに、文字/位置番号が選択される。n個の位置およびm個の可能な文字が存在する場合、通常はnm個の文字/位置番号が存在する。一部の組み合わせは省略され得るが、それらの文字/位置の組み合わせは認証文字列において不可能であるという結果がある。
【0032】
一実施形態では、認証文字列は所定の長さであり、あるいは、認証文字列は、ある最大長よりも短く、少なくとも2つの任意の長さを有し得る。しかし、認証文字列が複数の位置における全ての位置を使用する必要はない。例えば、一部の位置を空けたままにすることで長さの異なる認証文字列がサポートされ得る。あるいは、1つの文字を空の位置としてエンコードすることにより、文字/位置データの量を減らすことができる。また、文字セットにパディング文字を含めることによって異なる長さの認証文字列がサポートされてもよい。認証文字列は最大で、認証文字列の末尾に続く文字列としてパディング文字を有することを要求され得る。
図3は、位置と文字との1つの組み合わせ(参照番号430)を示す。
【0033】
一実施形態では、文字/位置データは乱数である。乱数を使用すると、同じ検証番号を与える2つの異なる認証文字列が存在する可能性があるという小さなリスクが存在する。したがって、あるユーザを認証するときに受け入れられる認証文字列が複数ある可能性がある。しかし、これが発生するリスクは小さく、代替認証文字列は知られない。また、準同型暗号のための群を大きくする等してリスクを適宜小さくすることができる。
【0034】
一実施形態では、文字/位置データのセット310は、任意のサブセットが準同型暗号によってサポートされる演算に対して異なる結果を生成するように選択される。例えば、準同型暗号が加算をサポートする場合、文字/位置データのセット310は、基数の累乗の倍数になるように選択され得る。基数は、文字セット内の文字の数として選択され得る。例えば、サポートされる演算が加算の場合、この選択により、サブセットごとに異なる総和が得られる。
【0035】
例えば、準同型暗号が乗算をサポートする場合、文字/位置データのセット310は累乗として選択され、ここで、指数は基数の累乗の倍数である。基数は、文字セット内の文字の数として選択され得る。例えば、サポートされる演算が乗算の場合、この選択により、サブセットごとに異なる乗算が得られる。例えば、累乗はジェネレータの累乗であり得る。文字/位置データをジェネレータの累乗として選択することの追加の利点は、べき演算が追加の暗号化レイヤーとなることである。特に、たとえアンブラインドであっても(以下参照)、検証番号から認証文字列を取得することはより困難である。
【0036】
一実施形態では、文字/位置番号は群のサイズよりも小さい。一実施形態では、文字/位置番号は、基数の(例えば、ジェネレータの)累乗であり、指数は群のサイズより小さいか、またはジェネレータによって生成される群のオーダーより小さい。一実施形態では、文字/位置番号または指数は、群のオーダーを文字セットのサイズで割ったものよりも小さい。
【0037】
文字/位置データは公開されてもよいが、公開される必要はない。特に、暗号攻撃に対するセキュリティを強化するために、文字/位置データはクライアントデバイスにとって秘密にされてもよい。例えば、文字/位置データがランダムデータである場合、サーバとクライアントデバイスとの間で交換されるデータを分析する攻撃者は、観測されたデータがどの文字/位置データに対応するかを知らない。同じ文字/位置データセットが、セットアップフェーズ中および後続の各認証フェーズ中に使用される。認証をサポートするサーバデバイス100のために、文字/位置データはユーザごとにランダムに選択されてもよい。
【0038】
認証文字列325は、文字/位置データのセット310のサブセット320を決定する。特に、認証文字列の複数の異なる位置において実際に使用されている文字に対応する文字/位置番号がサブセット320内に含まれる。サブセット320から、第1の検証番号340が導出される。
【0039】
例えば、第1の検証番号は、準同型暗号によりサポートされる演算、例えば乗算を実行することにより、サブセット320から取得されてもよい。セキュリティを強化するために、この結果はブラインドされてもよい。例えば、サポートされている演算を実行することによって、例えばサブセット内の数字を乗算することによって、サブセット320から第1のアンブラインド検証番号330が取得され得る。次に、第1のアンブラインド検証番号330がブラインディング数340でブラインドされ得る。後者は(ブラインドされた)第1の検証番号340である。例えば、ブラインディング数を含めるためにサポートされている演算が使用され、例えば、第1のアンブラインド検証番号330にブラインディング数が加算または乗算され得る。ブラインディング数は任意選択的である。ブラインディング数がない場合、第1のアンブラインド検証番号330を取得した攻撃者は、辞書攻撃を実行して認証文字列を決定することができる。ブラインディング数は、アンブラインド検証番号330が有する認証文字列325に関する情報を減らし、例えば、場合によってはゼロに減らす。以下では、第1の認証番号がブラインドされていると想定するが、これは必須ではない。ブラインディング数は、例えば、乱数ジェネレータによって生成された乱数であってもよい。
【0040】
なお、認証フェーズ中、サーバデバイスは認証文字列325、アンブラインド検証番号330、およびブラインディング数345のいずれも必要としないことに留意されたい。例えば、サーバデバイスは、セットアップフェーズ中に第1の検証番号340を計算し、その後、不要な情報を削除することができる。例えば、サーバデバイスは、例えばクライアントデバイスから、または信頼できる第三者から、セットアップフェーズ中に第1の検証番号340を受信し得る。認証フェーズにおいて、サーバデバイスは、文字/位置データ310、およびブラインドされている、またはされていない第1の検証番号を必要とする。文字/位置データ310がランダムでない場合、格納されるのではなく、必要なときに計算されてもよい。
【0041】
サーバデバイス100は暗号化ユニット120を備える。暗号化ユニット120は、準同型暗号アルゴリズムに従って文字/位置データのセット310を暗号化するように構成される。暗号化は要素ごとに行われる。
図3では、これは暗号化されたセット350として示されている。認証中、暗号化されたセット350がクライアントデバイス200に送信される。リプレイを回避するために、この暗号化の結果が認証ごとに異なることが望ましい。例えば、セット310が暗号化される度に異なる鍵を使用することによって、例えばランダムな鍵を選択することによって、これが保証され得る。例えば、確率的暗号スキームを選択することによってこれが保証され得る(または両方)。例えば、暗号スキームは、準同型で確率的な暗号スキームであるElGamal暗号であってもよい。
【0042】
クライアントデバイス200は準同型計算ユニット240を備える。準同型計算ユニット240は、暗号化された文字/位置データセット350のサブセット360から、暗号化された第2の検証番号を計算するように構成される。暗号化されたセット350はサーバデバイス100から受信される。例えば、クライアントデバイス200のユーザは、認証文字列326の知識に基づいて、受信されたセット350のサブセット360を選択し得る。認証文字列325と認証文字列326が同じ場合、サブセット360はサブセット320と同じであるが、サブセット360は暗号化されている一方でサブセット320は暗号化されていない点で異なる。例えば、受信されたセット350は、どの暗号化された文字/位置番号がどの文字/位置に対応するかの指標を含み得る。例えば、セット350はソートされ得る。例えば、ユーザは、クライアントデバイス200のユーザインターフェース220、例えばタッチスクリーンのキーボード等で認証文字列を入力してサブセット360を選択することができる。
【0043】
指標は機械可読であってもよいし、機械可読でなくてもよい。セット350内のどの暗号化された文字/位置番号がどの文字/位置に対応するかを機械可読な態様で示すことの欠点は、サーバデバイス100がそうでなくても、クライアントデバイス200がスクレイプ可能になるおそれがあることである。サーバ100における攻撃は通常、多くの認証文字列が危険にさらされることを意味するため、サーバ100での攻撃を回避することには価値がある。認証文字列はしばしば再利用されるため、これはセキュリティに大きな効果を奏し得る。以下、クライアントデバイス200での攻撃のリスクも減らすソリューションが提示される。
【0044】
準同型計算ユニット240は、暗号化された文字/位置データセットのサブセットから、暗号化された第2の検証番号を準同型的に計算するように構成される。例えば、準同型計算ユニット240は、暗号化されたデータに対して準同型計算ユニット240が計算を実行するという違いを除いて、数字330を得るためにセット320に対して行われるのと同じ計算を実行し得る。第2の検証番号370は暗号化されているが、ブラインドはされていない。
【0045】
ブラインディングが使用される場合、準同型計算ユニット240は、暗号化された第2の検証番号をブラインディング数346を用いてブラインドするように構成され得る。準同型計算ユニット240が(暗号化されたデータに対してではあるが)同じ計算およびブラインディングを実行し、かつ(暗号化されているが)同じバインディング数を使用する場合、第2の検証番号380は、暗号化されているが、第1の検証番号340と同じである。
【0046】
クライアントデバイス200が暗号化されたブラインディング数を取得し得るいくつかのやり方が存在する。例えば、暗号化されたブラインディング数はセットアップフェーズ中に取得され、認証フェーズ中に使用される鍵ごとに暗号化され得る。暗号化されたブラインディング数はデバイス200のストレージ内に保存され得る。この場合、認証時に同じ鍵または限られた数の鍵が使用され得る。あるいは、暗号スキームは、公開/秘密鍵暗号スキームであってもよい。クライアントデバイス200は、セット310を暗号化してセット350を取得するためにも使用される公開鍵を受け取り得る。この場合、準同型暗号ユニット240は、ブラインディング数自体を暗号化し得る。ブラインディング数はユーザから取得されてもよいし、またはクライアントデバイス200のストレージ250から取得されてもよい。
【0047】
アンブラインド数370であろうとブラインドされた数380であろうと、第2の検証番号はサーバデバイス100に送信される。サーバデバイス100は比較ユニット140を備える。比較ユニット140は、ユーザを認証するために、第1の検証番号と暗号化された第2の検証番号との間の対応を検証するように構成される。例えば、クライアントデバイス200がサーバデバイス100と同じ計算を(ただし、暗号化されたデータに対して)実行する場合、比較ユニット140は、第2の検証番号を解読して第1の検証番号と等しいか否か比較するように構成され得る。しかし、これは必ずしも必要ではなく、例えば、準同型暗号ユニット240は異なる数を計算するように構成されてもよく、例えば、準同型暗号ユニット240は、第1の検証番号の2倍を計算するように、またはそれに定数を加えるように構成されてもよい。より一般的には、vがアンブラインド検証番号である場合、準同型暗号ユニットはav、v+b、av+b等を計算し、ここでaおよびbは定数である。これらは、追加計算の前または後にブラインディング数によってブラインドされ得る。例えば、準同型暗号ユニット240はavyを計算し、比較ユニット140は、第2の検証番号が第1の検証番号のa倍であることを確認し得る。
【0048】
上記で指摘したように、上記実施形態はサーバでのスクレイピングを防ぐが、クライアントデバイスでスクレイピングされるおそれがある。一実施形態では、以下のような追加の任意選択的な保護が提供される。一実施形態では、サーバデバイス100は順列ジェネレータ150および表示データユニット160を備える。順列ジェネレータ150は、文字セットの順列を生成するように構成される。順列ジェネレータ150は位置ごとに順列を生成してもよいが、位置よりも少ない順列が生成されてもよく、その場合はいくつかの順列が再利用される。例えば、位置ごとに同じ順列が使用されてもよい。好ましくは、少なくとも、認証ごとに新しい順列が生成される。サーバデバイス100は、文字/位置データおよび/または順列を生成するための乱数ジェネレータを備え得る。
【0049】
表示データユニット160は、文字セット内の文字のための表示データを取得するように構成される。表示データは、機械可読ではない方法で文字セットの文字を示す。一実施形態では、表示データは、表示データストアから取得されるか、または外部の表示データ生成デバイスから取得される。また、表示データはサービスデバイス100上で生成されてもよい。表示データの生成自体は既知である。例えば、いわゆるキャプチャ(captcha)を生成するためのアルゴリズムが知られている。例えば、位置ごとに異なる表示データのセットが取得される。位置の数よりも少ない数の表示データセットが生成されてもよく、その場合、表示データの一部が再利用される。例えば、全ての位置のために同じ表示データが使用されてもよい。認証ごとに異なる表示データを使用する必要すらない。この場合、クライアントデバイスは、後続の認証で使用される表示データをキャッシュする。表示データは比較的大量のデータを消費するが、キャッシュによって削減される。表示データは画像であってもよく、例えば、各文字について画像があってもよい。表示データは動画クリップであってもよい。例えば、動画は、画像または動画クリップから人間は文字を認識するが、コンピュータは認識できない。少なくとも攻撃者に画像またはクリップの解析を要求することで、攻撃にエラーが生じやすくなり、攻撃の自動化が困難になり、またより大きなリソースが必要となる。したがって、選択された少数のユーザではなく多くのユーザに攻撃の対象を拡大することは攻撃者にとって困難になる。例えば、表示データはjpg、png等、またはmp4、avi等である。
【0050】
表示データは、暗号化された文字/位置データのセット350とともにクライアントデバイス200に送信される。表示データは、正しい文字/位置データに関連付けられた態様で、順列された順番で送られてもよい。
図4は、PINコードに使用される文字セットの順列500を示す。より大きな文字セットについても同様に適用することができる。順列500は、文字セット内の文字の表示データがクライアントデバイス200に送信される順序を示し得る。
図4には表示データ510も示されている。表示データ510には、機械が読み取ることができない態様で、順列が示す順番に並べられた文字セット内の文字が示される。この場合、表示データは、ランダムなフォントを選択し、2つの黒色の線をランダムな向きで重ね合わせることで生成される。当該技術分野で知られている任意の他の非機械可読データの生成手法が代わりに使用され得る。表示データの下には、対応する暗号化された文字/文字に対応する位置データ520〜529が示されている。例えば、表示データ510が第1の位置のために生成される場合、文字/位置データ520〜529は、文字セット内のある文字と第1の位置との組み合わせに対する文字/位置データである。次の位置には新しい文字/位置データが使用され、場合によっては、さらに新しい順列および/または新しい表示セットが使用される。よりセキュリティの高い実施形態では、各位置が独自の文字/位置データ、表示セット、および順列を有する。
【0051】
クライアントデバイス200は、サーバデバイスから、暗号化された文字/位置データに関連付けられた表示データを受信するように構成される。クライアントデバイス200はディスプレイ210を備える。ディスプレイ210は、各位置に受信された表示データを表示するように構成される。特定の位置のための表示データが表示された後、ユーザは、認証文字列内のその位置に対応する正しい文字を選択することができる。表示データが選択されると、関連付けられている暗号化された文字/位置もサブセット360のために選択される。例えば、認証文字列の最初の文字が9の場合、ユーザは表示データ511を選択し、暗号化された文字/位置データ521がサブセット361に追加される。したがって、ユーザは正しい文字/位置データを選択するが、攻撃者はそれが何を表しているのかわからない。文字/位置データは暗号化されており、機械で読み取ることができない表示画像に対応する。
【0052】
例えば、クライアントデバイス200は以下の擬似コードに従って構成され得る。
【0053】
認証文字列の各位置について、以下の動作が実行される:
当該位置のために受信された表示データを表示する
表示された表示データに対するユーザの選択を受け取る
位置および選択された文字のための暗号化された文字/位置データをサブセット360に追加する。
【0054】
デバイス100および200の様々な実施形態は、様々な選択肢から選択され得る入力インターフェースを含み得る。例えば、入力インターフェースはキーボード、タッチスクリーン、マウス等であり得る。入力インターフェースを通じて表示データが選択され得る。
【0055】
ストレージ(例えば、ストレージ110、250)は、例えば、フラッシュメモリ等の電子メモリや、ハードディスク等の磁気メモリとして実装されてもよい。ストレージ110または250は、ストレージを構成する複数の個別のメモリを備えてもよい。また、ストレージは、ローカルストレージまたは外部ストレージとして、例えばクラウドストレージとして実装されてもよい。後者の場合、デバイスは、例えばネットワーク接続を介して外部ストレージにおいて読み取りおよび書き込みを実行するための読み書きユニットを備える。例えば、ストレージの一部は安全なストレージで、残りは通常のストレージであってもよい。また、ストレージはRAM等の一時メモリを含み得る。
【0056】
典型的には、デバイス100および200はそれぞれ、デバイス100および200に保存された適切なソフトウェアを実行するマイクロプロセッサ(別途図示せず)を備える。例えば、ソフトウェアは、対応するメモリ、例えばRAMのような揮発性メモリ、またはフラッシュのような不揮発性メモリ(別途図示せず)にダウンロードおよび/または保存されていてもよい。あるいは、デバイス100および200は、全体的にまたは部分的に、例えばフィールドプログラマブルゲートアレイ(FPGA)として、プログラマブルロジックに実装されてもよい。デバイス100および200は、全体的にまたは部分的に、いわゆる特定用途向け集積回路(ASIC)、すなわち、特定の用途向けにカスタマイズされた集積回路(IC)として実装されてもよい。例えば、回路は、例えばVerilog、VHDLなどのハードウェア記述言語を使用して、CMOSで実装されてもよい。
【0057】
一実施形態では、デバイス100および200は1つまたは複数の回路を備え得る。これらの回路は、本明細書に記載される対応するユニットを実装する。回路は、プロセッサ回路および記憶回路であってもよく、プロセッサ回路は、記憶回路において電子的に表現される命令を実行する。
【0058】
プロセッサ回路は分散された形で、例えば複数のサブプロセッサ回路として実装されてもよい。ストレージは、複数の分散サブストレージに分散されてもよい。メモリの一部または全部が電子メモリや磁気メモリ等であり得る。例えば、ストレージは、揮発性部分および不揮発性部分を有し得る。ストレージの一部が読み取り専用であってもよい。
【0059】
図5は、サーバ方法500およびクライアント方法600の実施形態の例を概略的に示す。
【0060】
サーバ方法600は、認証文字列へのアクセスを有する、クライアントデバイス(例えば、クライアントデバイス200)からのユーザを認証するように構成される。認証文字列は複数の位置に複数の文字を有し、各文字は文字セットから選択される。サーバ方法600は、
− 文字/位置データのセットのサブセットから計算された第1の検証番号を格納するステップ(610)であって、前記サブセットは認証文字列によって示され、前記文字/位置データのセットは、前記文字セットからの文字と、前記認証文字列内の位置との組み合わせに対する数字を含む、ステップ(610)と、
− 準同型暗号アルゴリズムに従って前記文字/位置データのセットを暗号化し、暗号化された前記セットをクライアントデバイスに送信するステップ(620)と、
− 前記クライアントデバイスから第2の検証番号を受信するステップ(630)であって、前記第2の検証番号は、暗号化された前記セットのサブセットから、暗号化された第2の検証番号を準同型的に計算することによって計算され、前記サブセットは前記認証文字列によって示される、ステップ(630)と、
− ユーザを認証するために、前記第1の検証番号と暗号化された前記第2の検証番号との間の対応を検証するステップ(640)とを含む。
【0061】
クライアント方法700は、サーバデバイス(例えば、サーバデバイス100)に対してユーザを認証するように構成される。ユーザは認証文字列へのアクセスを有する。認証文字列は複数の位置に複数の文字を有し、各文字は文字セットから選択される。クライアント方法700は、
− 準同型暗号アルゴリズムに従って暗号化された文字/位置データのセットを受け取るステップ(710)であって、暗号化された前記文字/位置データのセットは、文字セットからの文字と、認証文字列内の位置との組み合わせに対する数字を含む、ステップ(710)と、
− 暗号化された前記文字/位置データのセットのサブセットから、暗号化された第2の検証番号を準同型的に計算するステップ(720)であって、前記サブセットは前記認証文字列によって示される、ステップ(720)と、
− 暗号化された前記第2の検証番号をサーバデバイスに送信するステップ(730)とを含む。
【0062】
方法600および700は追加動作を含み得る。特に、これらの方法は、文字セットの表示データを取得、表示、および選択するステップを含み得る。両方法間の依存関係が破線の矢印で示されている。
【0063】
当業者には明らかであるように、これらの方法を実行する多くの異なる態様が存在する。例えば、ステップの順序を変更したり、いくつかのステップを並行して実行したりすることができる。さらに、ステップ間に他の方法ステップを挿入することができる。挿入されるステップは、本明細書に記載されるような方法の改良を表し、または方法と無関係であってもよい。例えば、いくつかのステップは、少なくとも部分的に並列に実行されてもよい。さらに、あるステップは、次のステップが開始される前に完全に終了していなくてもよい。
【0064】
本発明に係る方法は、プロセッサシステムに方法600または700を実行させるための命令を含むソフトウェアを使用して実行され得る。ソフトウェアは、システムの特定のサブエンティティによって取られるステップのみを含んでもよい。ソフトウェアは、ハードディスク、フロッピー、メモリ、光ディスクなどの適切な記憶媒体に保存されてもよい。ソフトウェアは、有線または無線を介する信号として、またはインターネットなどのデータネットワークを使用して供給されてもよい。ソフトウェアは、サーバ上でダウンロードおよび/またはリモート使用可能にされてもよい。本発明に係る方法は、方法を実行するためにプログラマブルロジック、例えばフィールドプログラマブルゲートアレイ(FPGA)を構成するように構成されたビットストリームを使用して実行されてもよい。
【0065】
本発明は、コンピュータプログラム、特に、本発明を実施するように適合された、キャリア上のまたはキャリア内のコンピュータプログラムにも及ぶことが理解されよう。プログラムは、ソースコード、オブジェクトコード、コード中間ソース、部分的にコンパイルされた形式のようなオブジェクトコード、または本発明に係る方法の実施のための使用に適した任意の他の形式などの形式を取り得る。コンピュータプログラム製品に関する実施形態は、上記方法のうちの少なくとも1つの方法の処理ステップに対応するコンピュータ実行可能命令を含む。これらの命令は、サブルーチンに細分され、かつ/または静的に若しくは動的にリンクされ得る1つまたは複数のファイルに保存され得る。コンピュータプログラム製品に関する他の実施形態は、少なくとも1つの上記システムおよび/または製品の手段に対応するコンピュータ実行可能命令を含む。
【0066】
上記したように、ユーザ名およびパスワードに基づく認証機構はメモリスクレイピング攻撃に対して脆弱である。メモリスクレイピング攻撃は2つの脅威を示唆する。1つはユーザのなりすましであり、2つ目は機密個人情報の損失である。既知のソリューションは両方の脅威に対処していない。さらに、既知のサーバは多くの機密パスワードを有しているため、魅力的なターゲットである。以下、より数学的な言語を使用しながら、さらなるおよび/またはより詳細な実施形態を説明する。
【0067】
セキュアキーボードを想定されたい。これは、メモリスクレイピングによる資格情報の損失に対する保護を提供する。セキュアキーボードは、各行が0〜9の数字を表すテーブルのシーケンス{T}として見なすことができる。このようなテーブルは2つの列を有する。1つの列は、アプリが数字を表示するためのデータ、例えばω
iを有し、2つ目の列は何らかの任意の値を有する。T
iは、テーブルTの行iの値を押した結果としてのメモリ内の値、すなわち、テーブルTの行iの第2の列の値を表す。各行が表す実際の値を隠すために、行は並べ替えられる。ユーザが数字を入力する度に新しいテーブルがメモリに読み込まれ、これにより、リンク情報、例えば入力された2つの数字が同じであるか否か等が確実に除去される。
【0068】
以下の認証スキームはリプレイ攻撃に対する保護を提供するが、準同型暗号は使用しない。サーバは、ユーザ資格情報が安全に保管されているデータベースを有すると想定する。これは、データベース自体がユーザの(完全な)資格情報をリークしないことを意味する。
1.ユーザが自分のユーザ名を入力し、ユーザ名(の派生物)がサーバに送信される。
2.サーバはユーザが登録されているか否かを確認し、登録されている場合、以下の動作を実行する:
(a)各列内の全てのエントリが一意になるように、10×nのランダム行列Rを生成する。
(b)セット{0,1,2,...,9}に対して作用するn個のランダム順列π
iを生成する。
(c)n組の表示データ
【数1】
のセットを生成する。
(d)i=0,...,n−1について、テーブルT
iが行jに有するペア
【数2】
を定める。
(e)たった今ランダムに選択されたキーボードK=T
0,...,T
n−1で返信する。
3.ユーザにKが提示され、ユーザがPIN=p
0,...,p
n−1を入力した結果として文字列
【数3】
が生成され、サーバに送り返される。
4.サーバは、ユーザが自身のPINのi桁目(p
i)をテーブルT
iの列j
iにおいて選択するという事実に基づき、関係
【数4】
を利用して、SおよびRからPINを再構築する。したがって、π
i(j
i)は
【数5】
を満たし、よって
【数6】
が成立すると結論付けられる。
5.最後に、サーバは自身のデータベースを使用してPINを検証し、生成された全てのデータをメモリから削除する。
【0069】
サーバはフレッシュかつランダムなキーボードを生成するので、Sはサーバによって一度しか受け入れられない。したがって、攻撃者はSを再生することでユーザになりすますことができない。さらに、このランダム性により、ユーザのデバイス上のアクティブなメモリスクレイパーが、ユーザの入力したPINに関する有意な情報を経時的に収集することができないことが保証される。
【0070】
登録確認を除去して、サーバ側の検証部分を、データベースにユーザ資格情報を安全に格納することに置き換えるだけで、上記手順を、ユーザの登録をメモリスクレイピングから保護するために使用することもできる。
【0071】
サーバ上のメモリスクレイパーが機密パスワードまたはPINを取得することを防ぐために、以下が提案される。
【0072】
G=<g>を、大きな素数位数pのgによって生成された群であるとする。サーバは、ユーザ名Uおよびパスワード派生物
【数7】
を含むデータベースを有すると仮定し、
ここで、PIN
UはユーザのPINであり、y
UはGの未知の元である。P(U)は、情報理論的隠蔽(information theoretically hiding)であるPedersen Commitmentであるので、y
Uが未知の場合、P(U)はPINに関する情報を有さない[1]。
【0073】
【数8】
は、秘密鍵kを用いたxのEl−Gamal暗号化を表すものとする[2]。したがって、
【数9】
であり、
ここで、rは、pを法とする何らかの一様な乱数値(uniform random value)であり、またh=g
kである。
【0074】
ユーザUは、P(U)において使用されるy
Uを保存していたと仮定する。
【0075】
認証は次のように行われる:
1.ユーザが自分のユーザ名を入力し、ユーザ名(の派生物)がサーバに送信される。
2.サーバはユーザが登録されているか否かを確認し、登録されている場合、以下の動作を実行する:
(a)ランダムな秘密鍵
【数10】
を生成する。
(b)10×nのランダム行列Rを生成し、ここで
【数11】
である。
(c)セット{0,1,2,...,9}に対して作用するn個のランダム順列π
iを生成する。
(d)n組の表示データ
【数12】
のセットを生成する。
(e)i=0,...,n−1について、テーブルT
iが行jに有するペア
【数13】
を定める。
(f)たった今ランダムに選択されたキーボードK=T
0,...,T
n−1、および公開鍵h=g
kで返信する。
3.ユーザにKが提示され、ユーザがPIN
U=p
0,...,p
n−1を入力した結果として文字列
【数14】
が生成される。
4.ユーザはメモリからy
Uを取り出し、公開鍵hを使用してランダムな暗号化
【数15】
を生成する。
5.ユーザが
【数16】
で返信する。
6.サーバはSを復号し、P(U)と合致するか否かを確認する。
7.最後に、生成された全てのデータをメモリから削除する。
【0076】
セット{0,1,2,...,9}のための10×nの行列の代わりに別の文字セットが使用されてもよい。
【0077】
正確さ:なお、デジタル文字列PIN
U=p
0,...,p
n−1は以下の整数によって表され得る。
【数17】
さらに、
【数18】
から、El−Gamalの準同型写像は下式を示唆し、
【数19】
よって、
【数20】
【0078】
登録:登録は次のように行われる:
1.ユーザが自分のユーザ名を入力し、ユーザ名(の派生物)がサーバに送信される。
2.サーバはユーザが登録されて「いない」ことを確認し、登録されていない場合、以下の動作を実行する:
(a)ランダムな秘密鍵
【数21】
を生成する。
(b)10×nのランダム行列Rを生成し、ここで、
【数22】
である。
(c)セット{0,1,2,...,9}に対して作用するn個のランダム順列π
iを生成する。
(d)n組の表示データ
【数23】
のセットを生成する。
(e)i=0,...,n−1について、テーブルT
iが行jに有するペア
【数24】
を定める。
(f)たった今ランダムに選択されたキーボードK=T
0,...,T
n−1、および公開鍵h=g
kで返信する。
3.ユーザにKが提示され、ユーザが自身の選択されたPIN
U=p
0,...,p
n−1を入力した結果として文字列
【数25】
が生成される。
4.ユーザはランダムなy
Uを生成し、また、公開鍵hを使用してランダムな暗号化
【数26】
を生成する。
5.ユーザが
【数27】
で返信する。
6.サーバはSをP(U)に復号し、ユーザUをP(U)とともに保存する。
7.最後に、生成された残っている全てのデータをメモリから削除する。
【0079】
サーバゼロ知識:サーバはP(U)のランダム化された暗号化、およびP(U)自体しか見ない。El−Gamalのセマンティックセキュリティ(semantic security)から[3]、yのランダム化された暗号化にキーボードの結果を掛けることにより、ユーザがキーボード上で行った全ての選択がサーバに対しても隠される。これは暗号化の「ブラインディング」とも知られている。さらに、Pedersen Commitmentにより、P(U)を使用してPINを抽出することができないことが保証される。
【0080】
注:楕円曲線としての両方の素体が、上記実施形態を実施するための適切な群を定義するために使用され得る。
参考文献
[1]Pedersen.:“Non−interactive and information−theoretic secure verifiable secret sharing”,Advances in Cryptology CRYPTO’91 Springer
[2]T.ElGamal.:“A public key cryptosystem and a signature scheme based on discrete logarithms”,Proceedings of CRYPTO 84 on Advances in Cryptology,pp.10〜18,New York,NY,USA,1985。Springer−Verlag New York,Inc.。
[3]Y.TsiounisおよびM.Yung.:“On the security of ElGamal based encryption”,H.ImaiおよびY.Zheng,エディター,Public Key Cryptography,Lecture Notes in Computer Scienceのvolume 1431,pp.117〜134。Springer,1998。
【0081】
図6aは、一実施形態に係る、コンピュータプログラム1020を含む書き込み可能部分1010を有するコンピュータ可読媒体1000を示し、コンピュータプログラム1020は、プロセッサシステムにクライアント方法またはサーバ方法を実行させるための命令を含む。コンピュータプログラム1020は、物理的なマークとして、またはコンピュータ可読媒体1000の磁化によって、コンピュータ可読媒体1000上に具現化され得る。しかしながら、任意の他の適切な実施形態もまた考えられる。さらに、ここではコンピュータ可読媒体1000が光ディスクとして示されているが、コンピュータ可読媒体1000は、ハードディスク、ソリッドステートメモリ、フラッシュメモリなどの任意の適切なコンピュータ可読媒体であってもよく、また、記録不能または記録可能であってもよい。コンピュータプログラム1020は、プロセッサシステムに、実施形態に係るクライアント方法またはサーバ方法を実行させるための命令を含む。
【0082】
図6bは、一実施形態に係るプロセッサシステム1140の概略図である。プロセッサシステムは、1つ以上の集積回路1110を備える。1つ以上の集積回路1110のアーキテクチャが
図6bに概略的に示されている。回路1110は、一実施形態に係る方法を実行し、かつ/または、そのモジュール若しくはユニットを実装するためにコンピュータプログラムコンポーネントを実行するための処理ユニット1120(例えばCPUなど)を備える。回路1110は、プログラミングコードやデータ等を記憶するためのメモリ1122を含む。プログラミングコードは、プロセッサシステムをクライアントデバイスまたはサーバデバイスの実施形態として構成する。
【0083】
メモリ1122の一部が読み取り専用であってもよい。回路1110は、通信要素1126、例えばアンテナ若しくはコネクタ、または両方などを備え得る。回路1110は、本方法で定義された処理の一部または全部を実行するための専用集積回路1124を備え得る。プロセッサ1120、メモリ1122、専用IC1124、および通信要素1126は相互接続1130、例えばバスを介して相互に接続され得る。プロセッサシステム1110は、アンテナおよび/またはコネクタを用いた接触および/または非接触通信のために構成され得る。
【0084】
例えば、一実施形態では、クライアントデバイス、サーバデバイス、鍵生成デバイス、および/または署名検証デバイスはプロセッサ回路およびメモリ回路を備え、プロセッサは、メモリ回路内に格納されたソフトウェアを実行するように構成される。例えば、プロセッサ回路は、Intel Core i7プロセッサやARM Cortex−R8等であり得る。一実施形態では、プロセッサ回路はARM Cortex M0であり得る。メモリ回路はROM回路、または不揮発性メモリ、例えばフラッシュメモリであってもよい。メモリ回路は揮発性メモリ、例えばSRAMメモリであってもよい。後者の場合、デバイスは、ソフトウェアを提供するように構成された不揮発性ソフトウェアインターフェース(例えば、ハードドライブ)やネットワークインターフェース等を備え得る。
【0085】
上記実施形態は本発明を限定するものではなく、当業者は多くの代替的実施形態を設計することができることに留意されたい。
【0086】
特許請求の範囲において、括弧間に置かれた参照符号は、請求項を限定するものとして解釈されるべきではない。「含む」という動詞およびその活用形の使用は、請求項に記載された要素またはステップ以外の要素またはステップの存在を排除するものではない。単数形の要素は、複数のかかる要素の存在を排除するものではない。本発明は、複数の別々の要素を含むハードウェアによって、および適切にプログラムされたコンピュータによって実施され得る。いくつかの手段を列挙する装置クレームにおいて、これらの手段のうちのいくつかは、同一のハードウェアアイテムによって具現化されてもよい。複数の手段が互いに異なる従属請求項に記載されているからといって、これらの手段の組み合わせが好適に使用することができないとは限らない。
【0087】
特許請求の範囲において、括弧内の参照符号は、例示的実施形態の図面内の参照符号または実施形態の数式を指し、したがって、請求項の明瞭さを高める。これらの参照符号は、請求項を限定するものとして解釈されるべきではない。