(57)【特許請求の範囲】
【請求項１】
（ａ）データ処理システムにおいて、第１のパスワードｐと第２のパスワードｑとを有するユーザから入力ｘを受け取るステップを含み、前記第１のパスワードｐ及び前記第２のパスワードｑの双方には前記データ処理システムからアクセスできないものであり、前記データ処理システムは、
（ｉ）前記第１のパスワードｐに適用された暗号ハッシュ関数ｈの値であるｈ（ｐ）、および
（ｉｉ）前記第２のパスワードｑの暗号化バージョンｑ’、にアクセスするものであり、前記暗号化が、
（１）前記第１のパスワードｐと、
（２）前記データ処理システムからアクセス可能であり、前記ユーザに知られていないデータｄ、の組み合わせに基づくものであり、さらに、
（ｂ）前記入力ｘに適用された前記暗号ハッシュ関数ｈの値であるｈ（ｘ）を前記データ処理システムが生成するステップと、
（ｃ）前記ｈ（ｘ）が前記ｈ（ｐ）と等しいときに、前記データ処理システムが前記入力ｘと前記データｄとに基づいて前記暗号化バージョンｑ’を解読して、前記ユーザに送信される前記第２のパスワードｑを取得するステップとを含み、
前記第１のパスワードｐ及び前記第２のパスワードｑによって保護されているシステムにアクセスするためには、前記ユーザには前記第１のパスワードｐ及び前記第２のパスワードｑのうちの１つのみで十分である、方法。
【請求項２】
前記データ処理システムは、前記第１のパスワードｐを永続的なメモリではなく揮発性メモリに書き込む、請求項１に記載の方法。
【請求項３】
前記データ処理システムは、前記第２のパスワードｑを永続的なメモリではなく揮発性メモリに書き込む、請求項１に記載の方法。
【請求項４】
前記データ処理システムは、前記第１のパスワードｐの暗号化バージョンｐ’にアクセスする、請求項１に記載の方法。
【請求項５】
前記暗号化バージョンｐ’は、前記第２のパスワードｑと前記データｄとに基づくものである、請求項４に記載の方法。
【請求項６】
前記データ処理システムは、前記第２のパスワードｑに適用された暗号ハッシュ関数の値にアクセスする、請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピュータ・セキュリティに関し、より詳細には、回復可能なパスワードを格納する安全な方法に関する。
【背景技術】
【０００２】
多くのオペレーティング・システムは、システム管理者（またはスーパユーザ）がコンピュータ上で複数のユーザ・アカウントを作成することができるようにする。各ユーザ・アカウントは、通常、ユーザ名と呼ばれる関連付けられた識別子と、そのアカウントでコンピュータにログインする際にユーザ名と組み合わせて提供されねばならないパスワードとを有する。
【０００３】
コンピュータ・オペレーティング・システムは、通常、永続的な記憶（例えばディスク・ファイルやディレクトリなど）にパスワード表を維持し、ユーザがコンピュータにログインしようとするときにパスワード表を調べる。悪意のあるユーザ（そのコンピュータにアカウントを持つユーザである可能性もあり、外部の「クラッカ」である可能性もある）がパスワード表にアクセスして別のユーザのパスワードを取得しようとすることもあるため、パスワード表には、通常、実際のパスワードではなく、ハッシュ化されたパスワードが格納される。ハッシュ化されたパスワードとは、パスワードに暗号ハッシュ関数が適用されるときに獲得される値である。暗号ハッシュ関数とは、第１の文字列（パスワードなど）を第２の文字列（ハッシュ化されたパスワードなど）に変換する関数ｈであり、以下の３つの特性を呈する。
（１）原像耐性：ハッシュ化されたパスワードが与えられた場合に、元のハッシュ化されていないパスワードを見つけるのが困難である（すなわち、ハッシュ化パスワードｚが与えられた場合に、ｚ＝ｈ（ｙ）であるようなｙを見つけるのが困難である）。
（２）第２原像耐性：第１のパスワードｙ１が与えられた場合に、ｈ（ｙ１）＝ｈ（ｙ２）であるような（ｙ１とは異なる）第２のパスワードｙ２を見つけるのが困難である。
（３）衝突耐性：ｈ（ｙ１）＝ｈ（ｙ２）であるような２つの異なるパスワードｙ１およびｙ２を見つけるのが困難であるべきである。
よって、悪意のあるユーザが、コンピュータのパスワード表にアクセスして、別のユーザのハッシュ化されたパスワードを取得することができる場合であっても、その悪意のあるユーザが、ハッシュ化されたパスワードから元のハッシュ化されていないパスワードを突き止めるのは極めて難しい。
【０００４】
オペレーティング・システムによっては、ユーザ・アカウントは、２つのパスワードを持つことがあり、その場合ユーザは、そのユーザ名と共にそれらのパスワードのどちらかを提供することによってログインすることができる。通常、ユーザは、自分の「１次」パスワードを忘れたときには、その「２次」パスワードを用いてログインし、１次パスワードは、デフォルトの文字列（「ｊｏｈｎ１２３」や「ｐａｓｓｗｏｒｄ」など）にリセットされる。次いで、ユーザは、デフォルトの文字列を使ってログインし、１次パスワードをしかるべく変更することができる。（パスワード表はセキュリティのためにハッシュ化されたパスワードだけを格納しているので、ハッシュ化されていない１次パスワードがそのままユーザに対して明らかにされることはない。）システムによっては、２次パスワードを、おそらく他のユーザには知られていない情報（例えば母親の旧姓、出生地、以前の住所での電話番号など）とすることもあり、他のシステムでは、２次パスワードを、１次パスワードと同様に、任意に選択される文字列とすることもある。
【０００５】
図１に、従来技術による電気通信システム１００を示す。電気通信システム１００は、図示のように相互接続された、電気通信網１０５とコンピュータ１１０とを備える。
電気通信網１０５は、コンピュータ１１０と他の装置（デスクトップ・コンピュータ、ノート型コンピュータ、サーバ、無線電気通信端末など）の間でメッセージを搬送する、公衆交換電話網（ＰＳＴＮ）やインターネットなどのネットワークである。
【０００６】
コンピュータ１１０は、そのオペレーティング・システムが、１つまたは複数のユーザ・アカウントを提供することのできるデスクトップ・コンピュータ、ノート型コンピュータ、サーバなどである。コンピュータ１１０上でアカウントを持つユーザは、入力装置（キーボードなど）を介して、あるいは電気通信網１０５を介してリモート・コンピュータからこのコンピュータにログインすることができる。ユーザは、コンピュータ１１０にログインするために有効なユーザ名／パスワードの組み合わせを提供しなければならない。
【０００７】
図２に、従来技術によるコンピュータ１１０の主な構成要素を示す。コンピュータ１１０は、図示のように相互に接続された、受信機２０１と、プロセッサ２０２と、メモリ２０３と、送信機２０４と、入力装置２０５とを備える。
【０００８】
受信機２０１は、電気通信網１０５を介してクライアント（デスクトップ・コンピュータやノート型コンピュータなど）から信号を受け取り、信号に符号化されている情報をプロセッサ２０２に転送する。
【０００９】
プロセッサ２０２は、受信機２０１から情報を受け取ることができ、メモリ２０３に格納された命令を実行することができ、メモリ２０３との間でデータの読取りおよび書込みを行うことができ、送信機２０４に情報を送ることのできる汎用プロセッサである。
【００１０】
メモリ２０３は、図３に関連して以下で説明するパスワード表を含むデータを格納することができ、実行可能命令を格納することができる。メモリ２０３は、ランダム・アクセス・メモリ（ＲＡＭ）、フラッシュ・メモリ、ディスク・ドライブ・メモリなどの任意の組み合わせとしてもよい。
【００１１】
送信機２０４は、プロセッサ２０２から情報を受け取り、この情報を符号化している信号を、電気通信網１０５を介してクライアント（デスクトップ・コンピュータ、ノート型コンピュータなど）に送る。
【００１２】
入力装置２０５は、ユーザからの入力（ユーザ名やパスワードなど）を受け取り、その入力を表す信号をプロセッサ２０２に送るキーボード、マウス、マイクロホンなどである。
【００１３】
図３に、従来技術による、メモリ２０３に格納されたパスワード表３００を示す。パスワード表３００は、３つの列と１つまたは複数の行を備え、各行は、コンピュータ１１０の１つのユーザ・アカウントに対応する。列３０１は、各ユーザ・アカウントごとのユーザ名を格納し、列３０２は、各ユーザ・アカウントごとのハッシュ化された第１のパスワード（すなわち、第１のパスワードに適用された暗号ハッシュ関数の値）を格納し、列３０３は、各ユーザ・アカウントごとのハッシュ化された第２のパスワードを格納する。
【発明の開示】
【発明が解決しようとする課題】
【００１４】
本発明は、自分の２つのパスワードの一方を忘れたユーザが、忘れたパスワードを安全に回復することができるようにするものである。特に、例示的実施形態では、２つの元のハッシュ化されていないパスワードのいずれも永続的な記憶に（例えば、ディスク・ファイルやＬＤＡＰディレクトリなどに）保存させることなく、ユーザがその２つのパスワードの一方を使ってログインした後で、他方のパスワードをユーザに明らかにする。よって、例示的実施形態は、従来技術の２つの主要な欠点、すなわち、
（ｉ）ユーザが
デフォルトのパスワードを使ってログインし、
適切なパスワードとなるはずの新規の文字列を考え出し、
パスワードを、デフォルトから新規の文字列に変更する
必要があるという不都合、および
（ｉｉ）パスワードをデフォルト値にリセットすることに起因する（特に、ユーザがデフォルトのパスワードを直ちに変更しないときの）セキュリティの危殆化
を克服するものである。
【課題を解決するための手段】
【００１５】
本発明の例示的実施形態は、従来技術のパスワード表３００に２つの列を追加したパスワード表を用いる。第１の追加列は、ユーザの第１のパスワードｐの暗号化バージョンｐ’を格納し、この暗号鍵は、
（ｉ）システムからアクセス可能（例えば、ローカル・ディスクに格納されている、ネットワークで接続されたファイル・デバイスに格納されているなど）であり、
ユーザに知られていない
データｄ（文字列、数など）と、
（ｉｉ）ユーザの第２のパスワードｑ
に基づく、上記（ｉ）と（ｉｉ）が知られているときにｐ’が解読され得るようなものである。同様に、第２の追加列も、ユーザの第２のパスワードｑの暗号化バージョンｑ’を格納し、この暗号鍵は、データｄと第１のパスワードｐに基づく、ｄとｐとが知られているときにｑ’が解読され得るようなものである。
【００１６】
例示的実施形態によれば、ユーザが、（１）ユーザ名と（２）そのユーザ名のパスワードの一方（例えばｐ）にマッチさせるための入力ｘを提供することによってログインしようとするときに、入力ｘがハッシュ化され、パスワード表内の対応するハッシュ化されたパスワードｈ（ｐ）と比較される。ｈ（ｘ）がｈ（ｐ）とマッチする場合、ユーザはログインされ、（パスワードｐと等しい確率が非常に高い）入力ｘおよびデータｄを使ってｑ’が解読され、その結果ｑがユーザに明らかにされる。同様に、ｈ（ｘ）がｈ（ｑ）とマッチする場合にも、ユーザはログインされ、（パスワードｑと等しい確率が非常に高い）入力ｘおよびデータｄを使ってｐ’が解読され、その結果ｐがユーザに明らかにされる。
例示的実施形態は、第１のデータに適用された暗号ハッシュ関数の値を格納する第１の記憶場所と、上記第１のデータの暗号化バージョンを格納する第２の記憶場所とを備える。
【発明を実施するための最良の形態】
【００１７】
図４に、本発明の例示的実施形態による電気通信システム４００を示す。電気通信システム４００は、図示のように相互接続された、電気通信網１０５とコンピュータ４１０とを備える。
【００１８】
コンピュータ４１０は、図６および７に関連して以下で説明するように、ユーザがリモート・クライアントからログインし、そのパスワードを安全に回復することができるようにするコンピュータである。
【００１９】
図５に、本発明の例示的実施形態によるコンピュータ４１０の主な構成要素を示す。コンピュータ４１０は、図示のように相互接続された、受信機５０１と、プロセッサ５０２と、メモリ５０３と、送信機５０４と、入力装置５０５と、クロック５０６とを備える。
【００２０】
受信機５０１は、よく知られているやり方で、電気通信網１０５を介してクライアント（デスクトップ・コンピュータ、ノート型コンピュータなど）から信号を受け取り、信号に符号化されている情報を、プロセッサ５０２に転送する。本明細書を読めば、当分野の技術者には、受信機５０１をどのようにして作成し、使用するかが明らかになるであろう。
【００２１】
プロセッサ５０２は、受信機５０１および入力装置５０５から情報を受け取ることができ、メモリ５０３に格納された命令を実行することができ、メモリ５０３との間でデータの読取りおよび書込みを行うことができ、図７に関連して以下で説明するタスクを実行することができ、送信機５０４に情報を送ることのできる汎用プロセッサである。本発明のいくつかの代替実施形態では、プロセッサ５０２は、専用プロセッサとしてもよい。どちらにせよ、本明細書を読めば、当分野の技術者には、プロセッサ５０２をどのようにして作成し、使用するかが明らかになるであろう。
【００２２】
メモリ５０３は、当分野でよく知られているように、図６に関連して以下で説明するパスワード表を含むデータおよび実行可能命令を格納する。メモリ５０３は、ランダム・アクセス・メモリ（ＲＡＭ）、フラッシュ・メモリ、ディスク・ドライブ・メモリなどの任意の組み合わせとしてもよく、本明細書を読めば、当分野の技術者には、どのようにしてメモリ５０３を作成し、使用するかが明らかになるであろう。
【００２３】
送信機５０４は、よく知られているやり方で、プロセッサ５０２から情報を受け取り、この情報を符号化している信号を、電気通信網１０５を介してクライアント（デスクトップ・コンピュータ、ノート型コンピュータなど）に送る。本明細書を読めば、当分野の技術者には、どのようにして送信機５０４を作成し、使用するかが明らかになるであろう。
【００２４】
入力装置５０５は、よく知られているやり方で、ユーザからの入力（ユーザ名、パスワードなど）を受け取り、その入力を表す信号をプロセッサ５０２に送るキーボード、マウス、マイクロホンなどである。
【００２５】
クロック５０６は、よく知られているやり方で、現在の日時をプロセッサ５０２に送る。
図６に、本発明の例示的実施形態による、メモリ５０３に格納されたパスワード表６００を示す。パスワード表６００は、６つの列と１つまたは複数の行を備え、各行は、コンピュータ４１０のユーザ・アカウントに対応する。列６０１は、パスワード表３００の列３０１と同様に、各ユーザ・アカウントごとのユーザ名を格納し、列６０２は、パスワード表３００の列３０２と同様に、各ユーザ・アカウントごとのハッシュ化された第１のパスワードを格納し、列６０３は、パスワード表３００の列３０３と同様に、各ユーザ・アカウントごとのハッシュ化された第２のパスワードを格納する。
【００２６】
列６０４は、各ユーザの第１のパスワードｐの暗号化バージョンｐ’を格納し、この暗号鍵は、（ｉ）コンピュータ４１０からアクセス可能であるが、ユーザには知られていないデータｄと、（ｉｉ）ユーザの第２のパスワードｑに基づく、上記（ｉ）と（ｉｉ）の両方が知られているときにｐ’が解読され得るようなものである。このようなやり方で第１のパスワードｐを暗号化することにより、コンピュータ４１０のシステム管理者も、コンピュータ４１０にアクセスすることのできるクラッカも、（容易に）列６０４の値を解読し、ユーザの第１のパスワードを獲得することができない。これは、ユーザの第２のパスワードが、コンピュータ４１０上に、ハッシュ化され、暗号化された形でのみ格納され、（システム管理者またはクラッカに発見された場合でも）データｄの値だけでは、ｐ’を解読するのに不十分であるためである。
【００２７】
列６０５は、各ユーザの第２のパスワードｑの暗号化バージョンｑ’を格納し、この暗号鍵は、データｄと第１のパスワードｐに基づくものである。上記と同じ理由で、このようなやり方で第２のパスワードｑを暗号化すれば、悪意のあるユーザがデータｄの値を発見した場合であっても、その悪意のあるユーザがｑ’を（容易に）解読することが防止される。
【００２８】
図７に、本発明の例示的実施形態による、コンピュータ４１０の主なタスクの流れ図を示す。図７に示すどのタスクが同時に、または図示されているのと異なる順序で実行され得るかは、当分野の技術者には明らかであろう。
【００２９】
タスク７１０で、コンピュータ４１０は、ユーザ名、および第１のパスワードｐとマッチさせるための入力ｘを受け取る。
タスク７２０で、コンピュータ４１０は、入力ｘに適用された暗号ハッシュ関数ｈの値である、ｈ（ｘ）を生成する。
【００３０】
タスク７３０で、コンピュータ４１０は、列６０２とユーザ名に対応する行の所の表６００のエントリの値を読み取る。
タスク７４０で、コンピュータ４１０は、そのエントリの値がｈ（ｘ）と等しいかどうかチェックする。等しい場合、タスク７５０で実行が継続し、そうでない場合、図７の方法が終了する。
【００３１】
タスク７５０で、コンピュータ４１０は、入力ｘとデータｄに基づいて、列６０５とユーザ名の行の所の表６００のエントリ（すなわちｑ’）を解読する。
タスク７６０で、コンピュータ４１０は、解読したエントリ（すなわちパスワードｑ）を、ｘが入力された装置に送る。タスク７６０の後で、図７の方法は終了する。
【００３２】
例示的実施形態は、オペレーティング・システムのパスワードの状況で開示されているが、当分野の技術者には、どのようにして他の種類の（例えば、Ｗｅｂサイト、アプリケーション、データベースなどへのアクセスのための）パスワードについて本発明の実施形態を作成し、使用するかが明らかであろう。同様に、例示的実施形態は、２つのパスワードのユーザ・アカウントの状況で開示されているが、当分野の技術者には、どのようにして３つ以上のパスワードを有するユーザ・アカウントについて本発明の実施形態を作成し、使用するかも明らかであろう。
【００３３】
前述の実施形態は、単に、本発明を例示するためのものにすぎず、当分野の技術者によれば、本発明の範囲を逸脱することなく、前述の実施形態の多くの変形が考案され得ることを理解すべきである。例えば、本明細書では、本発明の例示的実施形態の十分な説明および理解を提供するために、多くの具体的詳細が提供されている。しかしながら、本発明がそれらの詳細の１つまたは複数がなくとも、あるいは他の方法、材料、構成要素などを用いても実施され得ることを、当分野の技術者は理解するであろう。
【００３４】
さらに、場合によっては、例示的実施形態の態様を曖昧にすることを回避するために、よく知られた構造、材料、または動作が詳細に図示されず、説明されないこともある。図に示す様々な実施形態は例示のためのものであり、必ずしも一定の縮尺で描かれているとは限らないことが理解されるものである。本明細書全体を通して、「一実施形態」、「ある実施形態」または「いくつかの実施形態」と言う場合、（１つまたは複数の）実施形態との関連で説明する特定の特徴、構造、材料、または特性が、必ずしも本発明のすべての実施形態とは限らないが、少なくとも１つの実施形態に含まれていることを意味するものである。したがって、本明細書全体の様々な箇所において「一実施形態において」、「ある実施形態において」または「いくつかの実施形態において」という句が現れる場合、必ずしもすべてが同じ実施形態を指すものであるとは限らない。さらに、特定の特徴、構造、材料、または特性は、１つまたは複数の実施形態において、任意の適切なやり方で組み合わされてもよい。したがって、かかる変形は、添付の特許請求の範囲およびその均等物に含まれるものである。
【図面の簡単な説明】
【００３５】
【図１】従来技術による電気通信システムを示す図である。
【図２】従来技術による、図１に示すコンピュータ１１０の主な構成要素を示す図である。
【図３】従来技術による、図２に示すメモリ２０３に格納されたパスワード表を示す図である。
【図４】本発明の例示的実施形態による電気通信システムを示す図である。
【図５】本発明の例示的実施形態による、図４に示すコンピュータ４１０の主な構成要素を示す図である。
【図６】本発明の例示的実施形態による、図５に示すメモリ５０３に格納されたパスワード表を示す図である。
【図７】本発明の例示的実施形態による、コンピュータ４１０の主なタスクを示す流れ図である。
【図１】
0004734512.tif 000002
【図２】
0004734512.tif 000003
【図３】
0004734512.tif 000004
【図４】
0004734512.tif 000005
【図５】
0004734512.tif 000006
【図６】
0004734512.tif 000007
【図７】
0004734512.tif 000008