(57)【要約】      （修正有）【課題】間違って打ち込まれたパスワードを許す認証システムを可能にする解決策を提供する。【解決手段】ユーザは、ユーザ装置においてパスワードを入力しＳ３１、ユーザ装置のプロセッサがそのパスワードを受け取りＳ３１、参照パスワードに適用され、好ましくは暗号化一方向関数である導出関数から導出された、格納された導出値を検索しＳ３３、変数として導出値をとる関数を使用して受け取ったパスワードをスクランブルしてＳ３５、スクランブルされたパスワードを得て、スクランブルされたパスワードを認証サーバに送信するＳ３６。格納された導出値が検索できない場合、プロセッサは導出関数を使用して受信したパスワードから導出値を生成するＳ３４。パスワードを新しいパスワードの生成中に受信した場合、プロセッサは、新しいパスワードから導出値を生成し、格納する。装置は、認証サーバを備える。【選択図】図３
2016004581.tif 000002
【特許請求の範囲】
【請求項１】
パスワードを処理する装置であって、
前記パスワードを受け取る手段と、
参照パスワードに適用される導出関数によって生成された、格納された導出値を検索する手段と、
変数として前記導出値をとるスクランブル関数を用いて前記パスワードをスクランブルして、スクランブルされたパスワードを得る手段と、
前記スクランブルされたパスワードを認証サーバに送信する手段と、
を備えた、前記装置。
【請求項２】
前記格納された導出値を検索できない場合、前記導出関数を用いて、受け取った前記パスワードから導出値を生成する手段をさらに備える、請求項１に記載の装置。
【請求項３】
新しいパスワードの生成中に前記パスワードを受け取った場合、前記装置は、前記導出関数を使用して、前記新しいパスワードから導出値を生成し、生成後、前記導出値を格納する手段をさらに備える、請求項１に記載の装置。
【請求項４】
前記認証サーバをさらに備える、請求項１に記載の装置。
【請求項５】
前記導出関数は、暗号化一方向関数である、請求項１に記載の装置。
【請求項６】
パスワードプロポーザルを処理する方法であって、ユーザ装置のプロセッサにおいて、
前記パスワードを受け取るステップと、
参照パスワードに適用される導出関数によって生成された、格納された導出値を検索するステップと、
変数として前記導出値をとるスクランブル関数を用いて前記パスワードをスクランブルして、スクランブルされたパスワードを得るステップと、
前記スクランブルされたパスワードを認証サーバに送信するステップと、
を含む、前記方法。
【請求項７】
前記格納された導出値を検索できない場合、前記受け取ったパスワードから導出値を生成するために前記導出関数を使用するステップをさらに含む、請求項６に記載の方法。
【請求項８】
新しいパスワードの生成中に前記パスワードを受け取った場合、前記導出関数を使用して、前記新しいパスワードから導出値を生成し、生成後、前記導出値を格納するステップをさらに含む、請求項６に記載の方法。
【請求項９】
前記導出関数は、暗号化一方向関数である、請求項６に記載の方法。
【請求項１０】
請求項６乃至９の少なくとも１つに従う方法の前記ステップを実装するための、プロセッサによって実行可能なプログラムコード命令を備えたコンピュータプログラム。
【請求項１１】
非一時的コンピュータ可読媒体に格納され、および請求項６乃至９の少なくとも１つに従う方法の前記ステップを実装するための、プロセッサによって実行可能なプログラムコード命令を備えたコンピュータプログラムプロダクト。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般にコンピュータシステムに関し、より詳細には、そのようなシステムにおけるパスワードの取り扱い方に関する。
【背景技術】
【０００２】
このセクションは、技術の種々の態様を読者に紹介することを目的とし、以下に記載および／または請求された本開示の種々の態様に関連している。この議論は、読者に背景情報を提供し、本開示の種々の態様のより良い理解を促す助けとなると信じている。従って、これらの記述は、従来技術の自白としてではなく、この観点から読まれると解すべきである。
【０００３】
パスワードは、今日のコンピュータシステムの至る所に存在し、例えば、ログオンのためにユーザを認証する。その一般的な定義において、パスワードは、予め定義されたアルファベット内においてとられた一連のシンボル（例えば、ＰＩＮコードの４つの数値）である。パスワードは、一般的に長いほど、特にそのパスワードが大文字、小文字、数字、ならびに＆、”、および＃などの文字の混合である場合、より強力になる。しかしながら、より複雑なパスワードは、特に、スクリーン上に打ち込んだ文字が現れないので、一般に正確に打ち込むのがより複雑になる。加えて、ユーザは１日に何度もパスワードを入力することを強いられるので、パスワードはとても早く打ち込まれる。そのため、入力されたパスワードに打ち込みエラーが含まれ得ることは驚くことではない。さらに、スマートフォンおよびタブレット等のタッチスクリーンベースの装置は、パスワードを含む文字を入力するために、仮想キーボードを使用する。この種の入力には、打ち込みエラーが高い頻度で起こり得る。
【０００４】
従来技術は、打ち込みエラーに強いパスワードを提供する多くの解決策を含む。
【０００５】
プールパスワードバリエータは、パスワードにおいて可能な全てのバリエーションを有するファイルを作り、例えば文字の欠落、文字の重複、余分な文字、順序の間違い、および大文字小文字の間違い(wrong case)など、３つのタイプミスをエミュレートする。Andrew MehlerおよびSteven Skienaは、Improving Usability Through Password-Corrective Hashingにおいて異なる解決策を提供する。これらの解決策は、ハッシングする前にパスワードを処理する。例えば、入力パスワードをアルファベット順にソートして、転位を修正する。その結果として、僅かに綴りの間違えたパスワードは、正しいパスワードと同じハッシュ値にハッシングするだろう。１つ又は２つのタイプミスを遥かに超えるものとは異なるパスワードを含む、多くの異なるパスワードが同じ値にハッシングするので、そのような「許容可能な」パスワードの増加は、パスワードの強度を劇的に低下させることは明らかである。
【０００６】
米国特許７３７３５１６号および特開２００５−２０８７６３号における解決策は、「パスワード空間」において、すなわち、プレーンテキストで、入力パスワードと格納されたパスワードとを比較して、前者が後者に「類似」するかを判定する。しかしながら、これらの解決策はパスワードのプレーンテキスト版の比較を必要とするので、プレーンテキストでパスワードを格納することは、明らかなセキュリティ上の理由で一般的に許容されない現実のシステムにおいて、それらを使用することはできない。一般的に、認証は、パスワードのハッシュ版を格納するサーバによって管理されて、ユーザによって打ち込まれたパスワードプロポーザル(password proposal)のハッシュ版と比較される。これは、パスワードファイルの盗難をより価値の低いものにする。
【０００７】
特開２００７−１１４９７６号は、特に、間違って打ち込まれたパスワードが入力された回数を数え、かつ、回数が多い、例えば、１０回のとき、間違って打ち込まれたパスワードを承認可能なパスワードとして格納する機能を提供するＰＣ等の装置を教示している。当業者は、間違って打ち込まれるパスワードの追加を制御するように見えないので、この解決策が安全でないことを理解するだろう。間違ったパスワードが１０回入力されたとき、それは承認可能なパスワードとして格納され、それは、ハッカーがパスワードを１０回入力するだけで承認されたパスワードを手にすることを意味する。
【０００８】
従って、従来技術の欠点を持たずに間違って打ち込まれたパスワードを許す認証システムを可能にする解決策の必要性が存在することが十分理解される。本開示では、そのような解決策を提供する。
【発明の概要】
【０００９】
第１の態様では、パスワードを処理する装置を対象として開示する。その装置は、上記パスワードを受け取る手段と、参照パスワードに適用される導出関数によって生成された、格納された導出値を検索する手段と、変数として上記導出値をとるスクランブル(scrambling)関数を用いて上記パスワードをスクランブルして、スクランブルされたパスワードを得る手段と、上記スクランブルされたパスワードを認証サーバに送信する手段と、を備える。
【００１０】
第１の実施形態では、上記格納された導出値を検索できない場合、上記導出関数を用いて、上記受け取ったパスワードから導出値を生成する手段をさらに備える。
【００１１】
第２の実施形態では、新しいパスワードの生成中に上記パスワードを受け取った場合、上記導出関数を使用して、上記新しいパスワードから導出値を生成し、生成後、上記導出値を格納する手段をさらに備える。
【００１２】
第３の実施形態では、上記装置は上記認証サーバを備える。
【００１３】
第４の実施形態では、上記導出関数は、暗号化一方向関数である。
【００１４】
第２の態様では、以下のステップでパスワードプロポーザルを処理する方法を対象として開示する。その方法は、上記パスワードを受け取るステップと、参照パスワードに適用される導出関数によって生成された、格納された導出値を検索するステップと、変数として上記導出値をとるスクランブル関数を用いて上記パスワードをスクランブルして、スクランブルされたパスワードを得るステップと、上記スクランブルされたパスワードを認証サーバに送信するステップと、を有する。
【００１５】
第１の実施形態では、上記格納された導出値を検索できない場合、上記受け取ったパスワードから導出値を生成するために上記導出関数を使用する。
【００１６】
第２の実施形態では、新しいパスワードの生成中に上記パスワードを受け取った場合、導出値は、上記導出関数を使用して上記新しいパスワードから生成され、その後、格納される。
【００１７】
第３の実施形態では、上記導出関数は、暗号化一方向関数である。
【００１８】
第３の態様では、第２の態様の方法の上記ステップを実装するための、プロセッサで実行可能なプログラムコード命令を備えたコンピュータプログラムを対象として開示する。
【００１９】
第４の態様では、プロセッサによって実行されるとき、上記第２の態様の任意の実施形態の上記方法を行う命令を格納する非一時的なコンピュータプログラムサポートを対象として開示する。
【図面の簡単な説明】
【００２０】
本開示の前述の特徴は、これから、添付の図を参照しながら非限定的例示を目的として記述される。
【図１】本開示が実施される例示的システムを示す図である。
【図２】前述の実施形態に従うパスワード生成の例示的方法を示す図である。
【図３】前述の実施形態に従うパスワード認証の例示的方法を示す図である。
【発明を実施するための形態】
【００２１】
本開示は特にパスワードの処理について言及するが、それはここで非限定的例として用いられる。しかしながら、他の種類のデータをパスワードに代えて用いることができると理解されるべきである。
【００２２】
概念は、導出関数を用いて参照パスワードから導出値を生成することであり、導出関数は、セキュリティを拡張するために、例えば、鍵(keyed)ハッシュ関数または対称若しくは非対称暗号化関数等の暗号化一方向関数である。
【００２３】
導出値は、その後、パスワードを処理するために使用される。特に有利な実施形態では、パスワードは、導出値を変数としてとり、かつ、参照パスワード値と比較されたとき、スクランブルされたパスワードと参照パスワードとの間の、特に文字における差異が検出されるように、入力パスワードをスクランブルする「抵抗関数」を使用して処理される。言い換えると、入力パスワードに打ち込みエラーがあるか判定することができ、いくつのエラーが検出され得るかは検出方法に依存する。
【００２４】
検出方法の第１の例は、ｎ個の文字ｐ1−ｐnを含むパスワードＰをとり、キーとして導出値を使用してｎ個のＨＭＡＣ値を生成することであり、ＨＭＡＣ値ｊ（ｊは｛１、．．．、ｎ｝）は、ｐjより小さいｐ1−ｐnから生成される。ｎ個のＨＭＡＣ値は、その後、参照パスワードから同じ方法で生成された多数のＨＭＡＣを格納する認証サーバに送信される。入力パスワードに関する少なくとも１つのＨＭＡＣが参照パスワードに関する少なくとも１つのＨＭＡＣと一致する場合、その後、入力パスワードは、正しいとみなされる。この方法は、パスワードにおける打ち込みエラーをいくつでも（最大ｎまで）許容するよう一般化され得る。
【００２５】
検出方法の第２の例は、ｎ個の文字ｐ1−ｐnを含むパスワードＰをとり、シャッフルアルゴリズムにおいて、および文字置換暗号において、それぞれのキーとして導出値を使用することである。その結果の値は、それを入力参照パスワードから同様に生成された「スクランブルされた」参照パスワードと比較して、入力パスワードが正しいか判定する認証サーバに送信される。許容される打ち込みエラーの数は、スクランブリング方法を修正する必要なく、事前に設定することができる。
【００２６】
図１は、本開示が実装され得る例示的システムを示す。このシステムは、コンピューティングデバイス（「コンピュータ」）１１０および認証サーバ１２０を備える。コンピュータ１１０および認証サーバ（以後「サーバ」）１２０は、計算を行うことのできる、例えば標準のパーソナルコンピュータ（ＰＣ）またはワークステーションなどの、あらゆる種類の適切なコンピュータまたは装置である。コンピュータ１１０およびサーバ１２０は、少なくとも１つのプロセッサ１１１、１２１と、内部または外部ＲＡＭメモリ１１２、１２２と、ユーザと対話するためのユーザインタフェース１１３と、コネクション１３０を介して他の装置と対話するための第２のインタフェース１１４、１２４と、をそれぞれ備えることが好ましい。コンピュータ１１０およびサーバ１２０は、各々、プロセッサによって実行されたとき、後述する任意のパスワード方法を行う命令を格納するデジタルデータサポート１４０からソフトウェアプログラムを読み込むためのインタフェースも備えることが好ましい。当業者は、例示された装置が、明確にするために非常に単純化されていること、および、現実の装置は、例えば永続的記憶装置などの機能を追加で備えることができることを十分理解されるだろう。当業者は、パスワードが単にコンピュータ自身へのアクセスを提供するものである場合、本開示もコンピュータ１１０だけで実装されることができ、この場合、サーバ１２０はコンピュータにおいて実装されることは理解されるだろう。
【００２７】
コンピュータ１１０は、導出値にアクセスするユニット１１５をさらに備える。導出値はコンピュータ１１０の内部メモリに格納されることができる。その場合、ユニット１１５を単純な読み込み命令によってプロセッサ１１１内に実装することができる。導出値は、例えば、スマートカードなどのユニット（図示せず）に格納されることもでき、この場合、導出値を読むことができるように、ユニット１１５をプロセッサおよびスマートカードインタフェースにおいて実装することができる。
【００２８】
プロセッサ１１１は、ユーザによって入力されたまたはユーザがパスワードを入力するさらなる装置から受信されたパスワードを処理して、後述するようにスクランブルされたパスワードを得るように構成される。ユニット１１５が導出値にアクセスすることができる場合、その後、この導出値はスクランブルされたパスワードを得るために使用される。他方で、ユニット１１５が導出値にアクセスできない場合−これは例えばスマートカードが存在しない場合に起き得る−、その後、プロセッサ１１１は入力パスワードから導出値を先ず生成して、生成された導出値を使用してパスワードをスクランブルする。
【００２９】
格納された導出値は、打ち込みエラーが無いパスワードの入力で格納されたので、それは正しい導出値であることが理解されるであろう。これは、例えば、格納された導出値が、パスワードの作成中に生成され、格納された場合である。この場合、入力パスワードにおける打ち込みエラーは訂正され得る。しかしながら、導出値が入力パスワードから生成される場合、その後、導出値は、入力パスワードが間違いである場合、間違いになり、これは、スクランブルされたパスワードがほぼ確実に間違いになり、打ち込みエラーが訂正されないことを意味する。これは、打ち込みエラーは、導出値を検索できる場合（例えばスマートカードが存在する場合など）には訂正することができる一方、パスワードは、導出値にアクセスできない場合、１００％正しくなければならないことを意味する。
【００３０】
図２は、好ましい実施形態によるパスワード生成の例示的方法を示す。パスワードはこの例において使用されるだけであるが、一方で対応するユーザ名は少なくともいくつかの実装において使用されるであろう。
【００３１】
第１のステップにおいて、ユーザは、Ｓ２１で、コンピュータ１１０のユーザインタフェース１１３を用いて新しいパスワードを入力する。その後、Ｓ２２で、コンピュータ１１０は新しいパスワードに対して導出関数を使用して、説明したように導出値を得る。
【００３２】
コンピュータは、Ｓ２３で、導出値を格納することができるか−望ましくはユーザの希望に沿うものか−確認する。これは、例えば、スマートカードが、その実施形態に存在しない場合には不可能である。コンピュータは、Ｓ２４で、可能であれば導出値を格納し、そうでなければ行わない。
【００３３】
その後、コンピュータは、Ｓ２５で、プロポーザルについて導出値を有する抵抗関数を使用してスクランブルされた新しいパスワードを得て、それをＳ２６で格納用のサーバ１２０に送信する。当業者は、所謂ソルト(salts)および暗号化／認証−例えば、国際公開２００６／０４８０４３号に記載されたセキュア認証チャネル(SAC: Secure Authenticated Channel)−を使用して、サーバ１２０への送信中はスクランブルされた新しいパスワードを保護することが可能であり、好ましくさえあるが、このことは当業者にはよく知られており、本開示の範囲を超えるので記載しないことは理解されるだろう。
【００３４】
サーバ１２０は、Ｓ２７で、スクランブルされた新しいパスワードを受信し、今後の使用のためにスクランブルされた参照パスワードとして、それを格納する。
【００３５】
図３は、前述の実施形態に従うパスワード認証の例示的方法を示す。図２のように、パスワードはこの例において使用されるだけである。
【００３６】
第１のステップにおいて、ユーザは、Ｓ３１で、コンピュータ１１０のユーザインタフェース１１３を使用してパスワードプロポーザルＰ（以後、プロポーザル）を入力する。コンピュータは、Ｓ３２で、導出値にアクセスできるか確認する。これは、例えば、その実施形態においてスマートカードが存在しない場合、不可能である。コンピュータは、Ｓ３３で、可能な場合、導出値を検索し、そうでない場合には、Ｓ３４で、プロポーザルにおいて導出関数を使用して、説明したように導出値を得る。
【００３７】
コンピュータは、Ｓ３５で、プロポーザルにおいて導出値を有する抵抗関数を使用してスクランブルされたプロポーザルを得て、それをＳ３６で認証用のサーバ１２０に送信する。当業者は、図２のように、サーバ１２０への送信中はプロポーザルを保護することが可能であり、好ましくさえあることは理解されるだろう。
【００３８】
サーバ１２０は、スクランブルされたプロポーザルを受信し、スクランブルされたプロポーザルおよびスクランブルされた参照パスワードを比較して、Ｓ３７で、実装された検出方法に従ってプロポーザルの正しさを判定する。この場合、サーバは、Ｓ３８で、ユーザを認証し、この結果に対する通知を出力する。そうでなければ、ユーザは認可されず（すなわち、認証されず）、好ましくは、このことを通知され、ユーザがプロポーザルを入力する新たな試みを提供されることを可能にする。
【００３９】
簡略化のために図２及び３は、「スクランブルされた新しいパスワード」および「参照パスワード」の単体を使用するが、例えば、第１の検出方法が使用される場合、複数のそれらも存在することは理解されるだろう。
【００４０】
本開示は、導出値が存在するなら、打ち込みエラーに強いパスワードシステムを提供することができることが理解されるだろう。
【００４１】
明細書、（該当する場合）請求項および図面に記載された各特徴は、独立に、または、適切な組み合わせにおいて提供され得る。ハードウェアにおいて実装されるとして記載された特徴は、ソフトウェアとしても実装することができ、逆も同じである。請求項に現れる参照番号は説明のみを目的とするもので、請求項の範囲を限定する効果を持たないものとする。
【図１】
2016004581.tif 000003
【図２】
2016004581.tif 000004
【図３】
2016004581.tif 000005
【外国語明細書】
2016004581000001.pdf