(57)【特許請求の範囲】
【請求項１】
それぞれが１つのパスワードを有する正規ユーザの選択集団による機密情報へのアクセスを制御するパスワード情報を管理するための装置であって、前記機密情報はファイルキーで暗号化されてメモリ内に記憶されるように成してあり、前記装置が、
前記正規ユーザのそれぞれのためのエントリを有する第１のテーブルを前記メモリ内に作成し、各エントリには対応する正規ユーザのパスワードの暗号化ハッシュを含むようにするための手段と、
有効な選択集団のそれぞれのためのエントリを有する第２のテーブルを前記メモリ内に作成し、各エントリには対応する選択集団に含まれる正規ユーザのパスワードの組み合わせ、及び該パスワードの暗号化ハッシュを用いて暗号化されたファイルキーを含むようにするための手段と、
ユーザのグループから複数のパスワードを受信するための手段と、
受信したパスワードの暗号化ハッシュを生成して前記第１のテーブルのエントリと比較し、一致したパスワードの組み合わせを前記第２のテーブルのエントリに含まれる組み合わせと比較することにより、前記グループが有効な選択集団を構成するかどうかを判定するための手段と、
前記グループが有効な選択集団を構成する場合に前記受信したパスワードの暗号化ハッシュを用いて前記ファイルキーを復号するための手段と
を含む装置。
【請求項２】
正規ユーザの選択集団による機密データへのアクセスを制御するための装置であって、
ファイルキーで暗号化された機密情報、各正規ユーザのパスワードの第１の暗号化ハッシュを有する第１のテーブル、及び各選択集団に含まれる正規ユーザのパスワードの組み合わせ及び該パスワードの、前記第１の暗号化ハッシュとは異なる第２の暗号化ハッシュの組み合わせによって暗号化されたファイルキーを有する第２のテーブルを記憶するメモリと、
ユーザのグループから複数のパスワードを受信するための手段と、
受信したパスワードの第１の暗号化ハッシュを生成して前記第１のテーブルの内容と比較し、一致すれば、前記受信したパスワードの組み合わせを前記第２のテーブルに記憶されている組み合わせと比較することにより、前記グループが正規ユーザの有効な選択集団を構成するかどうか判定するための手段と、
前記グループが有効な選択集団を構成する場合に該選択集団に含まれる正規ユーザのパスワードの第２の暗号化ハッシュを用いて前記ファイルキーを復号するための手段と
を含む装置。
【請求項３】
前記ファイルキーが、前記第２の暗号化ハッシュの組み合わせを暗号的にハッシュしたパスワードキーによって暗号化されており、前記判定するための手段は、前記受信したパスワードから前記パスワードキーを生成して前記ファイルキーを復号する請求項２に記載の装置。
【請求項４】
前記ファイルキーと前記パスワードキーの排他的論理和を取ることにより前記ファイルキーが前記パスワードキーで暗号化される、請求項３に記載の装置。
【請求項５】
入力手段、計算手段及び記憶手段を有するコンピュータにおいて、正規ユーザの選択集団による機密データへのアクセスを制御するための方法であって、前記記憶手段は、ファイルキーで暗号化された機密情報、各正規ユーザのパスワードを第１の暗号化ハッシュ技術でハッシュした第１の暗号化ハッシュを有する第１のテーブル、並びに各選択集団に含まれる正規ユーザのパスワードの組み合わせ及び該パスワードを、前記第１の暗号化ハッシュ技術とは異なる第２の暗号化ハッシュ技術でハッシュした第２の暗号化ハッシュの組み合わせによって暗号化されたファイルキーを有する第２のテーブルを記憶し、前記方法が、
Ａ．前記入力手段がパスワードを受信するステップと、
Ｂ．前記計算手段が前記パスワードを前記第１の暗号化ハッシュ技術でハッシュするステップと、
Ｃ．前記計算手段がハッシュしたパスワードと前記第１の暗号化ハッシュとを比較するステップと、
Ｄ．ステップＣにおいて一致が検出された場合に、前記計算手段が前記パスワードを前記第２の暗号化ハッシュ技術で暗号的にハッシュするステップと、
Ｅ．前記計算手段が、ステップＣで一致したパスワードの組み合わせを前記第２のテーブルに記憶されている組み合わせと比較することにより選択集団が得られたかどうか調べるステップと、
Ｆ．前記計算手段が、前記第２の暗号化ハッシュ技術でハッシュしたパスワードの組み合わせを前記第２の暗号化ハッシュ技術でハッシュすることによりパスワードキーを計算し、ステップＥで選択集団が得られた場合には、前記パスワードキーを用いて前記ファイルキーを復号するステップと、
を含む方法。
【請求項６】
ステップＥで選択集団が得られなかった場合には、ステップＡ乃至ステップＤが反復される請求項５に記載の方法。
【発明の詳細な説明】
発明の分野
本発明はコンピュータのセキュリティ（security）に関し、さらに詳しくは協調してパスワードを使用する多数ユーザにより暗号化情報を保護し管理することの出来るシステムに関する。
発明の背景
多くのコンピュータシステムではある種のセキュリティを用いて不正使用を防止している。大半のシステムではこのセキュリティは特定企業についてユーザごとに１つのパスワードの形をなしている。パスワードは従来、ユーザだけが知っている恣意的な文字の組み合わせである。文字の組合わせは一般にシステム内でビットの組み合わせとして符号化されて、システムへのログイン並びに特定のファイルの機密情報へのアクセスを制御するために使用される。
ある種のシステムでは、ファイル内の機密情報にアクセスするために２人又は３人以上のユーザが協調して動作しなければならないようにすることでさらにセキュリティを提供している。このようなシステムでは、情報にアクセスするためにはユーザのグループが単一のセッションで全員正しいパスワードを入力しなければならない。この種の操作は、それを有効にするためには、２人の署名（おそらくは従業員と従業員の上司）が必要となるような核兵器の発射や経済文書で公知となっているプロトコルと同様である。
このような多数ユーザ・システムでの問題は、同一情報へのアクセスに協調動作が必要とされる場合、ファイルへの協調アクセスに必要なユーザの一人がパスワードを忘れてしまうか、又はパスワードをだれにも伝えないまま退社してしまい、それによって他の残ったユーザが機密情報へアクセスできなくなる危険が存在することである。多くのシステムでは、情報へのアクセスに必要な全ユーザが揃っていない場合でもセキュリティ・システムを無視して情報へのアクセスを得ることが可能である。しかし、情報を暗号化することによりその情報を機密化しているような暗号システムでは、パスワードが全部なければ情報の復号はできないことになる。さらに、ファイルにアクセスするために必要なユーザ全員を集めるのが困難になることが多いことから、数名のユーザが協調動作する必要のある方法は使い勝手が悪いことが多い。
これらの問題を回避するための１つのメカニズムはユーザ全部のグループのうちの部分集合（subset）又は選択集団（quorum）による機密情報へのアクセスを許容することである。例えば、５名のユーザがいる場合、５名のユーザのうちのだれか２人が同時にパスワードを入力すると機密データにアクセスできる。したがって、一人のユーザがパスワードを忘れた場合、会社を辞めた場合、又は単に利用できない場合、データにアクセスするためには残りのユーザからまだ選択集団を形成することができる。この方法はパスワードの紛失又は忘却に対して特別な注意を払う必要がないので暗号化システムでうまく機能する。
このようなシステムにおいて、ユーザ名を入力したときに、パスワード・プロンプトが表示されるが二以上のパスワードが要求されることになる。パスワードを入力したら、一人又はそれ以上のユーザが離れて残ったユーザに作業をまかせるか、又はセキュリティ制限が必要な場合、作業が完了しパスワードが「クリアされる」まで全ユーザが（管理上）残り続ける必要がある。どちらかの場合でも、有効パスワードを所持して会社を辞めたユーザは他の正規ユーザの協調を得ることができない限りパスワードが使いものにならないことが分かる。
このような選択集団システムでの１つの問題はパスワード入力が厄介になることである。一般にそれぞれのユーザが自分の名前とパスワードを入力する必要がある。次にパスワードが組み合わされて、アクセスファイルに格納されている正規の組み合わせに対してその組み合わせが検証される。しかし、数名のユーザがパスワードを入力しなければならないときに、最後の人がパスワード入力に失敗した場合、全てのユーザがパスワードを再入力しなければならないことが多い。
選択集団システムは維持管理の面でも問題がある。例えば、可能なグループの大きさ又は構成を変更するためには、選択集団パスワードの組み合わせを形成するパスワードの組み合わせを取得する何らかの方法を提供しなければならない。典型的には、選択集団グループの大きさと構成に変更を加える場合、又はユーザが追加された場合、若しくは削除された場合に、全ての正規ユーザが自分のパスワードを再入力する必要がある。
したがって、暗号化システムで有用であって、簡単に管理でき、パスワードを忘れた場合に復旧できるセキュリティ・システムが必要とされている。又パスワード入力が簡略化されたセキュリティ・システムも必要とされている。
発明の要旨
本発明の原理によれば、暗号化されていないヘッダファイルと暗号化されたデータファイルとを使用することによりセキュリティ・システムが実現される。データファイルには機密化しようとするデータに加えて暗号でハッシュしたパスワードのリストが含まれる。データファイル内容は単一のファイルキーで暗号化される。暗号化されないヘッダファイルには２つのテーブルが含まれる。第１のテーブルは正規ユーザの名前とこれに対応するハッシュされたパスワードのリストで、パスワードは第２の、データファイルでハッシュされたパスワードとは別の、ハッシュ技術を用いてハッシュされる。第２のテーブルはハッシュしたパスワードのハッシュされた組み合わせリストであり、組み合わせは正規ユーザの選択集団に対応し、パスワードはデータファイルに格納されているパスワードと同じ技術を用いてハッシュされる。リストでのそれぞれのハッシュされた組み合わせもファイルキーを暗号化するためのパスワードキーとして使用される。
システム使用中、正規ユーザは、ハッシュされたときに第１のテーブルで発見できるパスワードを入力しなければならない。入力したパスワードが第１のテーブルで見つかると、チェックを行って、選択集団を形成するパスワードを十分な正規ユーザが入力したか判定する。選択集団が存在する場合には、選択集団内のユーザのパスワードがデータファイル内のパスワードに使用されたハッシュ技術でハッシュ化され、組み合わされてさらにハッシュされてパスワードキーを形成する。次に、ファイルキーはパスワードキーで復号してファイルを復号するのに使用できる。ファイルの保護部分にあるハッシュされたパスワードを用いて、全てのユーザが自分のパスワードを再入力する必要なしに、パスワードリストを管理できる。
暗号化されていないファイルへのアクセスが得られた者でもパスワード自体は入手できない。同様に、暗号化ファイルへアクセスできた者はハッシュされたパスワードを入手できるが、パスワードを直接取得することはできない。ユーザが同一パスワードを幾つかのファイルで使用するのはあまり一般的でないので、本発明の構成により、ユーザが何らかのパスワードを入手できないようにし、又これを使用して他のファイルへ不正にアクセスを得ることもできないようにできる。
【図面の簡単な説明】
図１は、本発明で使用するのに適したパーソナルコンピュータ・システムのブロック図である。
図２は、本発明の原理にしたがって機密化されたデータファイルの内容の幾つかを示す模式図である。
図３は、入力値の暗号ハッシュを実行するための装置を示す模式図である。
図４は、図３に図示したハッシュ機構とは異なる入力値の暗号ハッシュを実行するための装置を示す模式図である。
図５は、図２に図示してあるデータファイルの暗号化に使用されるファイルキーをユーザの選択集団の動作により取得するための実際的な方法を示すフローチャートである。
図６は、図２のデータファイルを管理するための実際的な方法を示すフローチャートである。
実施態様の詳細な説明
図１は、本発明のセキュリティ・システムが動作し得る、例えばＩＢＭ社ＰＳ／２コンピュータなどの、従来のコンピュータシステムのシステム・アーキテクチャを示す。図１の例示的コンピュータシステムは単に説明を目的としたものである。以下の説明では、特定のコンピュータシステム、例えばＩＢＭ  ＰＳ／２コンピュータなどを説明する上で共通に使用される術語が使用されているが、本発明の説明と概念は、図１とは異なるアーキテクチャを備えたシステムを含め他のシステムに等しく適用される。
例示のコンピュータ100は従来のマイクロプロセッサを含む中央演算処理装置（ＣＰＵ）105、情報の一時的記憶のためのシステム・ランダム・アクセス・メモリ（ＲＡＭ）110、情報の永久的記憶のためのリード・オンリー・メモリ（ＲＯＭ）115を含む。メモリ制御装置120はシステムＲＡＭ110を制御するために設けてある。バス制御装置125はバス130を制御するために設けてある。割り込み制御装置135は各種割込み信号を受信して処理するために使用する。
大容量記憶はディスケット142、ＣＤ−ＲＯＭディスク147又はハードディスク152によっても提供される。ディスケット142はディスケットドライブ装置141に挿入でき、これが更に制御装置140によってバス130へ接続されている。同様に、ＣＤ−ＲＯＭディスク147はＣＤ−ＲＯＭドライブ装置146へ挿入でき、これが制御装置145によりバス130へ接続される。最後に、ハードディスク152は固定ディスクドライブ装置151の一部であり、制御装置150によってバス130へ接続されている。
コンピュータ・システム100への入力と出力は多数のデバイスによって提供される。例えば、キーボード及びマウスの制御装置155はキーボード入力デバイス156とマウス入力デバイス157を制御するためにバス130へ接続する。ＤＭＡ制御装置160はシステムＲＡＭ110へのダイレクトメモリアクセスを実行するために設けてある。画像表示は、ビデオ出力ディスプレイ170を制御するビデオ制御装置165によって生成される。コンピュータはバス191として模式的に図示してあるシステムをローカルエリアネットワーク（ＬＡＮ）又は広域ネットワーク（ＷＡＮ）へシステムを接続できるようにする通信アダプタ190も含む。
コンピュータ100は、例えば米国フロリダ州ボカレイトンのインターナショナル・ビジネス・マシンズ・コーポレーション（ＩＢＭ社）から入手可能なＯＳ／２▲Ｒ▼オペレーティングシステム等のオペレーティングシステム・ソフトウェアにより一般に制御調節される。従来のオペレーティングシステムは実行のためのコンピュータプロセスを制御及びスケジュールし、メモリ管理を実行し、ファイルシステム、ネットワーキング、Ｉ／Ｏサービスを提供し、ユーザ・インタフェース、例えばグラフィカル・ユーザ・インターフェース（ＧＵＩ）、等々を提供する。ユーザ・アプリケーション例えばエディタやスプレッドシートはオペレーティングシステムのこれらの能力及び他の能力に直接又は間接的に依存する。
図２は、本発明の原理に従って構成されたデータファイル200の構造を示す。ファイルは２つの主要部分から構成されるが、他の部分が存在しても良い。こうした他の部分は本発明を理解する上で必要ではないので簡明のため図面からは排除してある。さらに詳しくは、ファイルは暗号化していない、即ち、「クリアテキスト（平文）」のヘッダ209と暗号化したデータ部分204から構成される。暗号化していない部分とデータ部分は単一ファイルの２つの部分として図示してあるが、本発明の趣旨及び範囲から逸脱することなく、暗号化していないファイルと暗号化したファイルを別々に使用することもできる。同様に、テーブル220とデータ部分222は暗号化部分204の一部として図示してあるが、これらを別のファイルに配置しても良い。
ファイル200の暗号化したデータ部分204でクリアテキストのデータは周知の方法で単一のファイルキーを用いて暗号化される。ＤＥＳ暗号化方式、ＲＣ２暗号化方式、ＲＣ４暗号化方式、又はＩＤＥＡ技術等々、ファイルを暗号化するために使用できる従来の単一キー暗号化技術は幾つか存在する。これと同じ暗号化技術が、ファイル200のデータ部分204の一部として又は別のファイルとして機密データ部分222を暗号化するためにも使用できる。
ファイル200のデータ部分を暗号化するために使用される単一ファイルキーはそれ自体が以下で詳細に説明する本発明の複数パスワード方式を用いて暗号化される。
クリアテキストヘッダ202は数個のテーブルと、本明細書では、「ソルト（salt）」と呼称し、ここに格納されるランダムに選択した値206とを含む。ソルト値206は、例えばコンピュータの乱数発生機を用いて選択できるランダムに選択された値として提供されるのが典型的である。実際の値がクリティカルになることはないが、このソルト数は異なるファイルでの複製ソルト数の選択がきわめて起こり難い程充分なビット数を有するべきである。例示的には64ビットを有するソルト値206を使用できる。
暗号化されていないヘッダ202には全てのエントリについて２つのフィールドを設けた複数のエントリから構成されている第１のテーブル208も含まれる。さらに詳しくは、各エントリはユーザ名を含む第１のフィールド210とフィールド210にあるユーザ名に対応するパスワードの暗号ハッシュを含む第２のフィールド212を有する。
例示の実施態様において、ユーザ名に対応するパスワードはソルト値と組み合わせた実際のパスワードの一方向暗号「ハッシュ」を用いてハッシュされる。さらに詳しくは、パスワードはソルト値と単純に連結されてから、又は別の方法で組み合わせてからハッシュすることができる。
入力値の暗号「ハッシュ」を生成するための例示的装置が図３に図示してあるが、当業者には公知の他の同様な構成も本発明の範囲から逸脱することなく使用できる。さらに詳しくは、図３に図示してあるように、入力300のソルト値と入力304のパスワードが連結回路302へ提供される。連結回路302はソルト値を形成するビットとパスワードを含むビットとを単純に連結して得られたビット列を一方向関数306に提供する。
一方向関数306はビット列を受け入れてそのビットに対して一連の数学的演算を実行し、一方向関数の出力だけが与えられても入力を再構成するのが実質的に不可能なようにする周知の関数である。当業者には周知のこのような関数は幾つか存在する。例示の実施例で使用するのに適しているこのような関数の１つが、「ＭＤ２」と呼ばれる一方向関数で、これについてはＣ．カウフマン／Ｒ．パールマン／Ｍ．スペシナー共著「ネットワーク・セキュリティ」（Network Security,C.Kaufman,R.Perlman and M.Speciner,Prentice Hall 1995）と題する書籍に詳細に説明されている。暗号化ハッシュは暗号化データがキーで複合できるキー暗号化方式とは区別される。しかし、ハッシュされたデータは「逆ハッシュ」できない。
関数306の出力で生成されたハッシュ後の値は第２のＭＤ２ハッシュ関数308に供給され、ここで第２のＭＤ２ハッシュ関数を実施して第２のハッシュ後の値をこれの出力ポートに提供する。この第２のハッシュ後の値がテーブル208の第２フィールド212に格納される。
２つのＭＤ２関数306と308（図３）で表現されたハッシュ関数は、図２ではＨＡＳＨ１［...］で表記してある。２つの値の連結は２本の縦線（“｜｜”）によりこの値を分解することで表わされる。図３に図示したメカニズムはソフトウェアルーチンで実現するのが望ましいが、ハードウェアに実装することもできる。いずれの場合にも、ルーチンは永久ファイル機密プログラムの一部をなしている。
テーブル208のエントリの順番がパスワードの暗示的な順番を構成することは注意すべきである。例えば、第１のエントリはパスワード１に対応し、第２のエントリはパスワード２に対応する、と言った具合である。この順番が以下で説明するように他のテーブルのエントリの順番を決定することから重要である。
暗号化されていないヘッダ202は第２のテーブル214も含み、これも複数のエントリを含み、その各々は２つのフィールド216と218を有している。ファイルの暗号化した部分を複号するために必要な選択集団を形成するために使用できるパスワードの各々の組み合わせについてエントリが存在する。
例えば、５名の正規管理者が存在し選択集団には２名が要求されるものと仮定する。更に、５つのパスワードがＰＷ１，ＰＷ２，ＰＷ３，ＰＷ４，ＰＷ５（ここのパスワード番号はテーブル208のエントリ順序を表わすものであって、パスワードがユーザによって入力された実際の順番ではない）であると仮定しておく。次に、エントリの順序が問題ではなく、１つのパスワードはそれ自身と組み合わせることができないことから、２つのパスワードで可能な組み合わせは10個であり、その各々が選択集団についての値の組み合わせを定義する。
（１）  ＰＷ１，ＰＷ２
（２）  ＰＷ１，ＰＷ３
（３）  ＰＷ１，ＰＷ４
（４）  ＰＷ１，ＰＷ５
（５）  ＰＷ２，ＰＷ３
（６）  ＰＷ２，ＰＷ４
（７）  ＰＷ２，ＰＷ５
（８）  ＰＷ３，ＰＷ４
（９）  ＰＷ３，ＰＷ５
（１０）ＰＷ４，ＰＷ５
これら10個の組み合わせの各々がテーブル214にエントリを有することになる。各エントリの第１のフィールド216はどのパスワードが組み合わせになっているかを表わす一組の数値である。このフィールドはテーブル208のエントリについてのエントリ番号から構成される。つまり、例えば、ＵＳＥＲ  ＮＡＭＥ  １とＵＳＥＲ  ＮＡＭＥ  ２のユーザ（これはパスワードＰＷ１とＰＷ２に対応する）から構成された特定の選択集団では、テーブル214の第１フィールドのエントリは１，２になる。
テーブル214の第２フィールド218は、この組み合わせの中のハッシュされたパスワードを用いて暗号化したファイルキーから構成される。さらに詳しくは、エントリについての組み合わせにおける各パスワードの暗号化ハッシュは、これとソルト値を連結してその連結子をハッシュすることにより生成される。第２の演算で使用されるハッシュ技術は、後述するような理由から、テーブル208を形成する際に使用されたハッシュ技術とは異なっていることが重要である。
第２の暗号化ハッシュを実行するための装置が図４に図示してあるが、他の公知の技術を用いることもできる。図４に図示してあるように、手順は入力400のソルト値と入力404のパスワードとを連結関数406に適用してこの２つの値からのビットを連結することである。連結回路402の出力は一方向関数406に提供される。前述のハッシュ関数と同様、一方向関数としてはＭＤ２ハッシュ関数を使用できる。ここでＭＤ２関数は１回だけ適用してテーブル208を構築するために使用した関数とは異なるハッシュ関数を作る。これ以外では、一方向関数に通す前にソルト／パスワード連結と別の所定の定数とを連結する又は単にＭＤ２とは別の一方向関数を使用することにより、ハッシュ出力を別のものにすることができる。
テーブル208と同様、この第２のハッシュ関数はテーブル214においてＨＡＳＨ２［...］によって表現されており、連結は縦線（“｜｜”）で表現されている。パスワードとソルトの連結をハッシュしたものは各々組み合わせナンバー（Ｃ１...Ｃｎ）によって表現されている。従って、Ｃ１＝ＨＡＳＨ２［ＰＷ１｜｜ＳＡＬＴ］、Ｃ２＝ＨＡＳＨ２［ＰＷ２｜｜ＳＡＬＴ］というようになる。
パスワードキーは、組み合わせ値を連結して連結した値を第２のハッシュ関数でハッシュすることにより組み合わせ値から形成される。例えば、あるエントリがパスワードＰＷ１とＰＷ２を含む場合、暗号化キーはＨＡＳＨ２［ＨＡＳＨ２［ＰＷ１｜｜ＳＡＬＴ］｜｜ＨＡＳＨ２［ＰＷ２｜｜ＳＡＬＴ］］又はＨＡＳＨ２［Ｃ１｜｜Ｃ２］によって生成されることになる。エントリは実際のエントリの順番ではなく、テーブル208内の順番に基づいた順番で連結される。更に、例示の実施例ではハッシュ関数ＨＡＳＨ２を使用してパスワードの組み合わせをハッシュしているが別のハッシュ関数も使用できる。
次にこのパスワードキーを用いてファイルキーを暗号化する。理想的には、ファイルキーを暗号化するのに用いられる暗号化処理は、ファイルキーを簡単に復元できるようなものである。好ましい実施態様によれば、パスワードキーはファイルキーで単純に排他的論理和（ＸＯＲ）を取っている。排他的論理和演算の結果がテーブル214の第２フィールド218に格納される。この排他的論理和関数を使用する場合、入力されたパスワードの組み合わせからパスワードキーを生成し、さらに生成したキーとテーブル214の第２フィールド218に格納されている値との排他的論理和を取ることにより、後でファイルキーを簡単に復元できる。
パスワードファイルを管理するためには、ファイル200の暗号化データ部分204にパスワードを配置することが可能である。しかし、これを行なった場合、ユーザは正当にパスワードへのアクセスを得ることができるが、前述した通り、ユーザが幾つかのコンテクストで同一パスワードを使用した場合には他のファイルへアクセスするときに不適切に使用することになる。従って、ファイル200の暗号化データ部分204は、後述するようにテーブル214を管理するために使用される一連のハッシュ値220を含む。さらに詳しくは、テーブル220にあるエントリは前述の組み合わせ値Ｃ１...Ｃｎである。つまり、パスワードそれ自体はファイル内に出現しない。
図５は、ユーザの選択集団により図２に図示したテーブルを含む暗号化ファイルのファイルキーを取得するための方法を示した例示的フローチャートである。本明細書では「処理ブロック」と表示された四角い要素（要素500が代表的）はコンピュータソフトウェアの命令又は命令グループを表わしている。本明細書では「決定ブロック」を意味する菱形の要素は（要素506が代表的）処理ブロックで表現されたコンピュータソフトウェアの命令の実行に影響するコンピュータソフトウェア命令又は命令のグループを表わす。フロー図では何らかの特定のコンピュータプログラミング言語のシンタックスを表現しない。むしろ、フロー図は暗号化ファイル構造の複合に必要とされる処理を実行するためのコンピュータソフトウェアを生成するのに当業者が必要とする機能的情報を図示している。多数のルーチンプログラム要素、例えばループや変数の初期化や一時変数の使用等は図示していないことに注意。
図５に戻ると、プログラムの流れは500から始まり処理ブロック502に進み、ここでファイルヘッダ（又はヘッダファイル）が読み込まれて正規ユーザ名のリスト、「ソルト」値、ハッシュされたパスワードが抽出される。ソルト値、ユーザ名、ハッシュされたパスワードは典型的には平文ファイルヘッダ202（図２）のテーブル208及び214等のテーブルから抽出されて一時的にメモリに記憶される。次に、処理ステップ504で、抽出されたユーザ名のリストが、一般には画像表示画面上に表示される。決定ブロック506はパスワードが入力されるまで待機する待ちループを実施する。さらに詳しくは、ルーチンが入出力デバイス、例えばキーボードバッファを調べて、いつパスワードが入力されたかを検出する。別の方式では、別の等価な方法、例えば磁気ストライプ読み取り装置又はその他の入力デバイスにより、情報を入力しても良い。以下の説明ではキーボードによる入力を説明するが、同様に等価な方法を使用できることは明白である。パスワードが入力されなかった場合、ルーチンはステップ506を反復する。
ユーザがパスワードを入力すると、ルーチンは処理ステップ508に進む。ステップ508では、入力されたパスワードが取り出されたソルト値と連結され第１のハッシュ関数でハッシュされて、ステップ508に図示してあるように、ＨＡＳＨ１［ＰＷ１｜｜ＳＡＬＴ］を生成する。
決定ブロック510は計算したばかりのハッシュされたパスワードがステップ502でファイルヘッダ202から取り出されたハッシュ後のパスワードのいずれかと一致するかどうかを調べる。一致が見付からない場合には、パスワードは間違えて入力されたものであり、ルーチンはステップ512に進み、ここでパスワードを入力したユーザにエラーメッセージを表示する。次にルーチンはステップ504に戻って、正しくないパスワードが不注意により入力された場合にはユーザ名を再表示する。正しくないパスワードが繰り返し入力される場合に取られる通常のステップは図示していない。
ステップ510で、ハッシュされたパスワードがファイルのヘッダ202にあるテーブル208から取り出されたハッシュ後のパスワードの１つと一致した場合、処理はステップ516に進み、ここでソルト値と連結されたパスワードの第２のハッシュ値が第２のハッシュ関数（ＨＡＳＨ２［ＰＷ｜｜ＳＡＬＴ］）を用いて計算される。
次に、処理ステップ518で、チェックを行なって正規ユーザの選択集団が得られたかどうかを判定する。このステップは、すでに受信したパスワード番号（テーブル208にあるテーブルの順番に基づく）を、テーブル214の第１フィールド（216）に格納されているパスワードの有効な組み合わせと比較することによって行なわれる。
これまでにすでに入力されたパスワード番号の組が、選択集団の有効な組み合わせの１つと一致しない場合、計算したハッシュ値とパスワード番号が記憶されて処理はステップ514へ進み、ここで入力されたパスワードに対応するユーザ名が、表示されているリストから削除される。
次にルーチンはステップ504に戻り、ここでユーザ名の調節されたリストが再表示される。テーブル214の第１エントリに格納されたパスワード番号の組み合わせの１つと一致する入力されたパスワードの番号で示される通りの選択集団が得られるまで、ステップ504、５０６、508、510、516、518、514を繰り返すことにより、処理が継続する。
ステップ520で、選択集団が存在すると判定された場合、記憶してあるハッシュ後のパスワード値がテーブル208により決定された順番で連結されて第２のハッシュ関数を用いてハッシュされ、ステップ520に示してあるようなパスワードキーを生成する。連結は実施のエントリの順序ではなくテーブル208の順番によって行なわれることから、選択集団を形成するためのパスワードはどのような順序でも入力することができる。最後にステップ522で、パスワードキーを用いてファイルキーを複号する。例示の実施例において、ステップ522はステップ520で計算したパスワードキーと、入力されたパスワードのリストに（第１フィールドの）リストが一致したエントリについてテーブル214の第２フィールド218にある値との排他的論理和を取ることにより行なわれる。ルーチンはステップ524で終了する。
ここで図６を参照すると、ユーザを追加又は除外するため又は選択集団のメンバーを変更するための例示的ルーチンが開示されている。ルーチンはステップ600で始まり、ステップ602へと進み、ここで図５との関連で前述した手順を用いてファイルの暗号化部分が復号される。ファイルの暗号化部分が復号された後、テーブル220（図２）のハッシュされたパスワードがメモリに読み込まれる。これらのハッシュされたパスワードはテーブル214を再構築するために使用される。
処理はステップ606に進み、ここで新規ユーザを正規ユーザのグループに追加するかどうかの決定を行なう。新規ユーザを追加する場合には、そのユーザのためにテーブル208及び220に追加エントリを作成しなければならない。この場合、処理はステップ608に進み、ここでユーザは新規パスワードを入力するように指示される。新しく入力されたパスワードは、ソルト値と連結されてからステップ610に示すように第１と第２のハッシュ関数を用いてハッシュされる。
新規にハッシュされた値は、ステップ612に示すように適切なテーブル208（フィールド212）とテーブル220へ入力される。更に、ハッシュされた新しいパスワードは、パスワード組み合わせファイル214を後に再構築するためにメモリ内に記憶される。一人以上の新規ユーザを正規ユーザのグループに追加している場合には、ステップ608及び610を各々の新規ユーザについて反復して新規ユーザの情報の全部をステップ612で適当なテーブルに入力する。
ルーチンは次にステップ614に進む。決定ボックス606で、新規ユーザを入力していないと決定した場合には、ルーチンは又ステップ614へ進む。ステップ614で、何らかの新規ユーザ及び何らかの新規の選択集団規則を使用してテーブル214を再構築できる。テーブル220はユーザの追加又は削除によって変更されているので、これも０ステップ614に示してあるように、ファイルのデータ部分は同一のキー又は新規のキーを用いて再暗号化される。ステップ604でテーブル220から読み込まれたハッシュ後のパスワードと新規にハッシュされたパスワードは実際のパスワードのどれも知らなくても、テーブル214を再構築するのに充分であることには注意すべきである。
本発明の構成には以下の特徴がある。テーブル208はユーザ名のリストとこれに対応するハッシュされたパスワードを含むので、ユーザは最初にユーザ名を入力して、次にパスワードを入力する必要がない。名前がリストに現われている全てのユーザは、対応する名前がなくとも、又どのような順序でもパスワードを入力でき、ルーチンは有効なパスワードを認識する。更に、ルーチンはパスワードが入力された順番と無関係にパスワードの有効な組み合わせを認識する。
更に、実際のパスワードはファイルの平文ヘッダ又はファイルの暗号化部分のどちらにも出現しないことに注意すべきである。一方向関数を通したパスワードだけがファイルに存在するので、ファイルだけからではパスワードを復元することは現実的に不可能である。つまり、実際にユーザが別のファイルに同一のパスワードを使用した場合でも、本発明の構成では、ファイルは危険に曝されない。ファイルの暗号化された部分にある情報からファイルキー復号テーブル214を再構築するのは可能であるものの、２つのテーブルでのハッシュ関数が異なっているので、テーブル208の第２フィールドからテーブル214を再構築できない。
本発明の１つの実施態様だけを開示したが、本発明の趣旨及び範囲から逸脱することなく本発明の利点の幾つかを実現するような各種の変化及び変更を成し得ることは当業者には明らかであろう。例えば、上記で開示した暗号化技術を各種の周知の暗号化技術で置き換えて同じ結果を達成することができる。このような変更、又はその他の明白な変更は、添付の請求の範囲に包含されるものである。
【図１】
0003807747.tif 000002
【図２】
0003807747.tif 000003
【図３】
0003807747.tif 000004
【図４】
0003807747.tif 000005
【図５】
0003807747.tif 000006
【図６】
0003807747.tif 000007