(57)【特許請求の範囲】
【請求項１】
暗号化されたファイルで使用された暗号アルゴリズムに対応するテーブルを生成するテーブル生成部と、
前記暗号化されたファイルから暗号化ヘッダを抽出し、抽出した暗号化ヘッダに対応するブロックの暗号化された固定平文を抽出する資料抽出部と、
前記暗号化された固定平文に基づいてキーチェーンを生成して、生成したキーチェーンに相応する最終キー候補群を生成し、前記最終キー候補群と前記テーブルを用いて開始キーを探索する資料探索部と、
前記開始キーを用いて暗号化キーの有効性を検証するキー検証部と、
前記暗号化キーを用いて前記暗号化されたファイルを再暗号化する再暗号化部とを含み、
前記暗号化されたファイルは、暗号化されたＭＳ−ＯＦＦＩＣＥファイルに該当するもので、２０００以下のバージョンで使用された４０−ｂｉｔ  ＲＣ４アルゴリズム、またはＣｒｙｐｔｏＡＰＩ  ＲＣ４アルゴリズムを用いて暗号化され、
前記テーブル生成部は、
前記暗号化されたファイルに対応する暗号化アルゴリズムによってリダクション関数を選択する選択部と、
前記リダクション関数に基づいてキーチェーンを生成し、生成したキーチェーンに基づいて開始キーおよび最終キーを計算するキーチェーン生成部と、
前記開始キーおよび最終キーを用いて、暗号化アルゴリズムによってテーブルを生成する生成部とを含み、
前記リダクション関数は、ＭＳ−ＯＦＦＩＣＥファイルを構成する各データブロックの最初の８バイト又は１２バイトの中から常に値が固定されるビットの位置を持ってくるものであり、前記選択部は、暗号アルゴリズムに応じて、４０−ｂｉｔ  ＲＣ４アルゴリズムの場合には１つ、ＣｒｙｐｔｏＡＰＩ  ＲＣ４アルゴリズムの場合には２つのリダクション関数を選択することを特徴とする、暗号化されたファイルを復号化する装置。
【請求項２】
前記生成部は、
ＭＳ−ＷＯＲＤ、ＭＳ−ＥＸＣＥＬファイルに使用される４０−ｂｉｔ  ＲＣ４アルゴリズム用テーブル、ＭＳ−ＰＯＷＥＲＰＯＩＮＴファイルに使用されるＣｒｙｐｔｏＡＰＩ  ＲＣ４アルゴリズム用テーブルであってＢｌｏｃｋＮｕｍ０を使用するブロックのためのテーブル、同アルゴリズム用テーブルであってＢｌｏｃｋＮｕｍ０でないブロックのためのテーブルのうちの少なくとも１つを生成することを特徴とする、請求項１に記載の暗号化されたファイルを復号化する装置。
【請求項３】
前記キーチェーン生成部は、虹キーチェーン形態であることを特徴とする、請求項１に記載の暗号化されたファイルを復号化する装置。
【請求項４】
前記資料抽出部は、
入力された暗号ファイルから、暗号化に使用されたパスワードを検証するための暗号化ヘッダを抽出する暗号化ヘッダ抽出部と、
前記暗号ファイルに対応する暗号化アルゴリズムによって前記暗号化された固定平文を抽出する複数の固定平文抽出部とを含むことを特徴とする、請求項１に記載の暗号化されたファイルを復号化する装置。
【請求項５】
前記キー検証部は、
前記資料探索部で探索した開始キーを用いてキーチェーンを再生成するキーチェーン生成部と、
前記キーチェーン生成部で再生成したキーチェーンが含むキー値の中から、前記暗号化された固定平文が存在するかを確認し、前記暗号化された固定平文が存在する場合に、時間−メモリトレードオフ手法の原理によって暗号化キーを再暗号化部に伝達する確認部とを含むことを特徴とする、請求項１に記載の暗号化されたファイルを復号化する装置。
【請求項６】
前記再暗号化部は、
前記暗号化されたファイルから抽出した暗号化ヘッダを再構成するヘッダ再暗号化部と、
前記キー検証部から伝達された暗号化キーを用いて各暗号化されたブロックを復号化するブロック復号化部と、
前記ブロック復号化部で復号化されたブロックを、再構成された暗号化ヘッダで使用された暗号化キーを用いて再暗号化するブロック再暗号化部とを含むことを特徴とする、請求項１に記載の暗号化されたファイルを復号化する装置。
【請求項７】
暗号化されたファイルで使用された暗号アルゴリズムに対応するテーブルを生成するステップと、
前記暗号化されたファイルから暗号化ヘッダを抽出し、抽出した暗号化ヘッダに対応するブロックの暗号化された固定平文を抽出するステップと、
前記暗号化された固定平文に基づいてキーチェーンを生成して、生成したキーチェーンに相応する最終キー候補群を生成し、前記最終キー候補群と前記テーブルを用いて開始キーを探索するステップと、
前記開始キーを用いて暗号化キーの有効性を検証するステップと、
前記暗号化キーを用いて前記暗号化されたファイルを再暗号化するステップとを含み、
前記テーブルを生成するステップは、
暗号化されたＭＳ−ＯＦＦＩＣＥファイルに該当するもので、２０００以下のバージョンで使用された４０−ｂｉｔ  ＲＣ４アルゴリズム、またはＣｒｙｐｔｏＡＰＩ  ＲＣ４アルゴリズムを用いて、暗号化されたファイルで使用された暗号アルゴリズムに対応するテーブルを生成し、
前記テーブルを生成するステップは、
前記暗号化されたファイルに対応する暗号化アルゴリズムによってリダクション関数を選択するステップと、
前記リダクション関数に基づいてキーチェーンを生成し、生成したキーチェーンに基づいて開始キーおよび最終キーを計算するステップと、
前記開始キーおよび最終キーを用いて、暗号化アルゴリズムによってテーブルを生成するステップとを含み、
前記リダクション関数はＭＳ−ＯＦＦＩＣＥファイルを構成する各データブロックの最初の８バイト又は１２バイトの中から常に値が固定されるビットの位置を持ってくるものであり、前記選択するステップは、暗号化アルゴリズムに応じて、４０−ｂｉｔ  ＲＣ４アルゴリズムの場合には１つ、ＣｒｙｐｔｏＡＰＩ  ＲＣ４アルゴリズムの場合には２つのリダクション関数を選択することを特徴とする、暗号化されたファイルを復号化する方法。
【請求項８】
前記開始キーおよび最終キーを用いて、暗号化アルゴリズムによってテーブルを生成するステップは、
ＭＳ−ＷＯＲＤ、ＭＳ−ＥＸＣＥＬファイルに使用される４０−ｂｉｔ  ＲＣ４アルゴリズム用テーブル、ＭＳ−ＰＯＷＥＲＰＯＩＮＴファイルに使用されるＣｒｙｐｔｏＡＰＩ  ＲＣ４アルゴリズム用テーブルであってＢｌｏｃｋＮｕｍ０を使用するブロックのためのテーブル、同アルゴリズム用テーブルであってＢｌｏｃｋＮｕｍ０でないブロックのためのテーブルのうちの少なくとも１つを生成することを特徴とする、請求項７に記載の暗号化されたファイルを復号化する方法。
【請求項９】
前記暗号化された固定平文を抽出するステップは、
入力された暗号ファイルから、暗号化に使用されたパスワードを検証するための暗号化ヘッダを抽出するステップと、
前記暗号ファイルに対応する暗号化アルゴリズムによって前記暗号化された固定平文を抽出するステップとを含むことを特徴とする、請求項７に記載の暗号化されたファイルを復号化する方法。
【請求項１０】
前記再暗号化するステップは、
前記暗号化されたファイルから抽出した暗号化ヘッダを再構成するステップと、
有効性の検証された暗号化キーを用いて各暗号化されたブロックを復号化するステップと、
復号化されたブロックを、再構成された暗号化ヘッダで使用された暗号化キーを用いて再暗号化するステップとを含むことを特徴とする、請求項７に記載の暗号化されたファイルを復号化する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化されたファイルを復号化する装置およびその方法に関するものであって、特に、時間−メモリトレードオフ方法（Ｔｉｍｅ−ｍｅｍｏｒｙ  Ｔｒａｄｅ−ｏｆｆ、ＴＭＴＯ）を用いて、暗号化に使用されたパスワードでないキーを用いて暗号化されたＭＳ−ＯＦＦＩＣＥファイルを復号化する装置およびその方法に関するものである。
【背景技術】
【０００２】
文書を格納する多様な形式のファイルのうち、ＭＳ−ＯＦＦＩＣＥファイルは、非常に大きい部分を占めている。
【０００３】
ＭＳ−ＯＦＦＩＣＥは、現在、２０１３バージョンまで発売されて使用されているが、過去のバージョンを使用する低仕様ＰＣ（ｐｅｒｓｏｎａｌ  ｃｏｍｐｕｔｅｒ）などとの業務の連続性のために引き続き２０００以下のバージョンで使用される形式で格納されたファイルが相当数を占める。２０００以下のバージョンのＭＳ−ＯＦＦＩＣＥファイルは、固有の暗号アルゴリズムで暗号化して格納することができるが、この時使用される基本アルゴリズムは、設計上の脆弱点を見つけにくく、パスワードの探索による暗号文の解読が事実上最も効率的な攻撃方法として知られている。
【０００４】
脆弱点が知られていない暗号アルゴリズムの暗号文からパスワードを探す方法としてよく知られているものとしては、すでに知られているパスワードの辞書、またはそれから誘導されるパスワードを調べる辞書式攻撃方法と、すべての可能なパスワードの組み合わせを調べる全数調査攻撃方法といった２つの攻撃方法が存在する。
【０００５】
例えば、韓国公開特許第１０−２０１０−００９８０９４号公報の「グラフィックプロセッサを用いたＭＳ−ＯＦＦＩＣＥファイルからの高速パスワード復旧システムおよび方法」では、パスワードが設定されて暗号化されたＭＳ−ＯＦＦＩＣＥファイルに対して、候補パスワードが正しいパスワードであるか否かをグラフィックプロセッサを用いて並列的に迅速に検証することにより、パスワードを復旧する技術に関して記載している。
【０００６】
このような辞書式攻撃方法は、暗号化に使用されたパスワードが辞書の単語の単純な変形でない場合、失敗する可能性が高く、全数調査攻撃方法は、計算量が多すぎる欠点がある。例えば、英語の大小文字、数字、特殊文字などの９５の文字を使用し、かつ長さが９の場合に対して全数調査攻撃方法を用いるとすれば、可能なパスワードの組み合わせは、
【０００７】
【数１】
0005914604.tif 000002
【０００８】
となって、現実的に探索が難しい。このため、複雑なパスワードを用いた場合には別の攻撃方法が必要になる。
【０００９】
前記２つの攻撃方法とは異なる攻撃方法には、時間−メモリトレードオフ方法（Ｔｉｍｅ−ｍｅｍｏｒｙ  Ｔｒａｄｅ−ｏｆｆ、ＴＭＴＯ）を用いたパスワード探索攻撃がある。このようなパスワード探索攻撃方法は、時間を投資する攻撃方法（例えば、全数調査攻撃方法）と、メモリ（格納空間）に依存する攻撃方法（例えば、すべてのパスワードに対して暗号文のテーブルを作成した後、テーブルから暗号文を検索してパスワードを直ちに読み出す方法）との折衷点として提案された攻撃方法に該当する。
【００１０】
時間−メモリトレードオフ方法（Ｔｉｍｅ−ｍｅｍｏｒｙ  Ｔｒａｄｅ−ｏｆｆ、ＴＭＴＯ）を用いたパスワード探索攻撃方法は、特別な規則によって選定された一部のパスワードに対する暗号文のみを特定の規則で変形してテーブルの形態で格納した後、暗号文またはその変形をテーブルから探して、元のパスワードを逆に計算する方法である。
【００１１】
このような時間−メモリトレードオフ方法（Ｔｉｍｅ−ｍｅｍｏｒｙ  Ｔｒａｄｅ−ｏｆｆ、ＴＭＴＯ）は、効率が非常に高いと知られているが、暗号文の元の平文が特定の形態を呈していなければ適用できない欠点がある。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】韓国公開特許第１０−２０１０−００９８０９４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
本発明の目的は、時間−メモリトレードオフ方法を用いて、暗号化に使用されたパスワードでないキーを用いて暗号化されたＭＳ−ＯＦＦＩＣＥファイルを復号化する装置およびその方法を提供することである。
【課題を解決するための手段】
【００１４】
上記の目的を達成するための、本発明にかかる暗号化されたファイルを復号化する装置は、暗号化されたファイルで使用された暗号アルゴリズムに対応するテーブルを生成するテーブル生成部と、前記暗号化されたファイルから暗号化ヘッダを抽出し、抽出した暗号化ヘッダに対応するブロックの暗号化された固定平文を抽出する資料抽出部と、前記暗号化された固定平文に基づいてキーチェーンを生成して、生成したキーチェーンに相応する最終キー候補群を生成し、前記最終キー候補群と前記テーブルを用いて開始キーを探索する資料探索部と、前記開始キーを用いて暗号化キーの有効性を検証するキー検証部と、前記暗号化キーを用いて前記暗号化されたファイルを再暗号化する再暗号化部とを含む。
【００１５】
この時、前記暗号化されたファイルは、暗号化されたＭＳ−ＯＦＦＩＣＥファイルに該当するもので、２０００以下のバージョンで使用された４０−ｂｉｔ  ＲＣ４アルゴリズム、またはＣｒｙｐｔｏＡＰＩ  ＲＣ４アルゴリズムを用いて暗号化されたことを特徴とする。
【００１６】
この時、前記テーブル生成部は、前記暗号化されたファイルに対応する暗号化アルゴリズムによってリダクション関数を選択する選択部と、前記リダクション関数に基づいてキーチェーンを生成し、生成したキーチェーンに基づいて開始キーおよび最終キーを計算するキーチェーン生成部と、前記開始キーおよび最終キーを用いて、暗号化アルゴリズムによってテーブルを生成する生成部とを含むことを特徴とする。
【００１７】
この時、前記生成部は、ＭＳ−ＷＯＲＤ、ＭＳ−ＥＸＣＥＬファイルに使用される４０−ｂｉｔ  ＲＣ４アルゴリズム用テーブル、ＭＳ−ＰＯＷＥＲＰＯＩＮＴファイルに使用されるＣｒｙｐｔｏＡＰＩ  ＲＣ４アルゴリズム用テーブルであってＢｌｏｃｋＮｕｍ０を使用するブロックのためのテーブル、同アルゴリズム用テーブルであってＢｌｏｃｋＮｕｍ０でないブロックのためのテーブルのうちの少なくとも１つを生成することを特徴とする。
【００１８】
この時、前記キーチェーン生成部は、虹キーチェーン形態であることを特徴とする。
【００１９】
この時、前記資料抽出部は、入力された暗号ファイルから、暗号化に使用されたパスワードを検証するための暗号化ヘッダを抽出する暗号化ヘッダ抽出部と、前記暗号ファイルに対応する暗号化アルゴリズムによって前記暗号化された固定平文を抽出する複数の固定平文抽出部とを含むことを特徴とする。
【００２０】
この時、前記キー検証部は、前記資料探索部で探索した開始キーを用いてキーチェーンを再生成するキーチェーン生成部と、前記キーチェーン生成部で再生成したキーチェーンが含むキー値の中から、前記暗号化された固定平文が存在するかを確認し、前記暗号化された固定平文が存在する場合に、時間−メモリトレードオフ手法の原理によって暗号化キーを再暗号化部に伝達する確認部とを含むことを特徴とする。
【００２１】
この時、前記再暗号化部は、前記暗号化されたファイルから抽出した暗号化ヘッダを再構成するヘッダ再暗号化部と、前記キー検証部から伝達された暗号化キーを用いて各暗号化されたブロックを復号化するブロック復号化部と、前記ブロック復号化部で復号化されたブロックを、再構成された暗号化ヘッダで使用された暗号化キーを用いて再暗号化するブロック再暗号化部とを含むことを特徴とする。
【００２２】
また、本発明の一実施形態にかかる暗号化されたファイルを復号化する方法は、暗号化されたファイルで使用された暗号アルゴリズムに対応するテーブルを生成するステップと、前記暗号化されたファイルから暗号化ヘッダを抽出し、抽出した暗号化ヘッダに対応するブロックの暗号化された固定平文を抽出するステップと、前記暗号化された固定平文に基づいてキーチェーンを生成して、生成したキーチェーンに相応する最終キー候補群を生成し、前記最終キー候補群と前記テーブルを用いて開始キーを探索するステップと、前記開始キーを用いて暗号化キーの有効性を検証するステップと、前記暗号化キーを用いて前記暗号化されたファイルを再暗号化するステップとを含む。
【００２３】
この時、前記テーブルを生成するステップは、暗号化されたＭＳ−ＯＦＦＩＣＥファイルに該当するもので、２０００以下のバージョンで使用された４０−ｂｉｔ  ＲＣ４アルゴリズム、またはＣｒｙｐｔｏＡＰＩ  ＲＣ４アルゴリズムを用いて、暗号化されたファイルで使用された暗号アルゴリズムに対応するテーブルを生成することを特徴とする。
【００２４】
この時、前記テーブルを生成するステップは、前記暗号化されたファイルに対応する暗号化アルゴリズムによってリダクション関数を選択するステップと、前記リダクション関数に基づいてキーチェーンを生成し、生成したキーチェーンに基づいて開始キーおよび最終キーを計算するステップと、前記開始キーおよび最終キーを用いて、暗号化アルゴリズムによってテーブルを生成するステップとを含むことを特徴とする。
【００２５】
この時、前記開始キーおよび最終キーを用いて、暗号化アルゴリズムによってテーブルを生成するステップは、ＭＳ−ＷＯＲＤ、ＭＳ−ＥＸＣＥＬファイルに使用される４０−ｂｉｔ  ＲＣ４アルゴリズム用テーブル、ＭＳ−ＰＯＷＥＲＰＯＩＮＴファイルに使用されるＣｒｙｐｔｏＡＰＩ  ＲＣ４アルゴリズム用テーブルであってＢｌｏｃｋＮｕｍ０を使用するブロックのためのテーブル、同アルゴリズム用テーブルであってＢｌｏｃｋＮｕｍ０でないブロックのためのテーブルのうちの少なくとも１つを生成することを特徴とする。
【００２６】
この時、前記暗号化された固定平文を抽出するステップは、入力された暗号ファイルから、暗号化に使用されたパスワードを検証するための暗号化ヘッダを抽出するステップと、前記暗号ファイルに対応する暗号化アルゴリズムによって前記暗号化された固定平文を抽出するステップとを含むことを特徴とする。
【００２７】
この時、前記再暗号化するステップは、前記暗号化されたファイルから抽出した暗号化ヘッダを再構成するステップと、有効性の検証された暗号化キーを用いて各暗号化されたブロックを復号化するステップと、復号化されたブロックを、再構成された暗号化ヘッダで使用された暗号化キーを用いて再暗号化するステップとを含むことを特徴とする。
【発明の効果】
【００２８】
本発明によれば、暗号化されたファイルを復号化する装置およびその方法は、２０００以下のバージョンのＭＳ−ＯＦＦＩＣＥファイルが使用する暗号化アルゴリズムで暗号化されたファイルのキーを探して、ファイルを予め約束した新たなパスワードで暗号化することにより、迂迴的に復号化する効果が得られる。また、この過程で、従来のパスワード探索方式を利用する時に発生する膨大な時間の所要と低い成功率という問題を解決することができる。
【００２９】
すなわち、本発明は、高速で高い成功率を有してファイルを復号化することを可能にする。
【図面の簡単な説明】
【００３０】
【図１】本発明の実施形態にかかる暗号化されたファイルを復号化する装置を概略的に示す構成図である。
【図２】本発明の実施形態にかかるテーブル生成部を示す構成図である。
【図３】本発明の実施形態にかかるキーチェーン生成部を示す図である。
【図４】本発明の実施形態にかかる生成部を示す図である。
【図５】本発明の実施形態にかかる資料抽出部を示す構成図である。
【図６】本発明の実施形態にかかる資料探索部を示す構成図である。
【図７】本発明の実施形態にかかるキー検証部を示す構成図である。
【図８】本発明の実施形態にかかる再暗号化部を示す構成図である。
【図９】本発明の実施形態にかかる暗号化されたファイルを復号化する方法を示すフローチャートである。
【発明を実施するための形態】
【００３１】
以下、本発明を添付した図面を参照して詳細に説明する。ここで、繰り返される説明、本発明の要旨を不明にする可能性がある公知の機能、および構成に関する詳細な説明は省略する。本発明の実施形態は、当業界における平均的な知識を有する者に本発明をより完全に説明するために提供されるものである。したがって、図面における要素の形状および大きさなどは、より明確な説明のために誇張されることがある。
【００３２】
以下、本発明の好ましい実施形態にかかる時間−メモリトレードオフ方法（Ｔｉｍｅ−ｍｅｍｏｒｙ  Ｔｒａｄｅ−ｏｆｆ、ＴＭＴＯ）を用いて、暗号化に使用されたパスワードでないキーを用いて暗号化されたＭＳ−ＯＦＦＩＣＥファイルを復号化する装置およびその方法について、添付した図面を参照して詳細に説明する。
【００３３】
図１は、本発明の実施形態にかかる暗号化されたファイルを復号化する装置を概略的に示す構成図である。
【００３４】
図１を参照すれば、暗号化されたファイルを復号化する装置は、テーブル生成部１００と、資料抽出部２００と、資料探索部３００と、キー検証部４００と、再暗号化部５００とを含む。
【００３５】
テーブル生成部１００は、ＭＳ−ＯＦＦＩＣＥファイル（例えば、ＭＳ−ＷＯＲＤ、ＭＳ−ＥＸＣＥＬ、ＭＳ−ＰＯＷＥＲＰＯＩＮＴ）に対して使用された暗号アルゴリズムに対応するＴＭＴＯテーブルを生成する。
【００３６】
資料抽出部２００は、暗号化されたファイルから暗号化ヘッダを抽出し、抽出した暗号化ヘッダに対応するブロックの暗号化された固定平文を抽出する。ここで、暗号化されたファイルは、暗号化されたＭＳ−ＯＦＦＩＣＥファイルに該当する。
【００３７】
資料探索部３００は、暗号化された固定平文に基づいてキーチェーンを生成して、キーチェーンに相応する最終キー候補群を生成し、最終キー候補群とＴＭＴＯテーブルを用いて開始キーを探索する。
【００３８】
キー検証部４００は、資料探索部３００で探索した結果に基づいて、暗号化ヘッダを用いてキーの有効性を検証する。
【００３９】
具体的には、資料探索部３００で見つかった開始キーからキーチェーンを生成し、生成したキーチェーンから暗号化された固定平文が存在するか否かを確認する。この時、キー検証部４００は、キーチェーンから暗号化された固定平文が存在しない場合、資料探索部３００の探索結果が誤ったものと判断する。反面、キー検証部４００は、キーチェーンから暗号化された固定平文が存在する場合、時間−メモリトレードオフ方法の原理によって、見つかったキー値のすぐ前のキー値が暗号化キーとなるので、暗号化キーを再暗号化部５００に伝達する。
【００４０】
再暗号化部５００は、キー検証部４００で検証されたキー、すなわち、暗号化キーを用いて暗号化されたファイルを再暗号化する。
【００４１】
次に、暗号化されたファイルを復号化する装置のテーブル生成部１００を、図２を参照して詳細に説明する。
【００４２】
図２は、本発明の実施形態にかかるテーブル生成部を示す構成図である。
【００４３】
図２を参照すれば、テーブル生成部１００は、選択部１１０と、キーチェーン生成部１２０と、生成部１３０とを含む。
【００４４】
選択部１１０は、ＭＳ−ＯＦＦＩＣＥ２０００以下のバージョンで使用される暗号化アルゴリズムによって２つのリダクション関数（ｒｅｄｕｃｔｉｏｎ  ｆｕｎｃｔｉｏｎ）のうちの１つを選択する。
【００４５】
キーチェーン生成部１２０は、選択部１１０で選択したリダクション関数に基づいてキーチェーンを生成し、生成したキーチェーンに基づいてチェーンの開始キーおよび最終キーを計算する。ここで、キーチェーン生成部１２０が生成したキーチェーンは、虹キーチェーン（ｒａｉｎｂｏｗ  ｋｅｙ  ｃｈａｉｎ）形態であることを特徴とする。
【００４６】
生成部１３０は、開始キーおよび最終キーを用いて、暗号化アルゴリズムによってテーブルを生成する。この時、テーブル生成部１３０は、暗号化アルゴリズムによってテーブルＡ（計１種）、またはテーブルＢ０とテーブルＢ１（計２種）を生成する。
【００４７】
テーブルＡは、ＭＳ−ＷＯＲＤ、ＭＳ−ＥＸＣＥＬファイルに使用される４０−ｂｉｔ  ＲＣ４アルゴリズム用テーブルに該当する。
【００４８】
テーブルＢ０は、ＭＳ−ＰＯＷＥＲＰＯＩＮＴファイルに使用されるＣｒｙｐｔｏＡＰＩ  ＲＣ４アルゴリズム用テーブルであってＢｌｏｃｋＮｕｍ０を使用するブロックのためのテーブルに該当する。
【００４９】
テーブルＢ１は、同アルゴリズム用テーブルであってＢｌｏｃｋＮｕｍ０でないブロックのためのテーブルに該当する。
【００５０】
テーブルを生成する時、キーチェーン生成部１２０で使用するチェーンの長さＮＣＯＬと、生成されたテーブルの列の個数ＮＲＯＷは、数式１のような条件を満足しなければならない。
〔数式１〕
ＮＣＯＬ＊ＮＲＯＷ＝２４０
選択部１１０で選択したリダクション関数は、ＲＣ−４暗号化アルゴリズムの出力８バイトまたは１２バイトを受信して、この中から一部のビットを抽出して計４０ビット（５バイト）を出力する関数である。
【００５１】
選択部１１０で選択したリダクション関数からどのビットを抽出するかは、米国マイクロソフト社で公開した、ＭＳ−ＯＦＦＩＣＥ２０００以下のバージョンで使用する暗号化方法に対する文書の内容を分析して得られた内容によって決定され、ＭＳ−ＯＦＦＩＣＥ文書ファイルを構成する各データブロックの最初の８バイトまたは１２バイトの中から、常に値が固定されるビットの位置を持ってくることを特徴とする。
【００５２】
このような位置は、ＭＳ−ＯＦＦＩＣＥファイルの使用する暗号化アルゴリズムが４０−ｂｉｔ  ＲＣ−４アルゴリズムの場合には計１セット、ＣｒｙｐｔｏＡＰＩ  ＲＣ−４アルゴリズムの場合に計２セットが存在し、それによってリダクション関数も同数だけ存在する。したがって、生成されるテーブルの種類も１種または２種となる。
【００５３】
次に、テーブル生成部１００のキーチェーン生成部１２０を、図３を参照して詳細に説明する。
【００５４】
図３は、本発明の実施形態にかかるキーチェーン生成部を示す図である。
【００５５】
図３を参照すれば、キーチェーン生成部１２０は、暗号文生成部１２１と、リダクション関数部１２２とを含む。
【００５６】
まず、キーチェーン生成部１２０は、任意の４０ビット（５バイト）の開始キーと、８バイトまたは１２バイトの長さの固定平文とを受信して、動作を開始する。この時、固定平文の特定位置は、特定の値に固定されていなければならず、当該位置およびその値は、マイクロソフト社の公開文書によって特定され、リダクション関数部１２２で収集しているビットの位置およびその値と一致しなければならない。
【００５７】
暗号文生成部１２１は、入力された開始キーと固定平文にＲＣ−４暗号化アルゴリズムを適用し、８バイトまたは１２バイトの長さの暗号文を生成する。
【００５８】
リダクション関数部１２２は、暗号文生成部１２１で生成した暗号文を、選択部１１０で選択したリダクション関数に適用し、５バイトの結果物を出力する。ここで、結果物を新たなキーに設定し、前記過程をＮＣＯＬ回繰り返した結果物を最終キーに設定する。
【００５９】
すなわち、リダクション関数部１２２は、暗号文生成部１２１で生成した暗号文を、リダクション関数に、前に設定された繰り返し回数だけ適用した結果物を最終キーに設定する。
【００６０】
本発明の実施形態にかかるキーチェーン生成部１２０では、出力結果を４０ビットの整数と見なして、繰り返し回数を加えた結果を使用する方式の変形を適用することができ、これに限定されない。
【００６１】
次に、テーブル生成部１００の生成部１３０を、図４を参照して詳細に説明する。
【００６２】
図４は、本発明の実施形態にかかる生成部を示す図である。
【００６３】
図４を参照すれば、生成部１３０は、キーチェーン生成部１２０から開始キーおよび最終キーの対を受信する。
【００６４】
生成部１３０は、第１ファイル生成部１３１と、第２ファイル生成部１３２とを含む。
【００６５】
第１ファイル生成部１３１は、５バイトの長さの開始キーおよび最終キーの下位１バイトを抽出して計６バイトの格納データを生成し、６バイトの格納データを最終キーを基準として整列および併合してキーチェーンデータファイル１３３を生成する。
【００６６】
第２ファイル生成部１３２は、５バイトの長さの最終キーの上位３バイトを抽出し、インデックス計算を行ってインデックスファイル１３４を生成する。
【００６７】
本発明の実施形態にかかる生成部１３０で生成されたファイル、すなわち、キーチェーンデータファイル１３３とインデックスファイル１３４は、テーブルに該当する。
【００６８】
このように、テーブル生成部１００でテーブルを生成する過程は、暗号化されたファイルを復号化する装置に適用する時、たった１回行われることで十分である。ただし、１回行う時、複数のテーブルを生成することができる。
【００６９】
本発明の実施形態にかかるテーブル生成部１００は、キーチェーンの長さをＮＣＯＬ＝５５００に設定した場合、テーブル１個の大きさが約１．２Ｇ程度であってよい。
【００７０】
次に、暗号化されたファイルを復号化する装置の資料抽出部２００を、図５を参照して詳細に説明する。
【００７１】
図５は、本発明の実施形態にかかる資料抽出部を示す構成図である。
【００７２】
まず、資料抽出部２００は、暗号化されたファイル、例えば、暗号化されたＭＳ−ＯＦＦＩＣＥファイル（＝図５の暗号ファイル）を受信する。
【００７３】
図５を参照すれば、資料抽出部２００は、暗号化ヘッダ抽出部２１０と、固定平文抽出部２２０とを含む。
【００７４】
暗号化ヘッダ抽出部２１０は、入力された暗号ファイル（Ｅ）から、暗号化に使用されたパスワードを検証するために必要な３つの値、すなわち、Ｓａｌｔ、ＥｎｃｒｙｐｔｅｄＶｅｒｉｆｉｅｒおよびＥｎｃｒｙｐｔｅｄＶｅｒｉｆｉｅｒＨａｓｈを抽出する。
【００７５】
本発明の実施形態にかかる暗号ファイルは、パスワードでないパスワードと任意に決定されたＳａｌｔから誘導された暗号キーを用いて、ＲＣ−４アルゴリズムによってファイルを構成する各ブロックを、そのブロックの番号（ＢｌｏｃｋＮｕｍ）に合わせて暗号化し、ファイルの内部に使用されたＳａｌｔと共に、暗号キー検証値のＥｎｃｒｙｐｔｅｄＶｅｒｉｆｉｅｒおよびＥｎｃｒｙｐｔｅｄＶｅｒｉｆｉｅｒＨａｓｈを記録しておく。
【００７６】
ユーザがファイルを復号化するためにパスワードを入力した時は、このパスワードの有効性を検証するために入力されたパスワードとＳａｌｔから暗号キーを誘導した後、この値をＥｎｃｒｙｐｔｅｄＶｅｒｉｆｉｅｒおよびＥｎｃｒｙｐｔｅｄＶｅｒｉｆｉｅｒＨａｓｈを用いて検証する。
【００７７】
パスワードとＳａｌｔから暗号キーを誘導する過程は、暗号化アルゴリズムとして、４０−ｂｉｔ  ＲＣ−４アルゴリズム、またはＣｒｙｐｔｏＡＰＩ  ＲＣ−４アルゴリズムが使用されたかによってやや差がある。
【００７８】
固定平文抽出部２２０は、第１固定平文抽出部２２１と、第２固定平文抽出部２２２とを含む。
【００７９】
第１固定平文抽出部２２１および第２固定平文抽出部２２２はそれぞれ、４０−ｂｉｔ  ＲＣ−４アルゴリズムが使用された暗号化と、ＣｒｙｐｔｏＡＰＩ  ＲＣ−４アルゴリズムが使用された暗号化に対応して、暗号化されたファイルを構成する暗号化された各ブロックの最初の８バイトまたは１２バイトから、４０ビット（５バイト）の長さの暗号化された固定平文を抽出する。
【００８０】
固定平文抽出部２２０で暗号化された固定平文を抽出する方法は、図３と同様に、固定平文からリダクション関数を用いて特定位置の４０ビット（５バイト）を抽出する方法に類似している。
【００８１】
４０−ｂｉｔ  ＲＣ−４アルゴリズムが使用された場合は、第１固定平文抽出部２２１に沿ってＢｌｏｃｋＮｕｍ０を使用するブロックから、たった１つの暗号化された固定平文（図５の暗号化された固定平文Ａ）を抽出することで十分である。
【００８２】
反面、ＣｒｙｐｔｏＡＰＩ  ＲＣ−４アルゴリズムが使用された場合は、第２固定平文抽出部２２２に沿ってすべてのブロック番号に対して当該ＢｌｏｃｋＮｕｍを有するブロックから、暗号化された固定平文（図５の暗号化された固定平文Ｂ０〜暗号化された固定平文Ｂｎ）を抽出しなければならない。したがって、ＣｒｙｐｔｏＡＰＩ  ＲＣ−４アルゴリズムが使用された場合、抽出される暗号化された固定平文の個数は、暗号化されたファイルを構成する暗号化されたブロックの個数と等しい。
【００８３】
次に、暗号化されたファイルを復号化する装置の資料探索部３００を、図６を参照して詳細に説明する。
【００８４】
図６は、本発明の実施形態にかかる資料探索部を示す構成図である。
【００８５】
図６を参照すれば、資料探索部３００は、最終キー候補群生成部３１０と、開始キー探索部３２０とを含む。
【００８６】
最終キー候補群生成部３１０は、暗号化された固定平文を用いてＮＣＯＬ個のキーチェーンを生成することにより、ＮＣＯＬ個の最終キー候補群を生成する。
【００８７】
具体的には、最終キー候補群生成部３１０は、資料抽出部２００から抽出された暗号化された固定平文を受信して、暗号化された固定平文それぞれに対して次の過程を行う。
【００８８】
暗号化された固定平文はそれぞれ４０ビット（５バイト）の長さであるので、これを、図３に示しているキーチェーン生成部１２０で使用する開始キーのように取り扱うが、ＲＣ−４暗号化アルゴリズムとリダクション関数を適用する過程を繰り返す回数を、それぞれ０回行った後終了、１回行った後終了〜（ＮＣＯＬ−１）回行った後終了して、ＮＣＯＬ個の最終キーを得る。この過程を通じて取得したＮＣＯＬ個の最終キーが、図６に示している最終キー候補群である。この過程において、キーチェーン生成部１２０に関して説明した部分において、繰り返し回数を加えた結果を使用する方式の変形は、繰り返し回数でない、変形した値を基準とする。例えば、３回行った後終了して取得した最終キーがあれば、最終キーを計算する時、計３回のリダクション関数を適用する過程を通過しなければならない。この時、一番目のリダクション関数部１２２に加える変形は（ＮＣＯＬ−２）に対応する変形を加え、二番目は（ＮＣＯＬ−１）に対応する変形を、最後の三番目はＮＣＯＬに対応する変形を加えることで、当該最終キーが計算過程で最後に通過するリダクション関数に対する変形は、ＮＣＯＬに対応する変形となるようにする。
【００８９】
次に、開始キー探索部３２０は、最終キー候補群生成部３１０で生成した最終キー候補群を、テーブル生成部１００で生成したテーブルから探索して、最終キー候補群に対応する開始キーを探索する。
【００９０】
図４に記載しているように、テーブルは、最終キーの上位３バイトからなるインデックスファイル１３４と、開始キーおよび最終キーの上位１バイトからなる格納データを最終キーを基準として整列したキーチェーンデータファイル１３３とから構成されている。
【００９１】
したがって、開始キー探索部３２０は、最終キーの候補群の各キーの上位３バイトをインデックスファイル１３４から検索し、検索したインデックスファイルに対応するキーチェーンデータファイル１３３の当該範囲を探索して、最終キーの下位１バイトと一致する値を有する格納データを探索する。探索に成功すると、最終キー候補群の各キーに対応する開始キーを探索することができる。
【００９２】
次に、暗号化されたファイルを復号化する装置のキー検証部４００を、図７を参照して詳細に説明する。
【００９３】
図７は、本発明の実施形態にかかるキー検証部を示す構成図である。
【００９４】
図７を参照すれば、キー検証部４００は、キーチェーン生成部４１０と、確認部４２０とを含む。
【００９５】
キーチェーン生成部４１０は、図２のキーチェーン生成部１２０と同様の動作によってキーチェーンを生成するものであるが、資料探索部３００で探索した開始キーを受信して、最終キーを計算する過程で得られる（ＮＣＯＬ−１）個の４０ビット（５バイト）の長さのキー値をすべて出力する。
【００９６】
確認部４２０は、資料探索部３００で探索した開始キーに対応する最終キーと、キーチェーン生成部４１０で出力する（ＮＣＯＬ−１）個のキー値とを合わせて、計ＮＣＯＬ個のキー値の中から、最初に暗号化されたファイルから抽出した暗号化された固定平文が存在するかを確認する。
【００９７】
確認部４２０は、暗号化された固定平文が存在しない場合、開始キー探索部３２０で別の開始キーを探索しなければならない。
【００９８】
確認部４２０は、暗号化された固定平文が存在する場合、時間−メモリトレードオフ手法の原理によって、当該キーのすぐ前のキーが暗号化キーとなるので、暗号化キーを再暗号化部５００に伝達する。
【００９９】
次に、暗号化されたファイルを復号化する装置の再暗号化部５００を、図８を参照して詳細に説明する。
【０１００】
図８は、本発明の実施形態にかかる再暗号化部を示す構成図である。
【０１０１】
図８を参照すれば、再暗号化部５００は、ヘッダ再暗号化部５１０と、ブロック復号化部５２０と、ブロック再暗号化部５３０とを含む。
【０１０２】
ヘッダ再暗号化部５１０は、入力された暗号ファイル（Ｅ）から抽出した暗号化ヘッダを再構成する。すなわち、ヘッダ再暗号化部５１０は、暗号化ヘッダ抽出部２１０で抽出したＳａｌｔ、ＥｎｃｒｙｐｔｅｄＶｅｒｉｆｉｅｒおよびＥｎｃｒｙｐｔｅｄＶｅｒｉｆｉｅｒＨａｓｈを、新たなパスワード（ＮＰ）から誘導された新たな暗号化キー、すなわち、確認部４２０で伝達した暗号化キーに対応して変形させる。
【０１０３】
ヘッダ再暗号化部５１０は、暗号化ヘッダ抽出部２１０で抽出したＳａｌｔを変更するか変更しなくてよく、新たな暗号化キーを、“１２３４”などの、予め定められた記憶しやすいパスワードから、暗号化アルゴリズムを用いて導出された値を使用することができ、これに限定されない。
【０１０４】
ブロック復号化部５２０は、確認部４２０で伝達した暗号化キーを用いて各暗号化されたブロックを復号化する。
【０１０５】
仮に、ＭＳ−ＯＦＦＩＣＥファイルの暗号化に４０−ｂｉｔ  ＲＣ−４アルゴリズムが使用されたならば、１つの暗号化キーですべてのブロックを復号化することができるが、ＣｒｙｐｔｏＡＰＩ  ＲＣ−４アルゴリズムが使用されたならば、互いに異なるＢｌｏｃｋＮｕｍを有する暗号化されたブロックに対して互いに異なる暗号化キーが必要である。したがって、この場合には、資料探索部３００とキー検証部４００ですべてのＢｌｏｃｋＮｕｍに対する暗号化キーを探索しなければならない。
【０１０６】
すなわち、ブロック復号化部５２０は、ＢｌｏｃｋＮｕｍに対応する暗号化キーを引き受けて、暗号化されたファイルの各ブロックを復号化する。
【０１０７】
ブロック再暗号化部５３０は、ブロック復号化部５２０で復号化されたブロックを、ヘッダ再暗号化部５１０で使用された新たなパスワード（ＮＰ）およびそれから誘導される暗号化キーを用いて再暗号化する。この時、パスワードを知っていれば、すべてのＢｌｏｃｋＮｕｍに対して必要な暗号化キーを誘導できるため、ブロック再暗号化部５３０に対して２つのアルゴリズムの違いはない。すべてのブロックが新たに暗号化されて１つのファイルとして格納されると、そのファイルは、新たなパスワード（ＮＰ）で復号化可能なＭＳ−ＯＦＦＩＣＥファイルとなって、ユーザが内容を確認することができる。
【０１０８】
次に、暗号化されたファイルを復号化する方法を、図９を参照して詳細に説明する。
【０１０９】
図９は、本発明の実施形態にかかる暗号化されたファイルを復号化する方法を示すフローチャートである。
【０１１０】
図９を参照すれば、暗号化されたファイルを復号化する装置のテーブル生成部１００は、ＭＳ−ＯＦＦＩＣＥファイル（例えば、ＭＳ−ＷＯＲＤ、ＭＳ−ＥＸＣＥＬ、ＭＳ−ＰＯＷＥＲＰＯＩＮＴ）に対して使用された暗号アルゴリズムに対応するＴＭＴＯテーブルを生成する（Ｓ１００）。
【０１１１】
暗号化されたファイルを復号化する装置の資料抽出部２００は、暗号化されたファイルから暗号化ヘッダを抽出し、抽出した暗号化ヘッダに対応するブロックの暗号化された固定平文を抽出する（Ｓ２００）。
【０１１２】
暗号化されたファイルを復号化する装置の資料探索部３００は、暗号化された固定平文に基づいてキーチェーンを生成して、キーチェーンに相応する最終キー候補群を生成し、最終キー候補群とＴＭＴＯテーブルを用いて開始キーを探索する（Ｓ３００）。
【０１１３】
暗号化されたファイルを復号化する装置のキー検証部４００は、Ｓ３００ステップで見つかった開始キーからキーチェーンを生成し、生成したキーチェーンから暗号化された固定平文が存在するか否かを確認する（Ｓ４００）。
【０１１４】
Ｓ４００ステップでキーチェーンから暗号化された固定平文が存在しない場合には、Ｓ３００ステップで見つけた開始キーが誤ったものと判断し、Ｓ３００ステップと同様に、開始キーを再探索しなければならない。
【０１１５】
反面、キーチェーンから暗号化された固定平文が存在する場合には、時間−メモリトレードオフ方法の原理によって、見つかったキー値のすぐ前のキー値が暗号化キーとなるので、暗号化キーを次のステップに適用する。
【０１１６】
暗号化されたファイルを復号化する装置の再暗号化部５００は、Ｓ４００ステップで検証されたキー、すなわち、暗号化キーを用いて暗号化されたファイルを再暗号化する（Ｓ５００）。
【０１１７】
このように、本発明の実施形態にかかる暗号化されたファイルを復号化する装置は、２０００以下のバージョンのＭＳ−ＯＦＦＩＣＥファイルが使用する暗号化アルゴリズムで暗号化されたファイルのキーを探して、ファイルを予め約束した新たなパスワードで暗号化することにより、迂迴的に復号化する効果が得られる。
【０１１８】
以上、図面および明細書で最適な実施形態が開示された。ここで特定の用語が使用されたが、これは、単に本発明を説明するための目的で使用されたものであって、意味の限定や特許請求の範囲に記載された本発明の範囲を制限するために使用されたものではない。そのため、本技術分野における通常の知識を有する者であれば、これから多様な変形および均等な他の実施形態が可能であることを理解することができる。したがって、本発明の真の技術的保護範囲は、添付した特許請求の範囲の技術的思想によって定められなければならない。
【符号の説明】
【０１１９】
１００；テーブル生成部
１１０；選択部
１２０；キーチェーン生成部
１２１；暗号文生成部
１２２；リダクション関数部
１３０；生成部
１３１；第１ファイル生成部
１３２；第２ファイル生成部
２００；資料抽出部
２１０；暗号化ヘッダ抽出部
２２０；固定平文抽出部
２２１；第１固定平文抽出部
２２２；第２固定平文抽出部
３００；資料探索部
３１０；最終キー候補群生成部
３２０；開始キー探索部
４００；キー検証部
４１０；キーチェーン生成部
４２０；確認部
４３０；キーチェーン探索部
５００；再暗号化部
５１０；ヘッダ再暗号化部
５２０；ブロック復号化部
５３０；ブロック再暗号化部
【図１】
0005914604.tif 000003
【図２】
0005914604.tif 000004
【図３】
0005914604.tif 000005
【図４】
0005914604.tif 000006
【図５】
0005914604.tif 000007
【図６】
0005914604.tif 000008
【図７】
0005914604.tif 000009
【図８】
0005914604.tif 000010
【図９】
0005914604.tif 000011