(57)【要約】  一部の実施形態は、クライアントデバイス２００のユーザを認証するように構成されたサーバデバイス１００およびクライアントデバイス２００を対象とする。ユーザは認証文字列へのアクセスを有する。サーバデバイス１００は、準同型暗号アルゴリズムに従って文字／位置データのセットを暗号化するように構成される。クライアントデバイスは、ユーザが、暗号化されたセットからサブセットを選択することを可能にし、選択されたサブセットから、準同型演算を使用して検証番号が計算される。
2021507615.tif 000002
【特許請求の範囲】
【請求項１】
クライアントデバイスからのユーザを認証するためのサーバデバイスであって、前記ユーザは認証文字列へのアクセスを有し、前記認証文字列は複数の位置に複数の文字を有し、前記文字は文字セットから選択され、前記サーバデバイスは、
文字／位置データのセットのサブセットから計算された第１の検証番号を格納するストレージであって、前記サブセットは前記認証文字列によって示され、前記文字／位置データのセットは、前記文字セットからの文字と、認証文字列内の位置との組み合わせに対する数字を含む、ストレージと、
プロセッサ回路とを備え、前記プロセッサ回路は、
準同型暗号アルゴリズムに従って前記文字／位置データのセットを暗号化して、暗号化された前記セットを前記クライアントデバイスに送信し、
前記クライアントデバイスから第２の検証番号を受信し、ここで、前記第２の検証番号は、暗号化された前記セットのサブセットから、暗号化された第２の検証番号を準同型的に計算することによって計算され、前記サブセットは前記認証文字列によって示され、
前記ユーザを認証するために、前記第１の検証番号と暗号化された前記第２の検証番号との間の対応を検証する、
サーバデバイス。
【請求項２】
前記プロセッサ回路は、
前記文字セットの順列を生成し、
前記文字セット内の前記文字のための表示データを取得し、前記表示データを、前記文字に対応する暗号化された文字／位置データに関連付け、
暗号化された前記文字／位置データに関連付けられた前記表示データを、生成された前記順列に従った順番で前記クライアントデバイスに送信する、
請求項１に記載のサーバデバイス。
【請求項３】
全ての位置について同じ表示データが使用されるか、または
少なくとも２つの異なる位置について異なる表示データが生成される、
請求項１に記載のサーバデバイス。
【請求項４】
後の認証のために前記クライアントデバイスに表示データが送信されず、前記クライアントデバイスはキャッシュされた表示データを使用する、
請求項２に記載のサーバデバイス。
【請求項５】
前記第１の検証番号はブラインディング数によってブラインドされ、前記第２の検証番号を計算することは、前記ブラインディング数を用いてブラインドすることを含む、
請求項１から４のいずれか一項に記載のサーバデバイス。
【請求項６】
前記文字／位置データの少なくとも一部は乱数である、
請求項１から５のいずれか一項に記載のサーバデバイス。
【請求項７】
前記文字／位置データの少なくとも一部は、基数の累乗の倍数として計算され、
少なくとも一部の文字／位置データは累乗として計算され、ここで、指数は基数の累乗の倍数である、
請求項１から６のいずれか一項に記載のサーバデバイス。
【請求項８】
対応を検証することは、前記第２の検証番号を復号することを含む、
請求項１から７のいずれか一項に記載のサーバデバイス。
【請求項９】
前記準同型暗号アルゴリズムは、確率的準同型暗号アルゴリズムである、
請求項１から８のいずれか一項に記載のサーバデバイス。
【請求項１０】
前記検証番号はＰｅｄｅｒｓｅｎ  Ｃｏｍｍｉｔｍｅｎｔであり、及び／または、前記暗号化はＥｌＧａｍａｌ暗号化である、
請求項１から９のいずれか一項に記載のサーバデバイス。
【請求項１１】
サーバデバイスに対してユーザを認証するためのクライアントデバイスであって、前記ユーザは認証文字列へのアクセスを有し、前記認証文字列は複数の位置に複数の文字を有し、前記文字は文字セットから選択され、前記クライアントデバイスは、
プロセッサ回路を備え、前記プロセッサ回路は、
準同型暗号アルゴリズムに従って暗号化された文字／位置データのセットを受け取り、ここで、暗号化された前記文字／位置データのセットは、前記文字セットからの文字と、認証文字列内の位置との組み合わせに対する数字を含み、
暗号化された前記文字／位置データのセットのサブセットから、暗号化された第２の検証番号を準同型的に計算し、ここで、前記サブセットは前記認証文字列によって示され、
暗号化された前記第２の検証番号を前記サーバデバイスに送信する、
クライアントデバイス。
【請求項１２】
前記プロセッサ回路は、
前記サーバデバイスから、暗号化された前記文字／位置データに関連付けられた表示データを受信し、
前記認証文字列の位置ごとに、受信された表示データを表示し、
表示された前記表示データから表示データを選択するユーザ入力を受け取り、
選択された前記表示データに対応する前記サブセットを選択する、
請求項１１に記載のクライアントデバイス。
【請求項１３】
前記クライアントデバイスは、ブラインディング数を格納するためのストレージを含み、前記プロセッサ回路は、暗号化された前記第２の検証番号を前記ブラインディング数でブラインドする、
請求項１１または１２に記載のクライアントデバイス。
【請求項１４】
クライアントデバイスからのユーザを認証するためのサーバ方法であって、前記ユーザは認証文字列へのアクセスを有し、前記認証文字列は複数の位置に複数の文字を有し、前記文字は文字セットから選択され、前記サーバ方法は、
文字／位置データのセットのサブセットから計算された第１の検証番号を格納するステップであって、前記サブセットは前記認証文字列によって示され、前記文字／位置データのセットは、前記文字セットからの文字と、認証文字列内の位置との組み合わせに対する数字を含む、ステップと、
準同型暗号アルゴリズムに従って前記文字／位置データのセットを暗号化し、暗号化された前記セットを前記クライアントデバイスに送信するステップと、
前記クライアントデバイスから第２の検証番号を受信するステップであって、前記第２の検証番号は、暗号化された前記セットのサブセットから、暗号化された第２の検証番号を準同型的に計算することによって計算され、前記サブセットは前記認証文字列によって示される、ステップと、
前記ユーザを認証するために、前記第１の検証番号と暗号化された前記第２の検証番号との間の対応を検証するステップとを含む、
方法。
【請求項１５】
サーバデバイスに対してユーザを認証するためのクライアント方法であって、前記ユーザは認証文字列へのアクセスを有し、前記認証文字列は複数の位置に複数の文字を有し、前記文字は文字セットから選択され、前記クライアント方法は、
準同型暗号アルゴリズムに従って暗号化された文字／位置データのセットを受け取るステップであって、暗号化された前記文字／位置データのセットは、前記文字セットからの文字と、認証文字列内の位置との組み合わせに対する数字を含む、ステップと、
暗号化された前記文字／位置データのセットのサブセットから、暗号化された第２の検証番号を準同型的に計算するステップであって、前記サブセットは前記認証文字列によって示される、ステップと、
暗号化された前記第２の検証番号を前記サーバデバイスに送信するステップとを含む、
方法。
【請求項１６】
請求項１４または１５に記載の方法をプロセッサシステムに実行させるための命令を表す一時的または非一時的データを含む、
コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアントデバイス、サーバデバイス、サーバ方法、クライアント方法、およびコンピュータ可読媒体に関する。
【背景技術】
【０００２】
米国特許第７７３５１２１号は、通信ネットワークを介して情報を安全に通信するための既知のシステムを開示している。この既知の方法は、ＰＩＮコード等の認証情報を入力するために使用され得る。
【０００３】
この既知のシステムは、リモート通信ネットワークを介してウェブサーバに結合されたリモートコンピューティングデバイスを含む。ユーザ認証に使用されるＷｅｂページは、ユーザが個人情報を入力するための仮想パッドを備える。仮想パッドは、個人情報を入力するためにユーザのリモートコンピューティングデバイスのディスプレイから直接選択可能な複数の英数字キーを備える。英数字は、仮想パッド内の異なる位置にランダムに表示される。仮想パッド内に表示される実際の文字は、認証サーバ上のデータベースに格納されている代替文字セットと関連付けられている。ユーザが入力した個人情報に対応する代替文字セットからの文字は、その後ＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔ  Ｌａｙｅｒ）を使用して暗号化され、認証サーバに送信される。
【０００４】
この既知のシステムに関連するいくつかの問題が存在する。例えば、Ｗｅｂサーバはメモリスクレイピング攻撃に対して脆弱である。ユーザからの応答の復号後、メモリにおいてユーザのパスワードが可視化される。サーバのメモリへのアクセスを有する攻撃者は、そこからパスワードを取得することができる。同様にクライアント側でも、攻撃者は、ユーザデバイスから送信されたデータを記録し、後にそれを再生することでサーバに対してユーザになりすますことができる。
【発明の概要】
【０００５】
特許請求の範囲に規定される、認証のために構成されたクライアントデバイスおよびサーバデバイスが提供される。サーバデバイスは準同型暗号を使用して、準同型暗号アルゴリズムに従って文字／位置データのセットを暗号化する。クライアントデバイスは、暗号化された文字／位置データから検証番号を計算する。文字／位置は準同型暗号を使用して暗号化されるため、検証番号の計算は、復号を必要とせずに、暗号化されたデータに対して実行され得る。最後に、返信されるのは検証番号だけでよい。したがって、サーバは、どの文字／位置データが選択されたかを知ることを要さずに、受信された検証番号および格納されている検証番号が互いに合致するか否かを検証することができ、すなわち、サーバは認証文字列（例えば、ユーザのパスワードまたはＰＩＮコード）を知る必要がない。
【０００６】
一実施形態では、サーバデバイスは文字セット内の文字のための表示データを取得し、表示データを、文字に対応する暗号化された文字／位置データに関連付ける。ユーザは、クライアントデバイスにおいて、認証文字列の文字に対応する表示データを選択することができる。したがって、クライアントデバイスにおいても、メモリに認証文字列がある必要がない。表示データは、好ましくは機械にとって読み取りにくいものであり、例えば非機械可読である。たとえ表示データが読み取りにくい場合でも、不可能ではないとしても、自動化された攻撃は困難になる。
【０００７】
本明細書に記載される認証方法は、幅広い実用的な用途に適用可能である。そのような実用的な用途は、例えば、メッセージの信憑性を保護するために通信システム、例えば、金融取引を保護するために金融システム、例えば、データの信憑性を保護するためにストレージシステム等を含む。
【０００８】
本発明に係る方法は、コンピュータ実装方法としてコンピュータ上に、専用ハードウェアに、またはこれらの組み合わせとして実装されてもよい。本発明に係る方法のための実行可能コードは、コンピュータプログラム製品に保存されてもよい。コンピュータプログラム製品の例は、メモリデバイス、光記憶デバイス、集積回路、サーバ、オンラインソフトウェアなどを含む。好ましくは、コンピュータプログラム製品は、プログラム製品がコンピュータ上で実行されるとき、本発明に係る方法を実行するためのコンピュータ可読媒体上に保存された非一時的プログラムコードを含む。
【０００９】
好ましい実施形態では、コンピュータプログラムは、該コンピュータプログラムがコンピュータ上で実行されるとき、本発明に係る方法のすべてのステップを実行するように構成されたコンピュータプログラムコードを含む。好ましくは、コンピュータプログラムは、コンピュータ可読媒体上に具現化される。
【００１０】
本発明の別の側面は、コンピュータプログラムをダウンロード可能にする方法を提供する。この側面は、コンピュータプログラムが例えばアップルのＡｐｐ  Ｓｔｏｒｅ、ＧｏｏｇｌｅのＰｌａｙ  Ｓｔｏｒｅ、またはＭｉｃｒｏｓｏｆｔのＷｉｎｄｏｗｓ  Ｓｔｏｒｅなどにアップロードされており、そのようなストアからコンピュータプログラムをダウンロード可能な場合に使用される。
【図面の簡単な説明】
【００１１】
以下、本発明の単なる例に過ぎないさらなる詳細、側面、および実施形態について、以下の図面を参照しながら説明する。図中の要素は、簡潔さおよび明瞭さを意図して描かれており、必ずしも縮尺通りに描かれていない。図面において、すでに説明した要素に対応する要素には同じ参照番号を付している。
【００１２】
【図１】図１は、認証システムの実施形態の例を概略的に示す。
【図２】図２は、データ依存性の実施形態の例を概略的に示す。
【図３】図３は、文字／位置データの実施形態の例を概略的に示す。
【図４】図４は、表示データの実施形態の例を概略的に示す。
【図５】図５は、サーバ方法およびクライアント方法の実施形態の例を概略的に示す。
【図６ａ】図６ａは、一実施形態に係るコンピュータプログラムを含む書き込み可能部分を有するコンピュータ可読媒体を概略的に示す。
【図６ｂ】図６ｂは、一実施形態に係るプロセッサシステムの表現を概略的に示す。
【００１３】
図１〜図４内の参照番号のリスト：
１００  サーバデバイス
１０１  認証システム
１１０  検証番号ストレージ  
１２０  暗号化ユニット
１３０  通信インターフェース
１４０  比較ユニット
１５０  順列ジェネレータ
１６０  表示データユニット
２００  クライアントデバイス
２１０  ディスプレイ
２２０  ユーザインターフェース
２３０  通信インターフェース
２４０  準同型計算ユニット
２５０  ストレージ  
３１０  文字／位置データのセット
３２０  文字／位置データのセットのサブセット
３２５，３２６  認証文字列
３３０  第１のアンブラインド検証番号
３４０  第１の検証番号
３４５，３４６  ブラインディング数
３５０  暗号化された文字／位置データのセット
３６０  暗号化された文字／位置データのセットのサブセット
３７０  第２のアンブラインド検証番号
３８０  第２の文字／位置データのセット
４１０  複数の位置  
４２０  文字セット
４３０  文字／位置の数字
５００  順列
５１０  （集合的）表示データ
５１１  （１つの）表示データ
５３０  暗号化された文字／位置データ
５２０〜５２９  暗号化された文字／位置データのセット
【発明を実施するための形態】
【００１４】
本発明は、様々な形態の実施形態を取り得るが、図面および以下の説明では、１つまたは複数の具体的実施形態が詳細に示される。本開示は、本発明の原理の例示として考えられるべきであり、本発明を図示および説明される具体的実施形態に限定するものではないことを理解されたい。
【００１５】
以下、理解を目的として、動作中の実施形態の要素が説明される。しかしながら、各要素が、各要素によって実行されるものとして記載されている機能を実行するように構成されていることは明らかであろう。さらに、本発明は、実施形態に限定されるものではなく、本発明は、本明細書に記載されるまたは互いに異なる従属請求項に記載される全ての新規の特徴または特徴の組み合わせに及ぶ。
【００１６】
一般的な認証メカニズムは、ユーザ資格情報とも呼ばれるユーザ名とパスワードとの組み合わせである。通常、資格情報は確認のために認証サーバに送信される。攻撃者があるユーザの資格情報を取得すると、攻撃者はサーバ上でユーザになりすますことができ、つまり、攻撃者は、自分が資格情報を盗まれたユーザであるとサーバに納得させることができる。残念ながら、実際には、多くのユーザが複数のアプリケーションで同じパスワードを使用している。このため、攻撃者は、破ったアプリケーション以外のアプリケーションでもユーザになりすますことができる。
【００１７】
ユーザが資格情報を入力しているときに、一部の攻撃者がメモリを読み取ることができるという問題が存在する。これらの攻撃はメモリスクレイピングとして知られている。既存のソリューションは主に多要素認証に基づいており、多要素認証では、ユーザは複数の認証ステップを、好ましくは別々のデバイス上で実行する必要がある。その結果、攻撃者がサーバ上でユーザになりすますには資格情報をスクレイプだけでは不十分になるが、一方で、ユーザは機密データ（複数のアプリケーションで使用されている可能性が高い、ユーザのパスワード）を失う。
【００１８】
考えられるソリューションは、パスワードがメモリ内に存在することがないようにすることである。例えば、セキュアキーボードを使用して数列を入力するようユーザが促され、ここで、押されたボタンの位置は数字の値を漏らさず、ボタンを押すことで生じる値はそのままの値ではなく、値を符号化したものである。
【００１９】
このセキュアキーボードにより、例えばＰＩＮ等のパスワードの全ての情報がメモリスクレイパーから隠される。このようなソリューションは、機密の個人パスワードをそのような攻撃者に漏らさない。しかし、攻撃者は依然として、単純に、サーバへの符号化されたパスワードをスクレイピングして再生し、ユーザになりすまし得る。
【００２０】
サーバへの認証にあたり、クライアントは通常、資格情報をセキュアチャネルを介して送信する。そして、サーバは自身のデータベースを使用して、ユーザ名およびパスワードの組み合わせが合致するか否かを確認する。例えば、データベースはユーザ名Ｕと、対応するパスワードの（ソルト付き）ハッシュＨＵとの組み合わせを備える。サーバがユーザ名Ｕおよびパスワードｐを取得すると、サーバはＨ（ｐ）を計算し、Ｈ（ｐ）＝ＨＵであるか否かを確認する。
【００２１】
攻撃者がサーバを攻撃できる場合、攻撃者はユーザ資格情報（の派生物）を含むデータベースを見つけることができる。前例における暗号学的ハッシュの使用のように、攻撃者がデータベースから機密パスワードにアクセスできないようにするのに適したソリューションが存在する。しかし、攻撃者がアクティブサーバのメモリをスクレイプできる場合、ほとんどのケースで、攻撃者はサーバのメモリにおいて平文のパスワードを見ることができる。以下、クライアントデバイスおよびサーバデバイスの両方において、認証実行中に認証文字列、例えばパスワードを保護するために準同型暗号を使用する実施形態について記載する。
【００２２】
図１は、認証システム１０１の実施形態の例を概略的に示す。認証システム１０１はクライアントデバイス２００およびサーバデバイス１００を備え、これらのデバイスは、クライアントデバイス２００がサーバデバイス１００に対してクライアントデバイス２００のユーザを認証できるように構成される。ユーザは認証文字列を知っていることを証明することで認証される。
【００２３】
クライアントデバイス２００およびサーバデバイス１００は、本発明の実施形態として構成された電子デバイスであり得る。クライアントデバイス２００は、サーバデバイスと通信するように構成された通信インターフェース１３０を備え、サーバデバイス１００は通信インターフェース１３０を備える。これらの通信インターフェースは、例えばコンピュータネットワークを介して、例えばデジタルメッセージを交換することにより、デジタル形式で互いに通信するように構成される。例えば、コンピュータネットワークはインターネット、イントラネット、ＷＬＡＮ等であり得る。コンピュータネットワークはインターネットであり得る。例えば、通信インターフェース１３０および／または２３０は有線インターフェース、例えばイーサネットポートであってよい。例えば、通信インターフェース１３０および／または２３０は無線インターフェース、例えばＷｉ‐Ｆｉ（登録商標）アンテナを備えたＷｉ‐Ｆｉ（登録商標）インターフェース等であってもよい。
【００２４】
クライアントデバイス２００およびサーバデバイス１００は、クライアントデバイスがサーバデバイス１００に対してクライアントデバイス２００のユーザを認証できるように協働する。例えば、サーバデバイス１００は、当該ユーザは権限を有するが、他のユーザは権限を有さない何らかのサービスのために構成されてもよい。例えば、サーバ１００は、ユーザがアクセス可能なドキュメントを格納するファイルサーバや、価値のあるコンテンツへのアクセスを提供するストリーミングサーバ、あるいはユーザのクレジットカード情報を格納するウェブショップ等であり得る。
【００２５】
クライアントデバイス２００およびサーバデバイス１００はそれぞれプロセッサ回路を備える。両デバイスはまた、コンピュータプロセス命令を含むメモリを備え得る。プロセッサ回路は、メモリに格納された命令を実行するように構成される。認証の実行はプロセッサ回路で実施され、その例が本明細書で示される。図１は、プロセッサ回路の機能ユニットであり得る複数の機能ユニットを示す。例えば、図１は、プロセッサ回路が有し得る機能的構成の青写真として使用され得る。プロセッサ回路は図１の機能ユニットとは別に示されていない。例えば、図１に示される機能ユニットは、デバイス１００または２００において、例えば、デバイス１００または２００の電子メモリ内に格納されており、デバイス１００または２００のマイクロプロセッサによって実行可能なコンピュータ命令として完全にまたは部分的に実装され得る。ハイブリッド実施形態では、機能ユニットは部分的にハードウェアで、例えばコプロセッサ、例えば暗号化コプロセッサとして実装され、部分的に、デバイス１００または２００上で格納および実行されるソフトウェアで実装される。
【００２６】
サーバデバイス１００は、クライアントデバイス２００からのユーザを認証するように構成される。ユーザは認証文字列へのアクセスを有する。認証文字列は複数の位置に複数の文字を有し、各文字は文字セットから選択される。例えば、認証文字列はＰＩＮであり、その場合、文字セットは数字｛０，１，２，・・・，９｝である。例えば、認証文字列は英数字の文字列であり、その場合、文字セットは｛ａ，・・・，ｚ，Ａ，・・・，Ｚ，０，・・・，９｝であり得る。さらに、認証システム１０１で望まれる場合、１つまたは複数の句読文字が文字セットに追加されてもよい。
【００２７】
サーバデバイス１００は、第１の検証番号を格納するように構成されたストレージ１１０、例えば検証番号ストレージ１１０を備える。第１の検証番号は、セットアップフェーズ中に認証文字列から計算されている。しかし、一実施形態では、第１の検証番号を知っているだけでは認証文字列を取得するのに十分ではない。さらに、第１の検証番号は、それ自体ではサーバ１００への認証に使用することはできない。言い換えると、攻撃者が第１の検証番号を取得したとしても、認証文字列を取得したり、サーバデバイス１００に対して認証されることへの助けとはならない。クライアントデバイス２００は、認証プロセス中に、認証文字列から第２の検証番号が計算されるように構成される。ユーザが、自らが知っている認証文字列に基づいて入力を提供するので、クライアントデバイス２００はこれを行うことができる。その後、第２の検証番号はサーバデバイス１００に送信される。第１の検証番号と第２の検証番号との間の対応が検証され、これにより、両方の検証番号が同じ認証文字列から計算されたことが検証される。その結果、ユーザが認証される。
【００２８】
検証番号ストレージ１１０は、複数のユーザのための複数の検証番号を含み得る。例えば、検証番号はユーザ名に関連付けられ得る。例えば、検証番号とユーザ名とのペアが保存され得る。関連付けはユーザ名の派生物、例えばハッシュやソルト付きハッシュ等を介して行われてもよい。その場合、検証番号ストレージ１１０は、派生物とともに検証番号を記憶し得る。
【００２９】
図２は、可能なデータ依存性の実施形態の例を概略的に示す。図は、第１の検証番号および第２の検証番号と認証文字列との間の可能な関係を説明している。
【００３０】
図２は、文字／位置データのセット３１０を示す。セット３１０は、文字セットからのある文字と認証文字列内の位置との組み合わせごとに数字を含む。文字／位置データは秘密であってもよいが、これは必須ではなく、公開データであってもよい。典型的には、数字は、例えば、使用される準同型暗号スキームによって使用されるように、有限群、環、または体から選択される。準同型暗号スキームでは、データ（例えば、群内の数字）を暗号化することができる。さらに、暗号化された数字に対して実行され得る少なくとも１つの二項演算が存在する。例えば、加算をサポートする準同型暗号スキームでは、複数の数字のセットの和を暗号化しながら計算することができる。例えば、ある暗号化Ｅに対して、ｆ（Ｅ（ｘ１），．．．，Ｅ（ｘｎ））＝Ｅ（ｘ１＋・・・＋ｘｎ）となるようなｆが存在する。すなわち、暗号化された被加数から和の暗号化を計算することができ、さらに、これは復号鍵を知らなくても実行することができる。一部の準同型暗号スキームは乗算をサポートし得る。また、複数の演算、例えば加算および乗算算をサポートする準同型暗号スキームも存在する。そのようなスキームが実施形態で使用されてもよいが、１つの演算しか必要とされないので、このような複雑なタイプの準同型暗号は必要とされない。準同型暗号スキームの例は、（パディングされていない）ＲＳＡ、ＥｌＧａｍａｌ、Ｇｏｌｄｗａｓｓｅｒ−Ｍｉｃａｌｉ、Ｂｅｎａｌｏｈ、Ｐａｉｌｌｉｅｒ等を含む。例えば、数字は、素数を法とする整数の群から選択され得る。他の例は、何らかのジェネレータによって生成された楕円曲線上の群である。可逆数の群は合成数を法とする、等である。
【００３１】
図３は、文字／位置データの実施形態の例を概略的に示す。複数の位置４１０が示されている。認証文字列は、認証文字列の位置ごとに文字セット４２０から文字を選択することによって取得され得る。複数の位置４１０のうちのある位置と、文字セット４２０のうちの各文字との組み合わせごとに、文字／位置番号が選択される。ｎ個の位置およびｍ個の可能な文字が存在する場合、通常はｎｍ個の文字／位置番号が存在する。一部の組み合わせは省略され得るが、それらの文字／位置の組み合わせは認証文字列において不可能であるという結果がある。
【００３２】
一実施形態では、認証文字列は所定の長さであり、あるいは、認証文字列は、ある最大長よりも短く、少なくとも２つの任意の長さを有し得る。しかし、認証文字列が複数の位置における全ての位置を使用する必要はない。例えば、一部の位置を空けたままにすることで長さの異なる認証文字列がサポートされ得る。あるいは、１つの文字を空の位置としてエンコードすることにより、文字／位置データの量を減らすことができる。また、文字セットにパディング文字を含めることによって異なる長さの認証文字列がサポートされてもよい。認証文字列は最大で、認証文字列の末尾に続く文字列としてパディング文字を有することを要求され得る。図３は、位置と文字との１つの組み合わせ（参照番号４３０）を示す。
【００３３】
一実施形態では、文字／位置データは乱数である。乱数を使用すると、同じ検証番号を与える２つの異なる認証文字列が存在する可能性があるという小さなリスクが存在する。したがって、あるユーザを認証するときに受け入れられる認証文字列が複数ある可能性がある。しかし、これが発生するリスクは小さく、代替認証文字列は知られない。また、準同型暗号のための群を大きくする等してリスクを適宜小さくすることができる。
【００３４】
一実施形態では、文字／位置データのセット３１０は、任意のサブセットが準同型暗号によってサポートされる演算に対して異なる結果を生成するように選択される。例えば、準同型暗号が加算をサポートする場合、文字／位置データのセット３１０は、基数の累乗の倍数になるように選択され得る。基数は、文字セット内の文字の数として選択され得る。例えば、サポートされる演算が加算の場合、この選択により、サブセットごとに異なる総和が得られる。
【００３５】
例えば、準同型暗号が乗算をサポートする場合、文字／位置データのセット３１０は累乗として選択され、ここで、指数は基数の累乗の倍数である。基数は、文字セット内の文字の数として選択され得る。例えば、サポートされる演算が乗算の場合、この選択により、サブセットごとに異なる乗算が得られる。例えば、累乗はジェネレータの累乗であり得る。文字／位置データをジェネレータの累乗として選択することの追加の利点は、べき演算が追加の暗号化レイヤーとなることである。特に、たとえアンブラインドであっても（以下参照）、検証番号から認証文字列を取得することはより困難である。
【００３６】
一実施形態では、文字／位置番号は群のサイズよりも小さい。一実施形態では、文字／位置番号は、基数の（例えば、ジェネレータの）累乗であり、指数は群のサイズより小さいか、またはジェネレータによって生成される群のオーダーより小さい。一実施形態では、文字／位置番号または指数は、群のオーダーを文字セットのサイズで割ったものよりも小さい。
【００３７】
文字／位置データは公開されてもよいが、公開される必要はない。特に、暗号攻撃に対するセキュリティを強化するために、文字／位置データはクライアントデバイスにとって秘密にされてもよい。例えば、文字／位置データがランダムデータである場合、サーバとクライアントデバイスとの間で交換されるデータを分析する攻撃者は、観測されたデータがどの文字／位置データに対応するかを知らない。同じ文字／位置データセットが、セットアップフェーズ中および後続の各認証フェーズ中に使用される。認証をサポートするサーバデバイス１００のために、文字／位置データはユーザごとにランダムに選択されてもよい。
【００３８】
認証文字列３２５は、文字／位置データのセット３１０のサブセット３２０を決定する。特に、認証文字列の複数の異なる位置において実際に使用されている文字に対応する文字／位置番号がサブセット３２０内に含まれる。サブセット３２０から、第１の検証番号３４０が導出される。
【００３９】
例えば、第１の検証番号は、準同型暗号によりサポートされる演算、例えば乗算を実行することにより、サブセット３２０から取得されてもよい。セキュリティを強化するために、この結果はブラインドされてもよい。例えば、サポートされている演算を実行することによって、例えばサブセット内の数字を乗算することによって、サブセット３２０から第１のアンブラインド検証番号３３０が取得され得る。次に、第１のアンブラインド検証番号３３０がブラインディング数３４０でブラインドされ得る。後者は（ブラインドされた）第１の検証番号３４０である。例えば、ブラインディング数を含めるためにサポートされている演算が使用され、例えば、第１のアンブラインド検証番号３３０にブラインディング数が加算または乗算され得る。ブラインディング数は任意選択的である。ブラインディング数がない場合、第１のアンブラインド検証番号３３０を取得した攻撃者は、辞書攻撃を実行して認証文字列を決定することができる。ブラインディング数は、アンブラインド検証番号３３０が有する認証文字列３２５に関する情報を減らし、例えば、場合によってはゼロに減らす。以下では、第１の認証番号がブラインドされていると想定するが、これは必須ではない。ブラインディング数は、例えば、乱数ジェネレータによって生成された乱数であってもよい。
【００４０】
なお、認証フェーズ中、サーバデバイスは認証文字列３２５、アンブラインド検証番号３３０、およびブラインディング数３４５のいずれも必要としないことに留意されたい。例えば、サーバデバイスは、セットアップフェーズ中に第１の検証番号３４０を計算し、その後、不要な情報を削除することができる。例えば、サーバデバイスは、例えばクライアントデバイスから、または信頼できる第三者から、セットアップフェーズ中に第１の検証番号３４０を受信し得る。認証フェーズにおいて、サーバデバイスは、文字／位置データ３１０、およびブラインドされている、またはされていない第１の検証番号を必要とする。文字／位置データ３１０がランダムでない場合、格納されるのではなく、必要なときに計算されてもよい。
【００４１】
サーバデバイス１００は暗号化ユニット１２０を備える。暗号化ユニット１２０は、準同型暗号アルゴリズムに従って文字／位置データのセット３１０を暗号化するように構成される。暗号化は要素ごとに行われる。図３では、これは暗号化されたセット３５０として示されている。認証中、暗号化されたセット３５０がクライアントデバイス２００に送信される。リプレイを回避するために、この暗号化の結果が認証ごとに異なることが望ましい。例えば、セット３１０が暗号化される度に異なる鍵を使用することによって、例えばランダムな鍵を選択することによって、これが保証され得る。例えば、確率的暗号スキームを選択することによってこれが保証され得る（または両方）。例えば、暗号スキームは、準同型で確率的な暗号スキームであるＥｌＧａｍａｌ暗号であってもよい。
【００４２】
クライアントデバイス２００は準同型計算ユニット２４０を備える。準同型計算ユニット２４０は、暗号化された文字／位置データセット３５０のサブセット３６０から、暗号化された第２の検証番号を計算するように構成される。暗号化されたセット３５０はサーバデバイス１００から受信される。例えば、クライアントデバイス２００のユーザは、認証文字列３２６の知識に基づいて、受信されたセット３５０のサブセット３６０を選択し得る。認証文字列３２５と認証文字列３２６が同じ場合、サブセット３６０はサブセット３２０と同じであるが、サブセット３６０は暗号化されている一方でサブセット３２０は暗号化されていない点で異なる。例えば、受信されたセット３５０は、どの暗号化された文字／位置番号がどの文字／位置に対応するかの指標を含み得る。例えば、セット３５０はソートされ得る。例えば、ユーザは、クライアントデバイス２００のユーザインターフェース２２０、例えばタッチスクリーンのキーボード等で認証文字列を入力してサブセット３６０を選択することができる。
【００４３】
指標は機械可読であってもよいし、機械可読でなくてもよい。セット３５０内のどの暗号化された文字／位置番号がどの文字／位置に対応するかを機械可読な態様で示すことの欠点は、サーバデバイス１００がそうでなくても、クライアントデバイス２００がスクレイプ可能になるおそれがあることである。サーバ１００における攻撃は通常、多くの認証文字列が危険にさらされることを意味するため、サーバ１００での攻撃を回避することには価値がある。認証文字列はしばしば再利用されるため、これはセキュリティに大きな効果を奏し得る。以下、クライアントデバイス２００での攻撃のリスクも減らすソリューションが提示される。
【００４４】
準同型計算ユニット２４０は、暗号化された文字／位置データセットのサブセットから、暗号化された第２の検証番号を準同型的に計算するように構成される。例えば、準同型計算ユニット２４０は、暗号化されたデータに対して準同型計算ユニット２４０が計算を実行するという違いを除いて、数字３３０を得るためにセット３２０に対して行われるのと同じ計算を実行し得る。第２の検証番号３７０は暗号化されているが、ブラインドはされていない。
【００４５】
ブラインディングが使用される場合、準同型計算ユニット２４０は、暗号化された第２の検証番号をブラインディング数３４６を用いてブラインドするように構成され得る。準同型計算ユニット２４０が（暗号化されたデータに対してではあるが）同じ計算およびブラインディングを実行し、かつ（暗号化されているが）同じバインディング数を使用する場合、第２の検証番号３８０は、暗号化されているが、第１の検証番号３４０と同じである。
【００４６】
クライアントデバイス２００が暗号化されたブラインディング数を取得し得るいくつかのやり方が存在する。例えば、暗号化されたブラインディング数はセットアップフェーズ中に取得され、認証フェーズ中に使用される鍵ごとに暗号化され得る。暗号化されたブラインディング数はデバイス２００のストレージ内に保存され得る。この場合、認証時に同じ鍵または限られた数の鍵が使用され得る。あるいは、暗号スキームは、公開／秘密鍵暗号スキームであってもよい。クライアントデバイス２００は、セット３１０を暗号化してセット３５０を取得するためにも使用される公開鍵を受け取り得る。この場合、準同型暗号ユニット２４０は、ブラインディング数自体を暗号化し得る。ブラインディング数はユーザから取得されてもよいし、またはクライアントデバイス２００のストレージ２５０から取得されてもよい。
【００４７】
アンブラインド数３７０であろうとブラインドされた数３８０であろうと、第２の検証番号はサーバデバイス１００に送信される。サーバデバイス１００は比較ユニット１４０を備える。比較ユニット１４０は、ユーザを認証するために、第１の検証番号と暗号化された第２の検証番号との間の対応を検証するように構成される。例えば、クライアントデバイス２００がサーバデバイス１００と同じ計算を（ただし、暗号化されたデータに対して）実行する場合、比較ユニット１４０は、第２の検証番号を解読して第１の検証番号と等しいか否か比較するように構成され得る。しかし、これは必ずしも必要ではなく、例えば、準同型暗号ユニット２４０は異なる数を計算するように構成されてもよく、例えば、準同型暗号ユニット２４０は、第１の検証番号の２倍を計算するように、またはそれに定数を加えるように構成されてもよい。より一般的には、ｖがアンブラインド検証番号である場合、準同型暗号ユニットはａｖ、ｖ＋ｂ、ａｖ＋ｂ等を計算し、ここでａおよびｂは定数である。これらは、追加計算の前または後にブラインディング数によってブラインドされ得る。例えば、準同型暗号ユニット２４０はａｖｙを計算し、比較ユニット１４０は、第２の検証番号が第１の検証番号のａ倍であることを確認し得る。
【００４８】
上記で指摘したように、上記実施形態はサーバでのスクレイピングを防ぐが、クライアントデバイスでスクレイピングされるおそれがある。一実施形態では、以下のような追加の任意選択的な保護が提供される。一実施形態では、サーバデバイス１００は順列ジェネレータ１５０および表示データユニット１６０を備える。順列ジェネレータ１５０は、文字セットの順列を生成するように構成される。順列ジェネレータ１５０は位置ごとに順列を生成してもよいが、位置よりも少ない順列が生成されてもよく、その場合はいくつかの順列が再利用される。例えば、位置ごとに同じ順列が使用されてもよい。好ましくは、少なくとも、認証ごとに新しい順列が生成される。サーバデバイス１００は、文字／位置データおよび／または順列を生成するための乱数ジェネレータを備え得る。
【００４９】
表示データユニット１６０は、文字セット内の文字のための表示データを取得するように構成される。表示データは、機械可読ではない方法で文字セットの文字を示す。一実施形態では、表示データは、表示データストアから取得されるか、または外部の表示データ生成デバイスから取得される。また、表示データはサービスデバイス１００上で生成されてもよい。表示データの生成自体は既知である。例えば、いわゆるキャプチャ（ｃａｐｔｃｈａ）を生成するためのアルゴリズムが知られている。例えば、位置ごとに異なる表示データのセットが取得される。位置の数よりも少ない数の表示データセットが生成されてもよく、その場合、表示データの一部が再利用される。例えば、全ての位置のために同じ表示データが使用されてもよい。認証ごとに異なる表示データを使用する必要すらない。この場合、クライアントデバイスは、後続の認証で使用される表示データをキャッシュする。表示データは比較的大量のデータを消費するが、キャッシュによって削減される。表示データは画像であってもよく、例えば、各文字について画像があってもよい。表示データは動画クリップであってもよい。例えば、動画は、画像または動画クリップから人間は文字を認識するが、コンピュータは認識できない。少なくとも攻撃者に画像またはクリップの解析を要求することで、攻撃にエラーが生じやすくなり、攻撃の自動化が困難になり、またより大きなリソースが必要となる。したがって、選択された少数のユーザではなく多くのユーザに攻撃の対象を拡大することは攻撃者にとって困難になる。例えば、表示データはｊｐｇ、ｐｎｇ等、またはｍｐ４、ａｖｉ等である。
【００５０】
表示データは、暗号化された文字／位置データのセット３５０とともにクライアントデバイス２００に送信される。表示データは、正しい文字／位置データに関連付けられた態様で、順列された順番で送られてもよい。図４は、ＰＩＮコードに使用される文字セットの順列５００を示す。より大きな文字セットについても同様に適用することができる。順列５００は、文字セット内の文字の表示データがクライアントデバイス２００に送信される順序を示し得る。図４には表示データ５１０も示されている。表示データ５１０には、機械が読み取ることができない態様で、順列が示す順番に並べられた文字セット内の文字が示される。この場合、表示データは、ランダムなフォントを選択し、２つの黒色の線をランダムな向きで重ね合わせることで生成される。当該技術分野で知られている任意の他の非機械可読データの生成手法が代わりに使用され得る。表示データの下には、対応する暗号化された文字／文字に対応する位置データ５２０〜５２９が示されている。例えば、表示データ５１０が第１の位置のために生成される場合、文字／位置データ５２０〜５２９は、文字セット内のある文字と第１の位置との組み合わせに対する文字／位置データである。次の位置には新しい文字／位置データが使用され、場合によっては、さらに新しい順列および／または新しい表示セットが使用される。よりセキュリティの高い実施形態では、各位置が独自の文字／位置データ、表示セット、および順列を有する。
【００５１】
クライアントデバイス２００は、サーバデバイスから、暗号化された文字／位置データに関連付けられた表示データを受信するように構成される。クライアントデバイス２００はディスプレイ２１０を備える。ディスプレイ２１０は、各位置に受信された表示データを表示するように構成される。特定の位置のための表示データが表示された後、ユーザは、認証文字列内のその位置に対応する正しい文字を選択することができる。表示データが選択されると、関連付けられている暗号化された文字／位置もサブセット３６０のために選択される。例えば、認証文字列の最初の文字が９の場合、ユーザは表示データ５１１を選択し、暗号化された文字／位置データ５２１がサブセット３６１に追加される。したがって、ユーザは正しい文字／位置データを選択するが、攻撃者はそれが何を表しているのかわからない。文字／位置データは暗号化されており、機械で読み取ることができない表示画像に対応する。
【００５２】
例えば、クライアントデバイス２００は以下の擬似コードに従って構成され得る。
【００５３】
認証文字列の各位置について、以下の動作が実行される：
当該位置のために受信された表示データを表示する
表示された表示データに対するユーザの選択を受け取る
位置および選択された文字のための暗号化された文字／位置データをサブセット３６０に追加する。
【００５４】
デバイス１００および２００の様々な実施形態は、様々な選択肢から選択され得る入力インターフェースを含み得る。例えば、入力インターフェースはキーボード、タッチスクリーン、マウス等であり得る。入力インターフェースを通じて表示データが選択され得る。
【００５５】
ストレージ（例えば、ストレージ１１０、２５０）は、例えば、フラッシュメモリ等の電子メモリや、ハードディスク等の磁気メモリとして実装されてもよい。ストレージ１１０または２５０は、ストレージを構成する複数の個別のメモリを備えてもよい。また、ストレージは、ローカルストレージまたは外部ストレージとして、例えばクラウドストレージとして実装されてもよい。後者の場合、デバイスは、例えばネットワーク接続を介して外部ストレージにおいて読み取りおよび書き込みを実行するための読み書きユニットを備える。例えば、ストレージの一部は安全なストレージで、残りは通常のストレージであってもよい。また、ストレージはＲＡＭ等の一時メモリを含み得る。
【００５６】
典型的には、デバイス１００および２００はそれぞれ、デバイス１００および２００に保存された適切なソフトウェアを実行するマイクロプロセッサ（別途図示せず）を備える。例えば、ソフトウェアは、対応するメモリ、例えばＲＡＭのような揮発性メモリ、またはフラッシュのような不揮発性メモリ（別途図示せず）にダウンロードおよび／または保存されていてもよい。あるいは、デバイス１００および２００は、全体的にまたは部分的に、例えばフィールドプログラマブルゲートアレイ（ＦＰＧＡ）として、プログラマブルロジックに実装されてもよい。デバイス１００および２００は、全体的にまたは部分的に、いわゆる特定用途向け集積回路（ＡＳＩＣ）、すなわち、特定の用途向けにカスタマイズされた集積回路（ＩＣ）として実装されてもよい。例えば、回路は、例えばＶｅｒｉｌｏｇ、ＶＨＤＬなどのハードウェア記述言語を使用して、ＣＭＯＳで実装されてもよい。
【００５７】
一実施形態では、デバイス１００および２００は１つまたは複数の回路を備え得る。これらの回路は、本明細書に記載される対応するユニットを実装する。回路は、プロセッサ回路および記憶回路であってもよく、プロセッサ回路は、記憶回路において電子的に表現される命令を実行する。
【００５８】
プロセッサ回路は分散された形で、例えば複数のサブプロセッサ回路として実装されてもよい。ストレージは、複数の分散サブストレージに分散されてもよい。メモリの一部または全部が電子メモリや磁気メモリ等であり得る。例えば、ストレージは、揮発性部分および不揮発性部分を有し得る。ストレージの一部が読み取り専用であってもよい。
【００５９】
図５は、サーバ方法５００およびクライアント方法６００の実施形態の例を概略的に示す。
【００６０】
サーバ方法６００は、認証文字列へのアクセスを有する、クライアントデバイス（例えば、クライアントデバイス２００）からのユーザを認証するように構成される。認証文字列は複数の位置に複数の文字を有し、各文字は文字セットから選択される。サーバ方法６００は、
−  文字／位置データのセットのサブセットから計算された第１の検証番号を格納するステップ（６１０）であって、前記サブセットは認証文字列によって示され、前記文字／位置データのセットは、前記文字セットからの文字と、前記認証文字列内の位置との組み合わせに対する数字を含む、ステップ（６１０）と、
−  準同型暗号アルゴリズムに従って前記文字／位置データのセットを暗号化し、暗号化された前記セットをクライアントデバイスに送信するステップ（６２０）と、
−  前記クライアントデバイスから第２の検証番号を受信するステップ（６３０）であって、前記第２の検証番号は、暗号化された前記セットのサブセットから、暗号化された第２の検証番号を準同型的に計算することによって計算され、前記サブセットは前記認証文字列によって示される、ステップ（６３０）と、
−  ユーザを認証するために、前記第１の検証番号と暗号化された前記第２の検証番号との間の対応を検証するステップ（６４０）とを含む。
【００６１】
クライアント方法７００は、サーバデバイス（例えば、サーバデバイス１００）に対してユーザを認証するように構成される。ユーザは認証文字列へのアクセスを有する。認証文字列は複数の位置に複数の文字を有し、各文字は文字セットから選択される。クライアント方法７００は、
−  準同型暗号アルゴリズムに従って暗号化された文字／位置データのセットを受け取るステップ（７１０）であって、暗号化された前記文字／位置データのセットは、文字セットからの文字と、認証文字列内の位置との組み合わせに対する数字を含む、ステップ（７１０）と、
−  暗号化された前記文字／位置データのセットのサブセットから、暗号化された第２の検証番号を準同型的に計算するステップ（７２０）であって、前記サブセットは前記認証文字列によって示される、ステップ（７２０）と、
−  暗号化された前記第２の検証番号をサーバデバイスに送信するステップ（７３０）とを含む。
【００６２】
方法６００および７００は追加動作を含み得る。特に、これらの方法は、文字セットの表示データを取得、表示、および選択するステップを含み得る。両方法間の依存関係が破線の矢印で示されている。
【００６３】
当業者には明らかであるように、これらの方法を実行する多くの異なる態様が存在する。例えば、ステップの順序を変更したり、いくつかのステップを並行して実行したりすることができる。さらに、ステップ間に他の方法ステップを挿入することができる。挿入されるステップは、本明細書に記載されるような方法の改良を表し、または方法と無関係であってもよい。例えば、いくつかのステップは、少なくとも部分的に並列に実行されてもよい。さらに、あるステップは、次のステップが開始される前に完全に終了していなくてもよい。
【００６４】
本発明に係る方法は、プロセッサシステムに方法６００または７００を実行させるための命令を含むソフトウェアを使用して実行され得る。ソフトウェアは、システムの特定のサブエンティティによって取られるステップのみを含んでもよい。ソフトウェアは、ハードディスク、フロッピー、メモリ、光ディスクなどの適切な記憶媒体に保存されてもよい。ソフトウェアは、有線または無線を介する信号として、またはインターネットなどのデータネットワークを使用して供給されてもよい。ソフトウェアは、サーバ上でダウンロードおよび／またはリモート使用可能にされてもよい。本発明に係る方法は、方法を実行するためにプログラマブルロジック、例えばフィールドプログラマブルゲートアレイ（ＦＰＧＡ）を構成するように構成されたビットストリームを使用して実行されてもよい。
【００６５】
本発明は、コンピュータプログラム、特に、本発明を実施するように適合された、キャリア上のまたはキャリア内のコンピュータプログラムにも及ぶことが理解されよう。プログラムは、ソースコード、オブジェクトコード、コード中間ソース、部分的にコンパイルされた形式のようなオブジェクトコード、または本発明に係る方法の実施のための使用に適した任意の他の形式などの形式を取り得る。コンピュータプログラム製品に関する実施形態は、上記方法のうちの少なくとも１つの方法の処理ステップに対応するコンピュータ実行可能命令を含む。これらの命令は、サブルーチンに細分され、かつ／または静的に若しくは動的にリンクされ得る１つまたは複数のファイルに保存され得る。コンピュータプログラム製品に関する他の実施形態は、少なくとも１つの上記システムおよび／または製品の手段に対応するコンピュータ実行可能命令を含む。
【００６６】
上記したように、ユーザ名およびパスワードに基づく認証機構はメモリスクレイピング攻撃に対して脆弱である。メモリスクレイピング攻撃は２つの脅威を示唆する。１つはユーザのなりすましであり、２つ目は機密個人情報の損失である。既知のソリューションは両方の脅威に対処していない。さらに、既知のサーバは多くの機密パスワードを有しているため、魅力的なターゲットである。以下、より数学的な言語を使用しながら、さらなるおよび／またはより詳細な実施形態を説明する。
【００６７】
セキュアキーボードを想定されたい。これは、メモリスクレイピングによる資格情報の損失に対する保護を提供する。セキュアキーボードは、各行が０〜９の数字を表すテーブルのシーケンス｛Ｔ｝として見なすことができる。このようなテーブルは２つの列を有する。１つの列は、アプリが数字を表示するためのデータ、例えばωｉを有し、２つ目の列は何らかの任意の値を有する。Ｔｉは、テーブルＴの行ｉの値を押した結果としてのメモリ内の値、すなわち、テーブルＴの行ｉの第２の列の値を表す。各行が表す実際の値を隠すために、行は並べ替えられる。ユーザが数字を入力する度に新しいテーブルがメモリに読み込まれ、これにより、リンク情報、例えば入力された２つの数字が同じであるか否か等が確実に除去される。
【００６８】
以下の認証スキームはリプレイ攻撃に対する保護を提供するが、準同型暗号は使用しない。サーバは、ユーザ資格情報が安全に保管されているデータベースを有すると想定する。これは、データベース自体がユーザの（完全な）資格情報をリークしないことを意味する。
１．ユーザが自分のユーザ名を入力し、ユーザ名（の派生物）がサーバに送信される。
２．サーバはユーザが登録されているか否かを確認し、登録されている場合、以下の動作を実行する：
（ａ）各列内の全てのエントリが一意になるように、１０×ｎのランダム行列Ｒを生成する。
（ｂ）セット｛０，１，２，．．．，９｝に対して作用するｎ個のランダム順列πｉを生成する。
（ｃ）ｎ組の表示データ
【数１】
2021507615.tif 000003
のセットを生成する。
（ｄ）ｉ＝０，．．．，ｎ−１について、テーブルＴｉが行ｊに有するペア
【数２】
2021507615.tif 000004
を定める。
（ｅ）たった今ランダムに選択されたキーボードＫ＝Ｔ０，．．．，Ｔｎ−１で返信する。
３．ユーザにＫが提示され、ユーザがＰＩＮ＝ｐ０，．．．，ｐｎ−１を入力した結果として文字列
【数３】
2021507615.tif 000005
が生成され、サーバに送り返される。
４．サーバは、ユーザが自身のＰＩＮのｉ桁目（ｐｉ）をテーブルＴｉの列ｊｉにおいて選択するという事実に基づき、関係
【数４】
2021507615.tif 000006
を利用して、ＳおよびＲからＰＩＮを再構築する。したがって、πｉ（ｊｉ）は
【数５】
2021507615.tif 000007
を満たし、よって
【数６】
2021507615.tif 000008
が成立すると結論付けられる。
５．最後に、サーバは自身のデータベースを使用してＰＩＮを検証し、生成された全てのデータをメモリから削除する。
【００６９】
サーバはフレッシュかつランダムなキーボードを生成するので、Ｓはサーバによって一度しか受け入れられない。したがって、攻撃者はＳを再生することでユーザになりすますことができない。さらに、このランダム性により、ユーザのデバイス上のアクティブなメモリスクレイパーが、ユーザの入力したＰＩＮに関する有意な情報を経時的に収集することができないことが保証される。
【００７０】
登録確認を除去して、サーバ側の検証部分を、データベースにユーザ資格情報を安全に格納することに置き換えるだけで、上記手順を、ユーザの登録をメモリスクレイピングから保護するために使用することもできる。
【００７１】
サーバ上のメモリスクレイパーが機密パスワードまたはＰＩＮを取得することを防ぐために、以下が提案される。
【００７２】
Ｇ＝＜ｇ＞を、大きな素数位数ｐのｇによって生成された群であるとする。サーバは、ユーザ名Ｕおよびパスワード派生物
【数７】
2021507615.tif 000009
を含むデータベースを有すると仮定し、
ここで、ＰＩＮＵはユーザのＰＩＮであり、ｙＵはＧの未知の元である。Ｐ（Ｕ）は、情報理論的隠蔽（ｉｎｆｏｒｍａｔｉｏｎ  ｔｈｅｏｒｅｔｉｃａｌｌｙ  ｈｉｄｉｎｇ）であるＰｅｄｅｒｓｅｎ  Ｃｏｍｍｉｔｍｅｎｔであるので、ｙＵが未知の場合、Ｐ（Ｕ）はＰＩＮに関する情報を有さない［１］。
【００７３】
【数８】
2021507615.tif 000010
は、秘密鍵ｋを用いたｘのＥｌ−Ｇａｍａｌ暗号化を表すものとする［２］。したがって、
【数９】
2021507615.tif 000011
であり、
ここで、ｒは、ｐを法とする何らかの一様な乱数値（ｕｎｉｆｏｒｍ  ｒａｎｄｏｍ  ｖａｌｕｅ）であり、またｈ＝ｇｋである。
【００７４】
ユーザＵは、Ｐ（Ｕ）において使用されるｙＵを保存していたと仮定する。
【００７５】
認証は次のように行われる：
１．ユーザが自分のユーザ名を入力し、ユーザ名（の派生物）がサーバに送信される。
２．サーバはユーザが登録されているか否かを確認し、登録されている場合、以下の動作を実行する：  
（ａ）ランダムな秘密鍵
【数１０】
2021507615.tif 000012
を生成する。
（ｂ）１０×ｎのランダム行列Ｒを生成し、ここで
【数１１】
2021507615.tif 000013
である。
（ｃ）セット｛０，１，２，．．．，９｝に対して作用するｎ個のランダム順列πｉを生成する。
（ｄ）ｎ組の表示データ
【数１２】
2021507615.tif 000014
のセットを生成する。
（ｅ）ｉ＝０，．．．，ｎ−１について、テーブルＴｉが行ｊに有するペア
【数１３】
2021507615.tif 000015
を定める。
（ｆ）たった今ランダムに選択されたキーボードＫ＝Ｔ０，．．．，Ｔｎ−１、および公開鍵ｈ＝ｇｋで返信する。
３．ユーザにＫが提示され、ユーザがＰＩＮＵ＝ｐ０，．．．，ｐｎ−１を入力した結果として文字列
【数１４】
2021507615.tif 000016
が生成される。
４．ユーザはメモリからｙＵを取り出し、公開鍵ｈを使用してランダムな暗号化
【数１５】
2021507615.tif 000017
を生成する。
５．ユーザが
【数１６】
2021507615.tif 000018
で返信する。
６．サーバはＳを復号し、Ｐ（Ｕ）と合致するか否かを確認する。
７．最後に、生成された全てのデータをメモリから削除する。
【００７６】
セット｛０，１，２，．．．，９｝のための１０×ｎの行列の代わりに別の文字セットが使用されてもよい。
【００７７】
正確さ：なお、デジタル文字列ＰＩＮＵ＝ｐ０，．．．，ｐｎ−１は以下の整数によって表され得る。
【数１７】
2021507615.tif 000019
さらに、
【数１８】
2021507615.tif 000020
から、Ｅｌ−Ｇａｍａｌの準同型写像は下式を示唆し、
【数１９】
2021507615.tif 000021
よって、
【数２０】
2021507615.tif 000022
【００７８】
登録：登録は次のように行われる：
１．ユーザが自分のユーザ名を入力し、ユーザ名（の派生物）がサーバに送信される。
２．サーバはユーザが登録されて「いない」ことを確認し、登録されていない場合、以下の動作を実行する：  
（ａ）ランダムな秘密鍵
【数２１】
2021507615.tif 000023
を生成する。
（ｂ）１０×ｎのランダム行列Ｒを生成し、ここで、
【数２２】
2021507615.tif 000024
である。
（ｃ）セット｛０，１，２，．．．，９｝に対して作用するｎ個のランダム順列πｉを生成する。
（ｄ）ｎ組の表示データ
【数２３】
2021507615.tif 000025
のセットを生成する。
（ｅ）ｉ＝０，．．．，ｎ−１について、テーブルＴｉが行ｊに有するペア
【数２４】
2021507615.tif 000026
を定める。
（ｆ）たった今ランダムに選択されたキーボードＫ＝Ｔ０，．．．，Ｔｎ−１、および公開鍵ｈ＝ｇｋで返信する。
３．ユーザにＫが提示され、ユーザが自身の選択されたＰＩＮＵ＝ｐ０，．．．，ｐｎ−１を入力した結果として文字列
【数２５】
2021507615.tif 000027
が生成される。
４．ユーザはランダムなｙＵを生成し、また、公開鍵ｈを使用してランダムな暗号化
【数２６】
2021507615.tif 000028
を生成する。
５．ユーザが
【数２７】
2021507615.tif 000029
で返信する。
６．サーバはＳをＰ（Ｕ）に復号し、ユーザＵをＰ（Ｕ）とともに保存する。
７．最後に、生成された残っている全てのデータをメモリから削除する。
【００７９】
サーバゼロ知識：サーバはＰ（Ｕ）のランダム化された暗号化、およびＰ（Ｕ）自体しか見ない。Ｅｌ−Ｇａｍａｌのセマンティックセキュリティ（ｓｅｍａｎｔｉｃ  ｓｅｃｕｒｉｔｙ）から［３］、ｙのランダム化された暗号化にキーボードの結果を掛けることにより、ユーザがキーボード上で行った全ての選択がサーバに対しても隠される。これは暗号化の「ブラインディング」とも知られている。さらに、Ｐｅｄｅｒｓｅｎ  Ｃｏｍｍｉｔｍｅｎｔにより、Ｐ（Ｕ）を使用してＰＩＮを抽出することができないことが保証される。
【００８０】
注：楕円曲線としての両方の素体が、上記実施形態を実施するための適切な群を定義するために使用され得る。
参考文献
［１］Ｐｅｄｅｒｓｅｎ．：“Ｎｏｎ−ｉｎｔｅｒａｃｔｉｖｅ  ａｎｄ  ｉｎｆｏｒｍａｔｉｏｎ−ｔｈｅｏｒｅｔｉｃ  ｓｅｃｕｒｅ  ｖｅｒｉｆｉａｂｌｅ  ｓｅｃｒｅｔ  ｓｈａｒｉｎｇ”，Ａｄｖａｎｃｅｓ  ｉｎ  Ｃｒｙｐｔｏｌｏｇｙ  ＣＲＹＰＴＯ’９１  Ｓｐｒｉｎｇｅｒ
［２］Ｔ．ＥｌＧａｍａｌ．：“Ａ  ｐｕｂｌｉｃ  ｋｅｙ  ｃｒｙｐｔｏｓｙｓｔｅｍ  ａｎｄ  ａ  ｓｉｇｎａｔｕｒｅ  ｓｃｈｅｍｅ  ｂａｓｅｄ  ｏｎ  ｄｉｓｃｒｅｔｅ  ｌｏｇａｒｉｔｈｍｓ”，Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ＣＲＹＰＴＯ  ８４  ｏｎ  Ａｄｖａｎｃｅｓ  ｉｎ  Ｃｒｙｐｔｏｌｏｇｙ，ｐｐ．１０〜１８，Ｎｅｗ  Ｙｏｒｋ，ＮＹ，ＵＳＡ，１９８５。Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ  Ｎｅｗ  Ｙｏｒｋ，Ｉｎｃ．。
［３］Ｙ．ＴｓｉｏｕｎｉｓおよびＭ．Ｙｕｎｇ．：“Ｏｎ  ｔｈｅ  ｓｅｃｕｒｉｔｙ  ｏｆ  ＥｌＧａｍａｌ  ｂａｓｅｄ  ｅｎｃｒｙｐｔｉｏｎ”，Ｈ．ＩｍａｉおよびＹ．Ｚｈｅｎｇ，エディター，Ｐｕｂｌｉｃ  Ｋｅｙ  Ｃｒｙｐｔｏｇｒａｐｈｙ，Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅのｖｏｌｕｍｅ  １４３１，ｐｐ．１１７〜１３４。Ｓｐｒｉｎｇｅｒ，１９９８。
【００８１】
図６ａは、一実施形態に係る、コンピュータプログラム１０２０を含む書き込み可能部分１０１０を有するコンピュータ可読媒体１０００を示し、コンピュータプログラム１０２０は、プロセッサシステムにクライアント方法またはサーバ方法を実行させるための命令を含む。コンピュータプログラム１０２０は、物理的なマークとして、またはコンピュータ可読媒体１０００の磁化によって、コンピュータ可読媒体１０００上に具現化され得る。しかしながら、任意の他の適切な実施形態もまた考えられる。さらに、ここではコンピュータ可読媒体１０００が光ディスクとして示されているが、コンピュータ可読媒体１０００は、ハードディスク、ソリッドステートメモリ、フラッシュメモリなどの任意の適切なコンピュータ可読媒体であってもよく、また、記録不能または記録可能であってもよい。コンピュータプログラム１０２０は、プロセッサシステムに、実施形態に係るクライアント方法またはサーバ方法を実行させるための命令を含む。
【００８２】
図６ｂは、一実施形態に係るプロセッサシステム１１４０の概略図である。プロセッサシステムは、１つ以上の集積回路１１１０を備える。１つ以上の集積回路１１１０のアーキテクチャが図６ｂに概略的に示されている。回路１１１０は、一実施形態に係る方法を実行し、かつ／または、そのモジュール若しくはユニットを実装するためにコンピュータプログラムコンポーネントを実行するための処理ユニット１１２０（例えばＣＰＵなど）を備える。回路１１１０は、プログラミングコードやデータ等を記憶するためのメモリ１１２２を含む。プログラミングコードは、プロセッサシステムをクライアントデバイスまたはサーバデバイスの実施形態として構成する。
【００８３】
メモリ１１２２の一部が読み取り専用であってもよい。回路１１１０は、通信要素１１２６、例えばアンテナ若しくはコネクタ、または両方などを備え得る。回路１１１０は、本方法で定義された処理の一部または全部を実行するための専用集積回路１１２４を備え得る。プロセッサ１１２０、メモリ１１２２、専用ＩＣ１１２４、および通信要素１１２６は相互接続１１３０、例えばバスを介して相互に接続され得る。プロセッサシステム１１１０は、アンテナおよび／またはコネクタを用いた接触および／または非接触通信のために構成され得る。
【００８４】
例えば、一実施形態では、クライアントデバイス、サーバデバイス、鍵生成デバイス、および／または署名検証デバイスはプロセッサ回路およびメモリ回路を備え、プロセッサは、メモリ回路内に格納されたソフトウェアを実行するように構成される。例えば、プロセッサ回路は、Ｉｎｔｅｌ  Ｃｏｒｅ  ｉ７プロセッサやＡＲＭ  Ｃｏｒｔｅｘ−Ｒ８等であり得る。一実施形態では、プロセッサ回路はＡＲＭ  Ｃｏｒｔｅｘ  Ｍ０であり得る。メモリ回路はＲＯＭ回路、または不揮発性メモリ、例えばフラッシュメモリであってもよい。メモリ回路は揮発性メモリ、例えばＳＲＡＭメモリであってもよい。後者の場合、デバイスは、ソフトウェアを提供するように構成された不揮発性ソフトウェアインターフェース（例えば、ハードドライブ）やネットワークインターフェース等を備え得る。
【００８５】
上記実施形態は本発明を限定するものではなく、当業者は多くの代替的実施形態を設計することができることに留意されたい。
【００８６】
特許請求の範囲において、括弧間に置かれた参照符号は、請求項を限定するものとして解釈されるべきではない。「含む」という動詞およびその活用形の使用は、請求項に記載された要素またはステップ以外の要素またはステップの存在を排除するものではない。単数形の要素は、複数のかかる要素の存在を排除するものではない。本発明は、複数の別々の要素を含むハードウェアによって、および適切にプログラムされたコンピュータによって実施され得る。いくつかの手段を列挙する装置クレームにおいて、これらの手段のうちのいくつかは、同一のハードウェアアイテムによって具現化されてもよい。複数の手段が互いに異なる従属請求項に記載されているからといって、これらの手段の組み合わせが好適に使用することができないとは限らない。
【００８７】
特許請求の範囲において、括弧内の参照符号は、例示的実施形態の図面内の参照符号または実施形態の数式を指し、したがって、請求項の明瞭さを高める。これらの参照符号は、請求項を限定するものとして解釈されるべきではない。
【図１】
2021507615.tif 000030
【図２】
2021507615.tif 000031
【図３】
2021507615.tif 000032
【図４】
2021507615.tif 000033
【図５】
2021507615.tif 000034
【図６ａ】
2021507615.tif 000035
【図６ｂ】
2021507615.tif 000036
【手続補正書】
【提出日】令和2年6月17日(2020.6.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
クライアントデバイスからのユーザを認証するためのサーバデバイスであって、前記ユーザは認証文字列へのアクセスを有し、前記認証文字列は複数の位置に複数の文字を有し、前記文字は文字セットから選択され、前記サーバデバイスは、
文字／位置データのセットのサブセットから計算された第１の検証番号を格納するストレージであって、前記サブセットは前記認証文字列によって示され、前記文字／位置データのセットは、前記文字セットからの文字と、認証文字列内の位置との各組み合わせに対する数字を含む、ストレージと、
プロセッサ回路とを備え、前記プロセッサ回路は、
準同型暗号アルゴリズムに従って前記文字／位置データのセットを暗号化して、暗号化された前記セットを前記クライアントデバイスに送信し、
前記クライアントデバイスから第２の検証番号を受信し、ここで、前記第２の検証番号は、暗号化された前記セットのサブセットから、暗号化された第２の検証番号を準同型的に計算することによって計算され、前記サブセットは前記認証文字列によって示され、
前記ユーザを認証するために、前記第１の検証番号と暗号化された前記第２の検証番号との間の対応を検証する、
サーバデバイス。
【請求項２】
前記プロセッサ回路は、
前記文字セットの順列を生成し、
前記文字セット内の前記文字のための表示データを取得し、前記表示データを、前記文字に対応する暗号化された文字／位置データに関連付け、
暗号化された前記文字／位置データに関連付けられた前記表示データを、生成された前記順列に従った順番で前記クライアントデバイスに送信する、
請求項１に記載のサーバデバイス。
【請求項３】
全ての位置について同じ表示データが使用されるか、または
少なくとも２つの異なる位置について異なる表示データが生成される、
請求項１に記載のサーバデバイス。
【請求項４】
後の認証のために前記クライアントデバイスに表示データが送信されず、前記クライアントデバイスはキャッシュされた表示データを使用する、
請求項２に記載のサーバデバイス。
【請求項５】
前記第１の検証番号はブラインディング数によってブラインドされ、前記第２の検証番号を計算することは、前記ブラインディング数を用いてブラインドすることを含む、
請求項１から４のいずれか一項に記載のサーバデバイス。
【請求項６】
前記文字／位置データの少なくとも一部は乱数である、
請求項１から５のいずれか一項に記載のサーバデバイス。
【請求項７】
前記文字／位置データの少なくとも一部は、基数の累乗の倍数として計算され、
少なくとも一部の文字／位置データは累乗として計算され、ここで、指数は基数の累乗の倍数である、
請求項１から６のいずれか一項に記載のサーバデバイス。
【請求項８】
対応を検証することは、前記第２の検証番号を復号することを含む、
請求項１から７のいずれか一項に記載のサーバデバイス。
【請求項９】
前記準同型暗号アルゴリズムは、確率的準同型暗号アルゴリズムである、
請求項１から８のいずれか一項に記載のサーバデバイス。
【請求項１０】
前記検証番号はＰｅｄｅｒｓｅｎ  Ｃｏｍｍｉｔｍｅｎｔであり、及び／または、前記暗号化はＥｌＧａｍａｌ暗号化である、
請求項１から９のいずれか一項に記載のサーバデバイス。
【請求項１１】
サーバデバイスに対してユーザを認証するためのクライアントデバイスであって、前記ユーザは認証文字列へのアクセスを有し、前記認証文字列は複数の位置に複数の文字を有し、前記文字は文字セットから選択され、前記クライアントデバイスは、
プロセッサ回路を備え、前記プロセッサ回路は、
準同型暗号アルゴリズムに従って暗号化された文字／位置データのセットを受け取り、ここで、暗号化された前記文字／位置データのセットは、前記文字セットからの文字と、認証文字列内の位置との各組み合わせに対する数字を含み、
暗号化された前記文字／位置データのセットのサブセットから、暗号化された第２の検証番号を準同型的に計算し、ここで、前記サブセットは前記認証文字列によって示され、
暗号化された前記第２の検証番号を前記サーバデバイスに送信する、
クライアントデバイス。
【請求項１２】
前記プロセッサ回路は、
前記サーバデバイスから、暗号化された前記文字／位置データに関連付けられた表示データを受信し、
前記認証文字列の位置ごとに、受信された表示データを表示し、
表示された前記表示データから表示データを選択するユーザ入力を受け取り、
選択された前記表示データに対応する前記サブセットを選択する、
請求項１１に記載のクライアントデバイス。
【請求項１３】
前記クライアントデバイスは、ブラインディング数を格納するためのストレージを含み、前記プロセッサ回路は、暗号化された前記第２の検証番号を前記ブラインディング数でブラインドする、
請求項１１または１２に記載のクライアントデバイス。
【請求項１４】
クライアントデバイスからのユーザを認証するためのサーバ方法であって、前記ユーザは認証文字列へのアクセスを有し、前記認証文字列は複数の位置に複数の文字を有し、前記文字は文字セットから選択され、前記サーバ方法は、
文字／位置データのセットのサブセットから計算された第１の検証番号を格納するステップであって、前記サブセットは前記認証文字列によって示され、前記文字／位置データのセットは、前記文字セットからの文字と、認証文字列内の位置との各組み合わせに対する数字を含む、ステップと、
準同型暗号アルゴリズムに従って前記文字／位置データのセットを暗号化し、暗号化された前記セットを前記クライアントデバイスに送信するステップと、
前記クライアントデバイスから第２の検証番号を受信するステップであって、前記第２の検証番号は、暗号化された前記セットのサブセットから、暗号化された第２の検証番号を準同型的に計算することによって計算され、前記サブセットは前記認証文字列によって示される、ステップと、
前記ユーザを認証するために、前記第１の検証番号と暗号化された前記第２の検証番号との間の対応を検証するステップとを含む、
方法。
【請求項１５】
サーバデバイスに対してユーザを認証するためのクライアント方法であって、前記ユーザは認証文字列へのアクセスを有し、前記認証文字列は複数の位置に複数の文字を有し、前記文字は文字セットから選択され、前記クライアント方法は、
準同型暗号アルゴリズムに従って暗号化された文字／位置データのセットを受け取るステップであって、暗号化された前記文字／位置データのセットは、前記文字セットからの文字と、認証文字列内の位置との各組み合わせに対する数字を含む、ステップと、
暗号化された前記文字／位置データのセットのサブセットから、暗号化された第２の検証番号を準同型的に計算するステップであって、前記サブセットは前記認証文字列によって示される、ステップと、
暗号化された前記第２の検証番号を前記サーバデバイスに送信するステップとを含む、
方法。
【請求項１６】
請求項１４または１５に記載の方法をプロセッサシステムに実行させるための命令を表す一時的または非一時的データを含む、
コンピュータ可読媒体。
【国際調査報告】
2021507615.tif 000037
2021507615.tif 000038
2021507615.tif 000039