(57)【特許請求の範囲】
【請求項１】
公開鍵暗号方式における公開鍵と秘密鍵を生成する鍵生成プロセスと、ファイルの暗号化プロセスと、暗号化されたファイルの復号化プロセスとをコンピュータに実行させるファイル暗号化・復号化プログラムであって、
ある企業について公開鍵暗号方式の企業公開鍵を、製品としてのプログラムに共通の公開鍵暗号方式の製品秘密鍵でデジタル署名された企業公開鍵を含み、
前記企業に属するコンピュータＡと、コンピュータＢと、コンピュータＣの３種類のコンピュータにそれぞれにインストールされ、
前記鍵生成プロセスでは、グループ公開鍵と、当該グループ公開鍵に対応するグループ秘密鍵を生成させ、
前記コンピュータＡは、前記グループ秘密鍵と前記企業公開鍵に対応する企業秘密鍵を記憶しておらず、
前記コンピュータＢは、前記グループ秘密鍵を記憶し、前記企業秘密鍵を記憶しておらず、
前記コンピュータＣは、前記企業秘密鍵を記憶し、
前記暗号化プロセスでは、前記コンピュータＡ〜Ｃのいずれかに、
前記デジタル署名された企業公開鍵を前記製品秘密鍵に対応する製品公開鍵で検証して前記企業公開鍵を得るステップと、
前記デジタル署名された企業公開鍵を検証して前記企業公開鍵を得るステップを実行せずに、前記企業公開鍵を読み込んだ場合、当該暗号化プロセスを中止するステップと、
共通鍵暗号方式の鍵（セッション鍵）ａ１を生成するセッション鍵生成ステップと、
平文のファイルｆ１を前記セッション鍵生成ステップにより生成したセッション鍵ａ１により暗号化して暗号化ファイルｆ２を生成するファイル暗号化ステップと、
前記グループ公開鍵が記憶されている場合、前記セッション鍵ａ１を当該グループ公開鍵で暗号化して暗号化セッション鍵ａ２を生成する第１暗号化ステップと、
前記企業公開鍵により前記セッション鍵ａ１を暗号化して暗号化セッション鍵ａ３を生成する第２暗号化ステップと、
前記暗号化ファイルｆ２と、前記暗号化セッション鍵ａ２およびａ３とを内容として含む１つの結合ファイルを作成する結合ファイル作成ステップと、
を実行させ、
前記ファイルの復号化プロセスでは、
前記コンピュータＡ〜Ｃのいずれかのコンピュータに、前記結合ファイルを前記暗号化ファイルｆ２と、前記暗号化セッション鍵ａ２およびａ３とに分解するファイル分解ステップを実行させるとともに、
前記コンピュータＡにおいて、前記セッション鍵ａ１が記憶されている場合、当該コンピュータＡに、前記ファイル分解ステップにて得た前記暗号化ファイルｆ２を当該セッション鍵ａ１により復号して前記平文ファイルｆ１を取得する平文ファイル復号ステップを実行させ、
前記コンピュータＢにおいて、前記セッション鍵ａ１が記憶されていない場合、当該コンピュータＢに、前記ファイル分解ステップにより得た前記暗号化セッション鍵ａ２を前記グループ秘密鍵により前記セッション鍵ａ１に復号するステップと、前記平文ファイル復号ステップとを含む第１復号ステップを実行させ、
前記コンピュータＣにおいて、前記セッション鍵ａ１と前記グループ秘密鍵が記憶されていない場合、当該コンピュータＣに、前記ファイル分解ステップにより得た前記暗号化セッション鍵ａ３を前記企業秘密鍵により前記セッション鍵ａ１に復号するステップと、前記平文ファイル復号ステップとを含む第２復号ステップを実行させる、
ことを特徴とするファイル暗号化・復号化プログラム。
【請求項２】
公開鍵暗号方式における公開鍵と秘密鍵を生成する鍵生成プロセスと、ファイルの暗号化プロセスと、暗号化されたファイルの復号化プロセスとをコンピュータに実行させるファイル暗号化・復号化プログラムであって、
ある企業について公開鍵暗号方式の企業公開鍵を、製品としてのプログラムに共通の公開鍵暗号方式の製品秘密鍵でデジタル署名された企業公開鍵を含み、
前記企業に属するコンピュータＡと、コンピュータＢと、コンピュータＣの３種類のコンピュータにそれぞれにインストールされ、
前記鍵生成プロセスは、グループ公開鍵と、当該グループ公開鍵に対応するグループ秘密鍵を生成させ、
前記コンピュータＡは、前記グループ秘密鍵と前記企業公開鍵に対応する企業秘密鍵を記憶しておらず、
前記コンピュータＢは、前記グループ秘密鍵を記憶し、前記企業秘密鍵を記憶しておらず、
前記コンピュータＣは、前記企業秘密鍵を記憶し、
前記暗号化プロセスでは、前記コンピュータＡ〜Ｃのいずれかに、
前記デジタル署名された企業公開鍵を前記製品秘密鍵に対応する製品公開鍵で検証して前記企業公開鍵を得るステップと、
前記デジタル署名された企業公開鍵を検証して前記企業公開鍵を得るステップを実行せずに、前記企業公開鍵を読み込んだ場合、当該暗号化プロセスを中止するステップと、
ユーザ入力されたパスワードｐ１を記憶するパスワード入力ステップと、
共通鍵暗号方式の鍵（セッション鍵）ａ１を生成するセッション鍵生成ステップと、
平文のファイルｆ１を前記セッション鍵ａ１により暗号化して暗号化ファイルｆ２を生成するファイル暗号化ステップと、
前記セッション鍵ａ１を前記パスワードｐ１に関連づけするとともに所定のアルゴリズムに基づいて変形した変形セッション鍵ａ４を生成するセッション鍵変形ステップと、
前記グループ公開鍵が記憶されている場合、前記パスワードｐ１を当該グループ公開鍵により暗号化して暗号化パスワードｐ２を生成する第１暗号化ステップと、
前記企業公開鍵により前記パスワードｐ１を暗号化して暗号化パスワードｐ３を生成する第２暗号化ステップと、
前記暗号化ファイルｆ２と、前記変形セッション鍵ａ４と、前記暗号化パスワードｐ２およびｐ３とを内容として含んだ１つの結合ファイルを作成する結合ファイル作成ステップと、
を実行させ、
前記ファイルの復号化プロセスでは、
前記コンピュータＡ〜Ｃのいずれかのコンピュータに、前記結合ファイルを、前記暗号化ファイルｆ２と、前記変形セッション鍵ａ４と、前記暗号化パスワードｐ２およびｐ３とに分解するファイル分解ステップを実行させるとともに、
前記コンピュータＡにおいて、入力されたパスワードｐ４が前記パスワードｐ１に一致した場合、当該コンピュータＡに、前記変形セッション鍵ａ４を前記所定のアルゴリズムに基づいて前記セッション鍵ａ１に復元するセッション鍵復元ステップと、前記ファイル分解ステップにて得た前記暗号化ファイルｆ２を当該セッション鍵復元ステップにて復元した前記セッション鍵ａ１により復号して前記平文ファイルｆ１を取得する平文ファイル復号ステップとを実行させ、
前記コンピュータＢに、前記ファイル分解ステップにより得た前記暗号化パスワードｐ２を前記グループ秘密鍵により前記パスワードｐ１に復号するステップと、前記セッション鍵復元ステップと、前記平文ファイル復号ステップとを含む第１復号ステップを実行させ、
前記コンピュータＣに、前記ファイル分解ステップにより得た前記暗号化パスワードｐ３を前記企業秘密鍵により前記パスワードｐ１に復号するステップと、前記セッション鍵復元ステップと、前記平文ファイル復号ステップとを含む第２復号ステップを実行させる
ことを特徴とするファイル暗号化・復号化プログラム。
【請求項３】
請求項１において、
前記暗号化プロセスでは、
パスワードｐ１をユーザ入力により受け付けるパスワード入力ステップと、
前記パスワードｐ１を所定のアルゴリズムに基づいて共通鍵暗号方式のセッション鍵ｐ４に変形させる変形セッション鍵生成ステップと、
前記セッション鍵ａ１に基づいてセッション鍵の検証データｄ１を生成させる検証データ生成ステップと、
前記セッション鍵ａ１を前記セッション鍵ｐ４で暗号化した暗号化セッション鍵ａ５を生成させる第３暗号化ステップと、
をさらに実行させるともに、
前記結合ファイル作成ステップでは、前記結合ファイルの内容に、前記検証データｄ１と、前記暗号化セッション鍵ａ５をさらに含ませ、
前記ファイル分解ステップでは、前記結合ファイルを、前記暗号化ファイルｆ２と、前記暗号化セッション鍵ａ２と、前記暗号化セッション鍵ａ３とに加え、前記検証データｄ１と、前記暗号化セッション鍵ａ５とに分解させ、
前記復号化プロセスでは、
前記コンピュータＡに、入力されたパスワードｐ２を前記所定のアルゴリズムに基づいて共通鍵暗号方式のセッション鍵ｐ６に変形するステップと、当該セッション鍵ｐ６が前記セッション鍵ｐ４に一致した場合、当該コンピュータＡに、当該セッション鍵ｐ４により前記ファイル分解ステップにより得た暗号化セッション鍵ａ５を前記セッション鍵ａ１に復号するステップとを含む第３復号ステップを実行させるとともに、
前記コンピュータＢに、前記暗号化セッション鍵ａ２を前記グループ秘密鍵によって復号した鍵を前記検証データｄ１に基づいて検証させるとともに、当該鍵が前記セッション鍵ａ１であると認証した場合に限って、前記第１復号ステップを実行させ、
前記コンピュータＣに、前記暗号化セッション鍵ａ３を前記企業秘密鍵によって復号したセッション鍵を前記検証データｄ１に基づいて検証させるとともに、当該鍵が前記セッション鍵ａ１であると認証した場合に限って、前記第２復号ステップを実行させる、
ことを特徴とするファイルの暗号化・復号化プログラム。
【請求項４】
請求項１〜３のいずれかにおいて、前記企業秘密鍵は、前記製品公開鍵に対応する製品秘密鍵でデジタル認証されており、前記復号化プロセスでは、前記コンピュータＣが記憶している秘密鍵ｙを前記製品公開鍵により検証して当該秘密鍵ｙが前記企業秘密鍵であると認証した場合に限り、当該コンピュータＣに前記第２復号ステップを実行させることを特徴とするファイル暗号化・復号化プログラム。
【請求項５】
請求項１〜４に記載のいずれかのファイル暗号化・復号化プログラムを記憶したプログラム格納媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、コンピュータにインストールされて、ファイルの暗号化・復号化を実行するコンピュータプログラムと、そのプログラムの格納媒体に関する。
【背景技術】
【０００２】
ファイルの暗号化は、機密文書などの閲覧者を制限したり、ネットワークを介して送信する際に情報が漏洩するのを防止したりするために必要である。暗号化の方式としては、暗号化と復号化とで同じ鍵（共通鍵）を使う共通鍵暗号方式と、公開鍵と秘密鍵の異なる１組の鍵を使う公開鍵暗号方式とがある。また、暗号化・復号化のアルゴリズムも各種ある。なお、暗号化・復号化については、以下の非特許文献に詳しく記載されている。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
近年、企業内の秘密情報が社外に漏洩する事件が多発し、企業経営に甚大な被害を与えるケースが多い。そのため、秘密情報の漏洩対策として、ファイルを暗号化して管理することが必要となる。また、ファイルの暗号化・復号化のためのソフトウエアを、企業内で社員が使用するパーソナルコンピュータに統一してインストールしておく必要もある。
【０００４】
しかし、ファイルを暗号化することは、当然、その暗号化ファイルを復号するための鍵を持つ人間にしかファイルの内容を確認できない、ということにもなる。暗号化のためのソフトウエアを企業内で統一したとしても、秘密情報へのアクセスを許可した人間に該当の情報を暗号化されて社外に持ち出されると、その暗号化されたファイルの内容を他者が簡単に確認・チェックできず、秘密情報の漏洩事実の発見が遅れ、被害をさらに拡大させてしまう結果にもなり得る。
【０００５】
このような問題を解決するために、例えば、企業内の暗号化ソフトウエアを統一した上で暗号化と復号化のための鍵を全て登録制にし、その鍵を所定の権限を有する人間に管理させる、というシステムを作るという方法もある。しかし、この方法は、管理する鍵の数が大量になり、実際的ではないし、また、秘密裏に生成された鍵については管理することが事実上不可能となる。
【０００６】
本発明者らは、上記課題に鑑み、企業内で統一して使用する暗号化・復号化プログラムが備えるべき機能について考察し、本発明を創作した。本発明の目的は、暗号化のための鍵を自在に生成できるとともに、その鍵で暗号化されたファイルを、例えば、そのファイルの作成者の上位の監督者が管理する「マスターキー」で復号できるようにするとともに、そのマスターキー自体も厳重に管理できるようにしたファイル暗号化・復号化プログラムを提供することにある。
【課題を解決するための手段】
【０００７】
本発明は、以下の事項（１）〜（９）によって特定されるファイル暗号化・復号化プログラムである。
（１）公開鍵暗号方式における公開鍵と秘密鍵を生成する鍵生成プロセスと、ファイルの暗号化プロセスと、暗号化されたファイルの復号化プロセスとをコンピュータに実行させること
（２）ある企業について公開鍵暗号方式の企業公開鍵を、製品としてのプログラムに共通の公開鍵暗号方式の製品秘密鍵でデジタル署名された企業公開鍵を含むこと
（３）前記企業に属するコンピュータＡと、コンピュータＢと、コンピュータＣの３種類のコンピュータにそれぞれにインストールされること
（４）前記鍵生成プロセスでは、グループ公開鍵と、当該グループ公開鍵に対応するグループ秘密鍵を生成させること
（５）前記コンピュータＡは、前記グループ秘密鍵と前記企業公開鍵に対応する企業秘密鍵を記憶していないこと
（６）前記コンピュータＢは、前記グループ秘密鍵を記憶し、前記企業秘密鍵を記憶していないこと
（７）前記コンピュータＣは、前記企業秘密鍵を記憶していること
（８）前記暗号化プロセスでは、前記コンピュータＡ〜Ｃのいずれかに、（８−１）〜（８−７）に記載のステップを実行させること
（８−１）前記デジタル署名された企業公開鍵を、前記製品秘密鍵に対応する製品公開鍵で検証して前記企業公開鍵を得るステップ
（８−２）前記デジタル署名された企業公開鍵を検証して前記企業公開会議を得るステップを実行せずに、前記企業公開鍵を読み込んだ場合、当該暗号化プロセスを中止するステップ
（８−３）共通鍵暗号方式の鍵（セッション鍵）ａ１を生成するセッション鍵生成ステップ
（８−４）平文のファイルｆ１を前記セッション鍵生成ステップにより生成したセッション鍵ａ１により暗号化して暗号化ファイルｆ２を生成するファイル暗号化ステップ
（８−５）前記グループ公開鍵が記憶されている場合、前記セッション鍵ａ１を当該グループ公開鍵で暗号化して暗号化セッション鍵ａ２を生成する第１暗号化ステップ
（８−６）前記企業公開鍵により前記セッション鍵ａ１を暗号化して暗号化セッション鍵ａ３を生成する第２暗号化ステップ
（８−７）前記暗号化ファイルｆ２と、前記暗号化セッション鍵ａ２およびａ３とを内容として含む１つの結合ファイルを作成する結合ファイル作成ステップ
（９）前記ファイルの復号化プロセスは、以下の事項（９−１）〜（９−４）を含んでいること
（９−１）前記コンピュータＡ〜Ｃのいずれかのコンピュータに、前記結合ファイルを暗号化ファイルｆ２と、暗号化セッション鍵ａ２およびａ３とに分解するファイル分解ステップを実行させること
（９−２）前記コンピュータＡにおいて、前記セッション鍵ａ１が記憶されている場合、当該コンピュータＡに、前記ファイル分解ステップにて得た前記暗号化ファイルｆ２を当該セッション鍵ａ１により復号して前記平文ファイルｆ１を取得する平文ファイル復号ステップを実行させること
（９−３）前記コンピュータＢにおいて、前記セッション鍵ａ１が記憶されていない場合、当該コンピュータＢに、前記ファイル分解ステップにより得た前記暗号化セッション鍵ａ２を前記グループ秘密鍵により前記セッション鍵ａ１に復号するステップと、前記平文ファイル復号ステップとを含む第１復号ステップを実行させること
（９−４）前記コンピュータＣにおいて、前記セッション鍵ａ１と前記グループ秘密鍵が記憶されていない場合、当該コンピュータＣに、前記ファイル分解ステップにより得た前記暗号化セッション鍵ａ３を前記企業秘密鍵により前記セッション鍵ａ１に復号するステップと、前記平文ファイル復号ステップとを含む第２復号ステップを実行させること
【０００８】
また本発明は、上記事項（１）〜（７）と、以下の事項（21）（22）によって特定されるファイル暗号化・復号化プログラムとすることもできる。
（21）前記暗号化プロセスは、前記コンピュータＡ〜Ｃのいずれかに、上記（８−１）（８−２）のステップと、以下の（21−1）〜（21−7）の各ステップを実行させること
（21−1）ユーザ入力されたパスワードｐ１を記憶するパスワード入力ステップ
（21−2）共通鍵暗号方式の鍵（セッション鍵）ａ１を生成するセッション鍵生成ステップ
（21−3）平文のファイルｆ１を前記セッション鍵ａ１により暗号化して暗号化ファイルｆ２を生成するファイル暗号化ステップ
（21−4）前記セッション鍵ａ１を前記パスワードｐ１に関連づけするとともに所定のアルゴリズムに基づいて変形した変形セッション鍵ａ４を生成するセッション鍵変形ステップ
（21−5）前記グループ公開鍵が記憶されている場合、前記パスワードｐ１を当該グループ公開鍵により暗号化して暗号化パスワードｐ２を生成する第１暗号化ステップ
（21−6）前記企業公開鍵により前記パスワードｐ１を暗号化して暗号化パスワードｐ３を生成する第２暗号化ステップ
（21−7）前記暗号化ファイルｆ２と、前記変形セッション鍵ａ４と、前記暗号化パスワードｐ２およびｐ３とを内容として含んだ１つの結合ファイルを作成する結合ファイル作成ステップ
（22）前記ファイルの復号化プロセスには、以下の事項（22−1）〜（22−4）が含まれていること
（22−1）前記コンピュータＡ〜Ｃのいずれかのコンピュータに、前記結合ファイルを、前記暗号化ファイルｆ２と、前記変形セッション鍵ａ４と、前記暗号化パスワードｐ２およびｐ３とに分解するファイル分解ステップを実行させること
（22−2）前記コンピュータＡにおいて、入力されたパスワードｐ４が前記パスワードｐ１に一致した場合、当該コンピュータＡに、前記変形セッション鍵ａ４を前記所定のアルゴリズムに基づいて前記セッション鍵ａ１に復元するセッション鍵復元ステップと、前記ファイル分解ステップにて得た前記暗号化ファイルｆ２を当該セッション鍵復元ステップにて復元した前記セッション鍵ａ１により復号して前記平文ファイルｆ１を取得する平文ファイル復号ステップとを実行させること
（22−3）前記コンピュータＢに、前記ファイル分解ステップにより得た前記暗号化パスワードｐ２を前記グループ秘密鍵により前記パスワードｐ１に復号するステップと、前記セッション鍵復元ステップと、前記平文ファイル復号ステップとを含む第１復号ステップを実行させること
（22−4）前記コンピュータＣに、前記ファイル分解ステップにより得た前記暗号化パスワードｐ３を前記企業秘密鍵により前記パスワードｐ１に復号するステップと、前記セッション鍵復元ステップと、前記平文ファイル復号ステップとを含む第２復号ステップを実行させること
【０００９】
また本発明は、上記事項（１）〜（９）と以下の事項（31）〜（36）とによって特定されるファイル暗号化・復号化プログラムとすることもできる。
（31）前記暗号化プロセスには、以下の（31−1）〜（31−4）のステップがさらに含まれること
（31−1）パスワードｐ１をユーザ入力により受け付けるパスワード入力ステップ、
（31−2）前記パスワードｐ１を所定のアルゴリズムに基づいて共通鍵暗号方式のセッション鍵ｐ４に変形させる変形セッション鍵生成ステップ
（31−3）前記セッション鍵ａ１に基づいてセッション鍵の検証データｄ１を生成させる検証データ生成ステップ
（31−4）前記セッション鍵ａ１を前記セッション鍵ｐ４で暗号化した暗号化セッション鍵ａ５を生成させる第３暗号化ステップ
（32）前記結合ファイル作成ステップでは、前記結合ファイルの内容に、前記検証データｄ１と、前記暗号化セッション鍵ａ５をさらに含ませること
（33）前記ファイル分解ステップでは、前記結合ファイルを、前記暗号化ファイルｆ２と、前記暗号化セッション鍵ａ２と、前記暗号化セッション鍵ａ３とに加え、前記検証データｄ１と、前記暗号化セッション鍵ａ５とに分解させること
（34）前記復号化プロセスでは、前記コンピュータＡに、入力されたパスワードｐ２を前記所定のアルゴリズムに基づいて共通鍵暗号方式のセッション鍵ｐ６に変形するステップと、当該セッション鍵ｐ６が前記セッション鍵ｐ４に一致した場合、当該コンピュータＡに、当該セッション鍵ｐ４により前記ファイル分解ステップにより得た暗号化セッション鍵ａ５を前記セッション鍵ａ１に復号するステップとを含む第３復号ステップを実行させること
（35）前記復号化プロセスでは、前記コンピュータＢに、前記暗号化セッション鍵ａ２を前記グループ秘密鍵によって復号した鍵を前記検証データｄ１に基づいて検証させるとともに、当該鍵が前記セッション鍵ａ１であると認証した場合に限って、前記第１復号ステップを実行させること
（36）前記復号化プロセスでは、前記コンピュータＣに、前記暗号化セッション鍵ａ３を前記企業秘密鍵によって復号したセッション鍵を前記検証データｄ１に基づいて検証させるとともに、当該鍵が前記セッション鍵ａ１であると認証した場合に限って、前記第２復号ステップを実行させること
【００１０】
なお、上記ファイル暗号化・復号化プログラムにおいて、前記企業秘密鍵は、前記製品公開鍵に対応する製品秘密鍵でデジタル認証されており、前記復号化プロセスでは、前記コンピュータＣが記憶している秘密鍵ｙを前記製品公開鍵により検証して当該秘密鍵ｙが前記企業秘密鍵であると認証した場合に限り、当該コンピュータＣに前記第２復号ステップを実行させることしてもよい。
【００１２】
なお本発明は、上記ファイル暗号化・復号化プログラムのいずれかを記憶したプログラム格納媒体にも及んでいる。
【発明の効果】
【００１３】
本発明のファイル暗号化・復号化プログラムによれば、ファイルを暗号化するための鍵を自在に生成できるとともに、その鍵で暗号化されたファイルを復号するためのマスターキーも生成することができる。また、そのマスターキー自体も厳重に管理できる。それによって、情報の守秘管理と漏洩事実の早期発見とを両立させることができる。
【発明を実施するための最良の形態】
【００１４】
＝＝＝実施形態＝＝＝
本発明の実施例におけるファイルの暗号化・復号化プログラムは、ＣＤ−ＲＯＭなどの媒体に格納されて提供され、コンピュータにインストールされる。本実施例において、プログラムの販売業者は、ライセンス契約を締結した企業を固有のライセンスコードで管理するとともに、各ライセンスコード毎に秘密鍵と公開鍵とを生成し、その生成した公開鍵（企業公開鍵）と秘密鍵（企業秘密鍵）とプログラム本体とをＣＤ−ＲＯＭに格納して企業に納入する。具体的には、販売業者は、製品としてのプログラムに共通の公開鍵暗号方式における秘密鍵（製品秘密鍵）と公開鍵（製品公開鍵）を生成・管理する。プログラムは、製品秘密鍵で暗号化された企業公開鍵（暗号化企業公開鍵）と、コンピュータにインストールされて各種処理を実行するプログラム本体に相当するコードとを含み、販売業者は、これら鍵とコードがコンパイルされて格納されたＣＤ−ＲＯＭを該当の企業に納入する。なお製品公開鍵は認証機関や販売業者のＷｅｂサイトなどにダウンロード可能にして用意しておいてもよいし、プログラムとおなじＣＤ−ＲＯＭに格納して用意しておいてもよい。
【００１５】
図１に、ＣＤ−ＲＯＭにおけるプログラム格納状態の概略を示した。企業公開鍵１１を製品秘密鍵１で暗号化した暗号化企業公開鍵１２とプログラムを記述したコード３とが記録されたＣＤ−ＲＯＭ４と、企業秘密鍵１３を製品秘密鍵１でデジタル署名した署名済み企業秘密鍵１４が記録されたＣＤ−ＲＯＭ５とが企業に納入される。なお企業公開鍵１１を製品秘密鍵１で暗号化することは、実質的に、企業公開鍵１１本体を製品秘密鍵１でデジタル署名したことと同義である。また、企業秘密鍵１３のデジタル署名については、企業公開鍵１１と同様に企業秘密鍵１３自体を製品秘密鍵１で暗号化したものであってもよいし、企業秘密鍵１３を、例えばハッシュ関数など、所定のアルゴリズムに基づいて生成したダイジェストを製品秘密鍵１で暗号化したものであってもよい。ダイジェストを暗号化した場合には、ＣＤ−ＲＯＭ５には企業秘密鍵１３自体も署名とともに記録しておけばよい。なお、企業秘密鍵１３を厳重に管理できるのであれば、企業秘密鍵１３をデジタル認証しておく必要はなく、企業秘密鍵１３をその管理者のコンピュータに記憶させておくなどして保管しておけばよい。企業公開鍵１１についても同様に暗号化せずに鍵自体をＣＤ−ＲＯＭ４に記録しておいてもよい。
【００１６】
＝＝＝企業における利用形態＝＝＝
本実施例では、ある企業において、社員の利用する全コンピュータにはＣＤ−ＲＯＭ４を起源として本プログラムがインストールされているものとし、他の暗号化・復号化プログラムは使用禁止となっている状況を想定している。そしてプログラムは、公開鍵暗号方式における公開鍵と秘密鍵を生成する機能を含み、例えば、部署毎にその上長が公開鍵（グループ公開鍵）と秘密鍵（グループ秘密鍵）を自身のコンピュータにおいて生成し、公開鍵をその部署の一般社員のコンピュータに配布しておく。
【００１７】
＝＝＝暗号処理システム＝＝＝
本実施例の方法に基づいてファイルの暗号化や復号化を実行するコンピュータ（以下、暗号処理システム）は、暗号化の対象となる平文ファイルを共通鍵暗号方式における秘密鍵（以下、セッション鍵）で暗号化するとともに、セッション鍵を公開暗号方式の公開鍵で暗号化する周知の「デジタル封筒」技術を応用して企業内でのファイル守秘管理と迅速な漏洩事実発見との両立を図っている。
【００１８】
図２と図３に、暗号処理システムによるファイルの暗号化と復号化の概略をそれぞれに示した。また、図４（Ａ）と図４（Ｂ）に、それぞれその暗号化と復号化の処理の流れを示した。まず、セッション鍵２１を生成し（ｓ１）、そのセッション鍵２１で暗号化したい平文ファイル３１を暗号化して暗号化ファイル３２を生成する（ｓ２）。また、セッション鍵２１をグループ公開鍵１５で暗号化してグループ暗号化セッション鍵２２を作成する（ｓ３→ｓ４）。グループ公開鍵１５が存在しない場合には、平文ファイル３１を暗号化できない旨などを表示出力するとともに、今までの暗号化プロセスを無効化するなどのエラー処理（ｓ３→ｓ８）を行い、プログラムの実行を終了する。それによって、例えば、同一のグループ公開鍵を共有する特定の部署に属さない暗号化システムによって平文ファイルが暗号化され、その部署外に守秘義務のあるファイルが暗号化されて持ち出されないようにしている。
【００１９】
つぎに、暗号化企業公開鍵１２を製品公開鍵２で復号して企業公開鍵１１を取得し、その企業公開鍵１１でセッション鍵２１を暗号化して企業暗号化セッション鍵２３を作成する（ｓ５→ｓ６）。そして、上記処理により生成した暗号化ファイル３２とグループ暗号化セッション鍵２２と企業暗号化セッション鍵２３とを内容として含んだ１つの結合ファイル４１を作成する（ｓ７）。なお本実施例では、企業公開鍵１１の復号処理（ｓ５）を経ずに企業暗号化セッション鍵２３の生成処理を実行することを禁止している。企業公開鍵１１の復号処理（ｓ５）を経ずに企業公開鍵１１が読み込まれた場合、適宜なエラー処理（ｓ８）を行い、プログラムの実行を終了する。それによって、不正に企業公開鍵１１を得た人間が平文ファイル３１の作成者を詐称する「なりすまし」を防止している。もちろん、企業公開鍵の復号処理を暗号化プロセスの最初に行い、その処理結果に応じて以後の処理の続行・中止を決定するようにしてもよい。
【００２０】
復号化のプロセスとしては、まず、結合ファイル４１を暗号化ファイル３２とグループ暗号化セッション鍵２２と企業暗号化セッション鍵２３に分解する（ｓ１１）。復号処理を実行する暗号処理システムにセッション鍵２１があれば前記分解処理により得た暗号化ファイル３２を当該セッション鍵２１で復号して平文ファイル３１を得る（ｓ１２→ｓ１５）。また、セッション鍵２１がなくてもグループ秘密鍵１６があれば、グループ暗号化セッション鍵２２をグループ秘密鍵１６で復号処理してセッション鍵２１を取得し、そのセッション鍵２１で暗号化ファイル３２を平文ファイル３１に復号する（ｓ１２→ｓ１３→ｓ１４→ｓ１５）。セッション鍵２１やグループ秘密鍵１６がなくても、署名済み企業秘密鍵１４があれば、署名済み企業秘密鍵１４を製品公開鍵１で検証し（ｓ１２→ｓ１３→ｓ１６）、認証した鍵を企業秘密鍵１３とし、この企業秘密鍵１３で企業暗号化セッション鍵２３をセッション鍵２１に復号し（ｓ１６→ｓ１７）、そのセッション鍵２１で暗号化ファイル３２を平文ファイル３１に復号する（ｓ１５）。認証できなければ企業秘密鍵１３が不正に入手されたものとして、暗号化ファイル３２を復号できない旨などを表示出力するなど、適宜にエラー処理（ｓ１８）を実行して処理を終了する。
【００２１】
上記暗号処理システムは、例えば、社外から外部へネットワークを介して送信されるファイルを監視する周知のパケット・スニッフィング（Packet Sniffing）技術などに適用可能である。具体的には、パケット・スニッフィングによってネットワーク監視処理を行うホストコンピュータに上記暗号処理システムの機能と、グループ秘密鍵や企業秘密鍵を組み込んでおけば、ある一般社員があるファイルを自身が生成したセッション鍵によって暗号化し、外部の人間にネットワークを介して転送しようとしたとしても、セッション鍵を入手したり解読したりすることなく速やかにファイルの内容を検閲することができる。従前では、ファイルが社外秘のものであるかどうかを検閲するために、セッション鍵を入手したり解読したりするために多大な時間と作業を要した。
【００２２】
＝＝＝操作環境＝＝＝
上記実施例において、セッション鍵２１を記述するコード自体はその作成者自体もわからないようになっている。このような暗号化手順については、例えば、プログラムが暗号化や復号化するファイルを管理するための特殊なフォルダ（管理フォルダ）をセッション鍵２１毎に生成し、暗号処理システムにてその管理フォルダに平文ファイル３１を格納するユーザ入力を受け付けると、平文ファイル３１がそのフォルダのセッション鍵２１によって暗号化されるとともに、その暗号化ファイル３２と、セッション鍵２１をグループ公開鍵１５や企業公開鍵１１によって暗号化して得た暗号化セッション鍵とを含んだ結合ファイル４１の状態でその管理フォルダに格納する。また、管理フォルダから結合ファイル４１を読み出すユーザ入力に応動し、当該ユーザ入力を受け付けた暗号処理システムにて管理されている復号鍵の種類（セッション鍵２１、グループ秘密鍵１６、企業秘密鍵１３）に応じて結合ファイル４１から平文ファイル３１を得ればよい。
【００２３】
＝＝＝パスワードに対応した暗号化・復号化プロセス＝＝＝
例えば、上記管理フォルダに平文ファイル３１を格納する際、あるいは管理フォルダに格納されている結合ファイル４１から平文ファイル３１を取得する際にパスワードを求める操作環境としてもよい。この場合には概ね以下の第１および第２の２つの処理方式が考えられる。
【００２４】
図５に第１の処理方式における暗号化プロセスの概略を示した。暗号化のプロセスとしては、まず、ユーザ入力によりパスワード５１の入力を受け付けて記憶する。共通暗号化方式のセッション鍵２１を生成するとともに、このセッション鍵２１をパスワード５１が正しくなければ使用できないように変形した変形セッション鍵２４を生成する（ｓ２１）。例えば、セッション鍵２１を所定のアルゴリズムに基づいて変形し、その変形したセッション鍵にパスワードを対応付けしたデータを変形セッション鍵２４として管理する。
【００２５】
つぎに、セッション鍵２１で平文ファイル３１を暗号化ファイル３２に暗号化する（ｓ２２）。そして、パスワード５１をグループ公開鍵１５、および企業公開鍵１１で暗号化し、グループ暗号化パスワード５２と企業暗号化パスワード５３とを生成し（ｓ２３，ｓ２４）、暗号化ファイル３２と、変形セッション鍵２４と、グループ暗号化パスワード５２と、企業暗号化パスワード５３とを内容として含んだ１つの結合ファイル４２を作成する（ｓ２５）。
【００２６】
図６に第１の処理方式における復号化プロセスの概略を示した。上記手順にて暗号化されたファイル３２の復号化プロセスとしては、まず、結合ファイル４２を暗号化ファイル３２と、変形セッション鍵と２４、グループ暗号化パスワード５２と、企業暗号化パスワード５３とに分解する（ｓ３１）。そして、この分解処理以降のプロセスは、暗号処理システムにて管理されている復号鍵（パスワード５１、グループ秘密鍵１６、企業秘密鍵１３）によってそれぞれ異なる。
【００２７】
暗号処理システムは、例えば、管理フォルダにある結合ファイル４２を読み出すユーザ入力など、適宜な復号指示操作を受けつけると、自身が管理する復号鍵を調査する。パスワードを管理していれば、ユーザインタフェースにより、パスワード５１のユーザ入力を促す。ユーザ入力によりパスワード５１が正しく入力されると変形セッション鍵２４をセッション鍵２１に復元し、そのセッション鍵２１で暗号化ファイル３２を平文ファイル３１に復号する（ｓ３２→ｓ３３）。
【００２８】
グループ秘密鍵１６を管理していれば、復号指示操作に応動してグループ暗号化パスワード５２をグループ秘密鍵１６で復号してパスワード５１を取得する。そして、そのパスワード５１を用いて変形セッション鍵２４をセッション鍵２１に復元し、そのセッション鍵２１で暗号化ファイル３２を復号して平文ファイル３１を取得する（ｓ３４→ｓ３２→ｓ３３）。企業秘密鍵１３に基づく復号化プロセスでは、認証済み企業秘密鍵を製品公開鍵で検証した上で、企業暗号化パスワード５３を企業秘密鍵１３で復号してパスワード５１を取得する。そして、変形セッション鍵をセッション鍵の復元処理と、暗号化ファイルの復号処理とを実行する（ｓ３５→ｓ３２→ｓ３３）。
【００２９】
パスワードに対応した暗号化・暗号化プロセスにおける第２の処理方式について、暗号化プロセスの概略を図７に示し、復号化プロセスの概略を図８に示した。暗号化のプロセスとしては、まず、ユーザ入力によりパスワード５１の入力を受け付けて記憶する。共通暗号化方式のセッション鍵２１を生成する。そして、平文ファイル３１をセッション鍵２１で暗号化して暗号化ファイル３２を生成する（ｓ４１）。また、セッション鍵２１などの適宜なデータ６１を起源として検証データ６２を生成する（ｓ４２）。検証データ６２としては、例えば、セッション鍵２１をハッシュ関数を用いて変換したハッシュ値であってもよいし、乱数とその乱数をセッション鍵２１で暗号化した暗号化乱数との組み合わせであってもよい。
【００３０】
つぎに、パスワード５１を所定のアルゴリズムに基づいて平文ファイル３１の暗号化に使用する上記セッション鍵２１とは異なる共通鍵暗号方式のセッション鍵に変形したパスワード変形セッション鍵２５を生成する（ｓ４３）。なおパスワード変形セッション鍵２５は、例えば、可変長のパスワード５１をハッシュ関数を用いて固定長のパスワード変形セッション鍵２５に変換するなど、適宜なアルゴリズムに基づいて生成すればよい。
【００３１】
つぎに、セッション鍵２１を、パスワード変形セッション鍵２５、グループ公開鍵１５、および企業公開鍵１１で暗号化して、パスワード暗号化セッション鍵２６、グループ暗号化セッション鍵２２、および企業暗号化セッション鍵２３に生成する（ｓ４４，ｓ４５，ｓ４６）。そして、暗号化ファイル３２と、検証データ６２と、パスワード暗号化セッション鍵２６と、グループ暗号化セッション鍵２２と、企業暗号化セッション鍵２３とを内容として含んだ１つの結合ファイル４３に作成する（ｓ４７）。
【００３２】
暗号化ファイル３２の復号化プロセスとしては、まず、結合ファイル４３を暗号化ファイル３２と、検証データ６２と、パスワード暗号化セッション鍵２６と、グループ暗号化セッション鍵２２と、企業暗号化セッション鍵２３とに分解する（ｓ５１）。そして、この分解処理（ｓ５１）以降のプロセスとしては、やはり、上記第１の処理方式と同じく、暗号処理システムが管理する復号鍵（１３，１６，５１）に応じてそれぞれの処理手順がある。
【００３３】
暗号処理システムにてパスワード５１が管理されていれば、復号化の指示操作に応動してパスワードのユーザ入力を受け付け可能とする。そして、正しくパスワード５１が入力されれば、このパスワード５１を上記アルゴリズムによりパスワード変形セッション鍵２５に生成し（ｓ５２）、そのパスワード変形セッション鍵２５でパスワード暗号化セッション鍵２６を復号してセッション鍵２１を取得する（ｓ５３）。
【００３４】
なお、この第２の処理方式では、復号処理の過程で得られたセッション鍵（以下、鍵ｘとする）を検証データ６２で検証することで（ｓ５４）、その鍵ｘが正規に入手されたセッション鍵２１でない限り、暗号化ファイル３２から平文ファイル３１が復号されないようにしている。例えば、検証データ６２がセッション鍵２１のハッシュ値であれば、鍵ｘのハッシュ値と検証データ６２中のハッシュ値とを照合する。双方のハッシュ値が一致すれば鍵ｘはセッション鍵２１であると認証する。検証データ６２が乱数と暗号化乱数であれば、検証データ６２中の乱数と、暗号化乱数を鍵ｘで復号して得た乱数とを照合すればよい。そして検証処理（ｓ５４）により、復元した鍵ｘを正規のセッション鍵２１として認証すれば、そのセッション鍵２１で暗号化ファイル３２を平文ファイル３１に復号する（ｓ５５）。
【００３５】
暗号処理システムにグループ秘密鍵１６が管理されていれば、グループ暗号化セッション鍵２２をグループ秘密鍵１６で復号し（ｓ５６）、この復号処理により得た鍵ｘが上記と同様にして検証してセッション鍵２１として認証すれば、このセッション鍵２１で暗号化ファイル３２を平文ファイル３１に復号する（ｓ５６→ｓ５４→ｓ５５）。企業秘密鍵１３が管理されていれば、企業秘密鍵１３による企業暗号化セッション鍵２３の復号処理と、この復号処理により得たセッション鍵ｘの検証処理とを経て、暗号化ファイル３２を平文ファイル３１に復号する（ｓ５７→ｓ５４→ｓ５５）。
【図面の簡単な説明】
【００３６】
【図１】本発明の実施例におけるファイル暗号化・復号化プログラムを格納媒体に記録する際の概略図である。
【図２】上記プログラムによる暗号化処理の概略図である。
【図３】上記プログラムによる復号化処理の概略図である。
【図４】上記暗号化処理の流れ図（Ａ）と、復号化処理の流れ図（Ｂ）である。
【図５】上記プログラムの変更例における第１の処理方式の暗号化処理の概略図である。
【図６】上記第１の処理方式における復号化処理の概略図である。
【図７】上記プログラムの変更例における第２の処理方式の暗号化処理の概略図である。
【図８】上記第２の処理方式における復号化処理の概略図である。
【符号の説明】
【００３７】
１    製品秘密鍵
２    製品公開鍵
１１  企業公開鍵
１３  企業秘密鍵
１５  グループ公開鍵
１６  グループ秘密鍵
２１  セッション鍵
３１  平文ファイル
３２  暗号化ファイル
４１〜４３  結合ファイル
５１  パスワード
【図１】
0004764639.tif 000002
【図２】
0004764639.tif 000003
【図３】
0004764639.tif 000004
【図４】
0004764639.tif 000005
【図５】
0004764639.tif 000006
【図６】
0004764639.tif 000007
【図７】
0004764639.tif 000008
【図８】
0004764639.tif 000009