(57)【特許請求の範囲】
【請求項１】
利用者を特定する利用者特定情報と前記利用者毎に定められた暗号化キーを対応付けて記憶する利用者情報記憶部と、
前記利用者から複数の項目を含むデータの書き込み要求があったときに、この要求を行った前記利用者の前記暗号化キーを前記利用者情報記憶部から読み出し、読み出した暗号化キーで前記項目の一部であってかつ第三者による前記データの改竄をチェックする対象である管理項目を暗号化して暗号化データを生成し、前記データと前記暗号化データとをデータ記憶部に書き込むデータ書き込み部と、
前記利用者から前記データの読み出し要求があったときに、前記管理項目以外の項目については、前記データ記憶部から読み出した前記データを、前記管理項目については、前記書き込み要求を行った前記利用者の前記暗号化キーを前記利用者情報記憶部から読み出し、読み出した暗号化キーにより前記暗号化データを復号化して生成した復号化データを、それぞれ出力装置に出力するデータ読み出し部とを備えると共に、
前記利用者による要求の操作に先だって、前記管理項目について、前記データにおいてその項目を特定する項目特定情報の中で前記管理項目とそれ以外の項目とを識別する管理項目特定情報が入力された場合にこれに応じて前記項目特定情報と前記管理項目特定情報とを対応付けて管理項目定義記憶部に書き込む管理項目定義部を備えたことを特徴としたデータ入出力装置。
【請求項２】
前記管理項目について、前記データ記憶部から読み出した前記データと前記復号化データとを比較するデータ比較部と、
前記比較の結果一致しない前記管理項目がある場合に、当該管理項目について、前記データ記憶部に記憶されている前記データを前記復号化データで更新するデータ復旧部とを備えたことを特徴とした請求項１に記載のデータ入出力装置。
【請求項３】
前記データは、前記利用者を特定する利用者特定情報を前記項目として含み、
前記データ書き込み部は、前記利用者特定情報を予め定められたシステム暗号化キーにより暗号化して前記データ記憶部に書き込み、
前記データ比較部は前記システム暗号化キーにより復号化した前記利用者特定情報を検索キーとして前記管理項目定義記憶部を検索して前記暗号化キーを取得することを特徴とした請求項２に記載のデータ入出力装置。
【請求項４】
利用者を特定する利用者特定情報と前記利用者毎に定められた暗号化キーを対応付けて利用者情報管理部が利用者情報記憶部に記憶する利用者情報記憶工程と、
複数の項目を含むデータで、前記項目の一部であってかつ第三者による前記データの改竄をチェックする対象である管理項目のそれぞれについて、前記データにおいてその項目を特定する項目特定情報の中で前記管理項目とそれ以外の項目とを識別する管理項目特定情報が入力された場合にこれに応じて前記項目特定情報と前記管理項目特定情報とを対応付けて管理項目定義部が管理項目定義記憶部に書き込む管理項目定義工程と、
前記利用者から前記複数の項目を含むデータの書き込み要求があったときに、この要求を行った前記利用者の前記暗号化キーを前記利用者情報記憶部からデータ書き込み部が読み出し、読み出した暗号化キーで前記管理項目を暗号化して前記データ書き込み部が暗号化データを生成し、前記データと前記暗号化データとを前記データ書き込み部がデータ記憶部に書き込むデータ書き込み工程と、
前記利用者から前記データの読み出し要求があったときに、前記管理項目以外の項目については、前記データ記憶部から読み出した前記データを、前記管理項目については、前記書き込み要求を行った前記利用者の前記暗号化キーをデータ読み出し部が前記利用者情報記憶部から読み出し、読み出した暗号化キーにより前記暗号化データを復号化して生成した復号化データを、前記データ読み出し部がそれぞれ出力装置に出力するデータ読み出し工程と、
を備えたことを特徴としたデータ入出力方法。
【請求項５】
前記管理項目について、前記データ記憶部から読み出した前記データと前記復号化データとをデータ比較部が比較するデータ比較工程と、
前記比較の結果一致しない前記管理項目がある場合に、当該管理項目について、前記データ記憶部に記憶されている前記データをデータ復旧部が前記復号化データで更新するデータ復旧工程とを備えたことを特徴とした請求項４に記載のデータ入出力方法。
【請求項６】
前記データは、前記利用者を特定する利用者特定情報を前記項目として含み、
前記データ書き込み工程では、前記データ書き込み部が前記利用者特定情報を予め定められたシステム暗号化キーにより暗号化して前記データ記憶部に書き込み、
前記データ比較工程は前記システム暗号化キーにより復号化した前記利用者特定情報を検索キーとして前記データ比較部が前記管理項目定義記憶部を検索して前記暗号化キーを取得することを特徴とした請求項５に記載のデータ入出力方法。
【請求項７】
コンピュータに、
利用者を特定する利用者特定情報と前記利用者毎に定められた暗号化キーを対応付けて利用者情報記憶部に記憶する利用者情報記憶処理と、
複数の項目を含むデータで、前記項目の一部であってかつ第三者による前記データの改竄をチェックする対象である管理項目のそれぞれについて、前記データにおいてその項目を特定する項目特定情報の中で前記管理項目とそれ以外の項目とを識別する管理項目特定情報が入力された場合にこれに応じて前記項目特定情報と前記管理項目特定情報とを対応付けて管理項目定義部が管理項目定義記憶部に書き込む管理項目定義処理と、
前記利用者から前記複数の項目を含むデータの書き込み要求があったときに、この要求を行った前記利用者の前記暗号化キーを前記利用者情報記憶部から読み出し、読み出した暗号化キーで前記管理項目を暗号化して暗号化データを生成し、前記データと前記暗号化データとをデータ記憶部に書き込むデータ書き込み処理と、
前記利用者から前記データの読み出し要求があったときに、前記管理項目以外の項目については、前記データ記憶部から読み出した前記データを、前記管理項目については、前記書き込み要求を行った前記利用者の前記暗号化キーを前記利用者情報記憶部から読み出し、読み出した暗号化キーにより前記暗号化データを復号化して生成した復号化データを、それぞれ出力装置に出力するデータ読み出し処理と、
を実行させることを特徴としたデータ入出力プログラム。
【請求項８】
前記コンピュータに、
前記管理項目について、前記データ記憶部から読み出した前記データと前記復号化データとを比較するデータ比較処理と、
前記比較の結果一致しない前記管理項目がある場合に、当該管理項目について、前記データ記憶部に記憶されている前記データを前記復号化データで更新するデータ復旧処理とを実行させることを特徴とした請求項７に記載のデータ入出力プログラム。
【請求項９】
前記データは、前記利用者を特定する利用者特定情報を前記項目として含み、
前記データ書き込み処理では、前記利用者特定情報を予め定められたシステム暗号化キーにより暗号化して前記データ記憶部に書き込み、
前記データ比較処理では前記システム暗号化キーにより復号化した前記利用者特定情報を検索キーとして前記管理項目定義記憶部を検索して前記暗号化キーを取得することを特徴とした請求項８に記載のデータ入出力プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの入出力技術に関し、特に入力されたデータの改竄の有無を判定し、改竄されたデータについては復旧することができるデータ入出力技術に関する。
【背景技術】
【０００２】
ユーザが入力したアプリケーションデータをそのままコンピュータの記憶装置に記録すると、データが改竄されたり、漏洩したりする危険性が高い。そのため、暗号化技術等を用いてデータを安全な形で記録する技術が種々提案されている。
特許文献１には、このような情報漏洩防止装置が記載されている。この装置では、カプセル生成手段は、カプセル毎に生成した鍵でアプリケーションデータを暗号化した暗号化アプリケーションデータと、鍵を利用者の公開鍵で暗号化した暗号化済鍵とを含むカプセルを生成し、カプセル処理手段は、利用者の秘密鍵で暗号化鍵を復号して復号済第２鍵とし、暗号化アプリケーションデータを復号済第２鍵で復号してアプリケーションプログラムに渡す。
【０００３】
【特許文献１】特開２００４−３００９９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、上記の従来の技術では、データ全体を暗号化して記録しているので、利用者からのデータ読み出し要求の都度データを復号化しなければならないという問題があった。
【０００５】
そこで、本発明は、利用者からのデータ読み出し要求の都度データを復号化する必要がないデータ入出力装置等を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の、データ入出力装置は、利用者を特定する利用者特定情報と利用者毎に定められた暗号化キーを対応付けて記憶する利用者情報記憶部と、利用者から複数の項目を含むデータの書き込み要求があったときに、この要求を行った利用者の暗号化キーを利用者情報記憶部から読み出し、読み出した暗号化キーで項目の一部であってかつ第三者によるデータの改竄をチェックする対象である管理項目を暗号化して暗号化データを生成し、データと暗号化データとをデータ記憶部に書き込むデータ書き込み部と、利用者からデータの読み出し要求があったときに、管理項目以外の項目については、データ記憶部から読み出したデータを、管理項目については、書き込み要求を行った利用者の暗号化キーを利用者情報記憶部から読み出し、読み出した暗号化キーにより暗号化データを復号化して生成した復号化データを、それぞれ出力装置に出力するデータ読み出し部とを備えると共に、これに先だって、管理項目について、データにおいてその項目を特定する項目特定情報の中で管理項目およびそれ以外の項目を識別する管理項目特定情報が入力された場合にこれに応じて項目特定情報と管理項目特定情報とを対応付けて管理項目定義記憶部に書き込む管理項目定義部を備えている（請求項１ないし請求項３）。
【０００７】
上記データ入出力装置によれば、管理項目以外の項目については暗号化しないでデータ記憶部に記憶しているから、利用者からのデータ読み出し要求の都度データを復号化する必要がない。さらに、このようにすれば、入力されたデータと暗号化されたデータの間で項目の対応関係が第三者にはわからないから、仮に、第三者が利用者の暗号化キーの取得に成功した場合でも、暗号化されたデータを意図どおりに改竄することができない。
【０００８】
上記データ入出力装置において、管理項目について、データ記憶部から読み出したデータと復号化データとを比較するデータ比較部と、比較の結果一致しない管理項目がある場合に、当該管理項目について、データ記憶部に記憶されているデータを復号化データで更新するデータ復旧部とを備えるようにしてもよい（請求項２）。
このようにすれば、管理項目については、暗号化されずに記憶されているデータが改竄された場合に、それを検出し復旧することができる。
【００１０】
上記データ入出力装置において、データは、利用者を特定する利用者特定情報を項目として含み、データ書き込み部は、利用者特定情報を予め定められたシステム暗号化キーにより暗号化してデータ記憶部に書き込み、データ比較部はシステム暗号化キーにより復号化した利用者特定情報を検索キーとして管理項目定義記憶部を検索して暗号化キーを取得するようにしてもよい（請求項３）。
このようにすれば、第三者は、システム暗号化キーを取得しない限り、データ記憶部に記憶されている管理項目を復号化するために、どの利用者の暗号化キーを用いればよいかを知ることができない。
【００１１】
本発明の、データ入出力方法は、利用者を特定する利用者特定情報と利用者毎に定められた暗号化キーを対応付けて利用者情報管理部が利用者情報記憶部に記憶する利用者情報記憶工程と、複数の項目を含むデータで、項目の一部であってかつ第三者によるデータの改竄をチェックする対象である管理項目のそれぞれについて、データにおいてその項目を特定する項目特定情報の中で管理項目およびそれ以外の項目を識別する管理項目特定情報が入力された場合にこれに応じて項目特定情報と管理項目特定情報とを対応付けて管理項目定義部が管理項目定義記憶部に書き込む管理項目定義工程と、利用者から複数の項目を含むデータの書き込み要求があったときに、この要求を行った利用者の暗号化キーを利用者情報記憶部からデータ書き込み部が読み出し、読み出した暗号化キーで管理項目を暗号化してデータ書き込み部が暗号化データを生成し、データと暗号化データとをデータ書き込み部がデータ記憶部に書き込むデータ書き込み工程と、利用者からデータの読み出し要求があったときに、管理項目以外の項目については、データ記憶部から読み出したデータを、管理項目については、書き込み要求を行った利用者の暗号化キーをデータ読み出し部が利用者情報記憶部から読み出し、読み出した暗号化キーにより暗号化データを復号化して生成した復号化データを、データ読み出し部がそれぞれ出力装置に出力するデータ読み出し工程と、を備えている（請求項４ないし請求項６）。
【００１２】
上記データ入出力方法によれば、管理項目以外の項目については暗号化しないでデータ記憶部に記憶しているから、利用者からのデータ読み出し要求の都度データを復号化する必要がない。さらに、このようにすれば、入力されたデータと暗号化されたデータの間で項目の対応関係が第三者にはわからないから、仮に、第三者が利用者の暗号化キーの取得に成功した場合でも、暗号化されたデータを意図どおりに改竄することができない。
【００１３】
上記データ入出力方法において、管理項目について、データ記憶部から読み出したデータと復号化データとをデータ比較部が比較するデータ比較工程と、比較の結果一致しない管理項目がある場合に、当該管理項目について、データ記憶部に記憶されているデータをデータ復旧部が復号化データで更新するデータ復旧工程とを備えるようにしてもよい（請求項５）。
このようにすれば、管理項目については、暗号化されずに記憶されているデータが改竄された場合に、それを検出し復旧することができる。
【００１５】
上記データ入出力方法において、データは、利用者を特定する利用者特定情報を項目として含み、データ書き込み工程では、データ書き込み部が利用者特定情報を予め定められたシステム暗号化キーにより暗号化してデータ記憶部に書き込み、データ比較工程はシステム暗号化キーにより復号化した利用者特定情報を検索キーとしてデータ比較部が管理項目定義記憶部を検索して暗号化キーを取得するようにしてもよい（請求項６）。
このようにすれば、第三者は、システム暗号化キーを取得しない限り、データ記憶部に記憶されている管理項目を復号化するために、どの利用者の暗号化キーを用いればよいかを知ることができない。
【００１６】
本発明の、データ入出力プログラムは、コンピュータに、利用者を特定する利用者特定情報と利用者毎に定められた暗号化キーを対応付けて利用者情報記憶部に記憶する利用者情報記憶処理と、複数の項目を含むデータで、項目の一部であってかつ第三者によるデータの改竄をチェックする対象である管理項目のそれぞれについて、データにおいてその項目を特定する項目特定情報の中で管理項目およびそれ以外の項目を識別する管理項目特定情報が入力された場合にこれに応じて項目特定情報と管理項目特定情報とを対応付けて管理項目定義部が管理項目定義記憶部に書き込む管理項目定義処理と、利用者から複数の項目を含むデータの書き込み要求があったときに、この要求を行った利用者の暗号化キーを利用者情報記憶部から読み出し、読み出した暗号化キーで管理項目を暗号化して暗号化データを生成し、データと暗号化データとをデータ記憶部に書き込むデータ書き込み処理と、利用者からデータの読み出し要求があったときに、管理項目以外の項目については、データ記憶部から読み出したデータを、管理項目については、書き込み要求を行った利用者の暗号化キーを利用者情報記憶部から読み出し、読み出した暗号化キーにより暗号化データを復号化して生成した復号化データを、それぞれ出力装置に出力するデータ読み出し処理と、を実行させる（請求項７ないし請求項９）。
【００１７】
上記データ入出力プログラムによれば、管理項目以外の項目については暗号化しないでデータ記憶部に記憶しているから、利用者からのデータ読み出し要求の都度データを復号化する必要がない。さらに、このようにすれば、入力されたデータと暗号化されたデータの間で項目の対応関係が第三者にはわからないから、仮に、第三者が利用者の暗号化キーの取得に成功した場合でも、暗号化されたデータを意図どおりに改竄することができない。
【００１８】
上記データ入出力プログラムにおいて、コンピュータに、管理項目について、データ記憶部から読み出したデータと復号化データとを比較するデータ比較処理と、比較の結果一致しない管理項目がある場合に、当該管理項目について、データ記憶部に記憶されているデータを復号化データで更新するデータ復旧処理とを実行させるようにしてもよい（請求項８）。
このようにすれば、管理項目については、暗号化されずに記憶されているデータが改竄された場合に、それを検出し復旧することができる。
【００２０】
上記データ入出力プログラムにおいて、データは、利用者を特定する利用者特定情報を項目として含み、データ書き込み処理では、利用者特定情報を予め定められたシステム暗号化キーにより暗号化してデータ記憶部に書き込み、データ比較処理ではシステム暗号化キーにより復号化した利用者特定情報を検索キーとして管理項目定義記憶部を検索して暗号化キーを取得するようにしてもよい（請求項９）。
このようにすれば、第三者は、システム暗号化キーを取得しない限り、データ記憶部に記憶されている管理項目を復号化するために、どの利用者の暗号化キーを用いればよいかを知ることができない。
【発明の効果】
【００２１】
本発明によれば、管理項目以外の項目については暗号化しないでデータ記憶部に記憶しているから、利用者からのデータ読み出し要求の都度データを復号化する必要がない。
【発明を実施するための最良の形態】
【００２２】
以下、図を参照しながら本発明の一実施形態であるコンピュータ１（データ入出力装置の一例）の構成と動作について説明する。
図１は、コンピュータ１の機能ブロック図である。
コンピュータ１は、例えば、サーバコンピュータであり、キーボードやマウスなどの入力装置１０と、ディスプレイ装置や印刷装置などの出力装置２０と、プログラム制御により動作するアプリケーション部３０と、情報を記憶する記憶装置４０から構成される。
さらにアプリケーション部３０は、アプリケーション制御部３１と、管理項目定義部３２と、利用者情報管理部３３と、アプリケーションデータ入出力部３４と、アプリケーションデータ暗号化復号化部３５と、アプリケーションデータ比較部３６と、アプリケーションデータ復旧部３７から構成される。
記憶装置４０は、例えばハードディスク装置により構成され、管理項目定義テーブル４１（管理項目定義記憶部の一例）と、利用者情報管理テーブル４２（利用者情報記憶部の一例）と、アプリケーションデータテーブル４３（データ記憶部の一例）を記憶している。
なお、図１には、記憶装置４０がコンピュータ１に内蔵されている例を示したが、記憶装置４０は、コンピュータ１からアクセス可能に接続されていれば、その物理的な位置を問わない。たとえば、コンピュータ１にファイバーチャネルで接続されたストレージ装置を記憶装置４０としてもよい。
また、入力装置１０と出力装置２０は、コンピュータ１０が提供するサービスを利用するクライアントコンピュータに接続されたものであってもよい。
【００２３】
コンピュータ１は、概略次のような機能を備えている。
予め利用者の利用権限定義の一部として利用者毎に異なる暗号化キーを付与し利用者情報管理テーブル４２に格納するとともに、アプリケーションデータテーブル４３に格納するアプリケーションデータのデータ項目中で改竄チェックを行うデータ項目（以下、「管理項目」という）を管理項目定義部３２により指定し管理項目定義テーブル４１に格納しておく。
【００２４】
アプリケーションデータの登録時には、アプリケーション制御部３１、アプリケーションデータ入出力部３４、アプリケーションデータ暗号化復号化部３５により利用者情報管理テーブル４２、管理項目定義テーブル４１を参照し、管理項目に対して登録要求した利用者に与えられている暗号化キーによりデータの値を暗号化し、元のアプリケーションデータとは別の項目に暗号化したデータ値を格納する。
【００２５】
アプリケーションデータの読み出し時には、アプリケーション制御部３１、アプリケーションデータ入出力部３４、アプリケーションデータ暗号化復号化部３５、アプリケーションデータ比較部３６、アプリケーションデータ復旧部３７によりアプリケーションデータテーブル４３から読み出したデータに対して元のデータ項目の値が暗号化されたデータ項目の値と一致するかを比較することによりデータ項目の値が改竄されているかどうかを確認するとともに、データが改竄されていた場合には暗号化されたデータ項目の値から改竄前の値に復旧する。
【００２６】
次に、コンピュータ１の各部の機能について詳細に説明する。
アプリケーション制御部３１は、アプリケーションプログラム起動時に呼び出され、入力装置１０から与えられた処理要求を実行し、実行結果を出力装置２０に表示する。
また、アプリケーションデータの入力要求時にアプリケーション入出力部３４より読み込まれたアプリケーションデータを受け取る。
【００２７】
管理項目定義部３２は、入力装置１０からアプリケーションデータ項目の改竄チェック定義の処理要求が与えられた時アプリケーション制御部３１から呼び出される。ユーザからの入力指示に基づいて、アプリケーションデータテーブル４３に保存されるデータ項目のうち管理項目と保存先となるデータ項目を定義し、その定義結果を管理項目定義情報として管理項目定義テーブル４１に保存する。
【００２８】
利用者定義情報管理部３３は、入力装置１０からアプリケーションプログラムの利用者の利用権限定義の処理要求が与えられた時アプリケーション制御部３１から呼び出される。アプリケーションプログラムの利用者定義情報（例えば、利用者名）のチェックおよび利用者毎の暗号化キーの生成を行い、利用者定義情報と暗号化キーとを対応付けて利用者情報管理テーブル４２に保存する。
【００２９】
アプリケーションデータ入出力部３４は、入力装置１０からアプリケーションデータの保存あるいは呼び出し処理要求が与えられた時アプリケーション制御部３１から呼び出される。アプリケーション制御部３１から与えられたアプリケーションデータをアプリケーションデータテーブル４３に保存する、あるいは指示された条件でアプリケーションデータテーブル４３からアプリケーションデータを読み出す。
【００３０】
アプリケーション制御部３１からの指示がデータの保存であった場合には管理項目定義テーブル４１に保存された管理項目定義情報を参照し、保存するデータのデータ項目中管理項目については、アプリケーションデータ暗号化復号化部３５を呼び出して暗号化を行い、暗号化されたデータは元のデータ項目とは異なるデータ項目としてアプリケーションデータテーブル４３に保存する。すなわち、アプリケーションデータ入出力部３４とアプリケーションデータ暗号化復号化部３６は、データ書き込み部の一例である。
【００３１】
また、アプリケーション制御部３１からの指示がデータの読み出しであった場合には管理項目定義テーブル４１に保存された管理項目定義情報を参照し、保存するデータのデータ項目中改竄チェックを行うデータ項目があれば、アプリケーションデータ暗号化復号化部３５を呼び出して復号化を行い、復号化されたデータを得る。そして、管理項目以外の項目については読み出したデータをそのまま、管理項目については複合化したデータを出力装置２０に出力する。すなわち、アプリケーションデータ入出力部３４とアプリケーションデータ暗号化復号化部３６は、データ読み出し部の一例である。
【００３２】
アプリケーションデータ暗号化復号化部３５は、アプリケーションデータ入出力部３４から呼び出され、与えられた暗号化指示に基づき与えられたデータを暗号化し、あるいは与えられた復号化指示に基づき与えられたデータを復号化する。データの暗号化あるいは復号化を行う際にはアプリケーションデータ入出力部３４から与えられる利用者情報を元に利用者情報管理テーブル４２より、その利用者に対する暗号化キーを取得し、その暗号化キーを元にデータの暗号化あるいはデータの復号化を行う。
【００３３】
アプリケーションデータ比較部３６（データ比較部の一例）はアプリケーションデータ入出力部３４から読み出されたアプリケーションデータが返却された時にアプリケーション制御部３１から呼び出され、管理項目定義テーブル３４に保存された管理項目定義情報を参照し、改竄チェックを行うデータ項目と保存先となるデータ項目が一致しているかどうかをチェックし、その結果をアプリケーション制御部３１に通知する。
【００３４】
アプリケーションデータ復旧部３７（データ復旧部の一例）はアプリケーション制御部３１から呼び出され、指示されたアプリケーションデータについて改竄されたデータ項目の値を保存先のデータ項目の値に更新する。
【００３５】
上記の各部は、コンピュータ１のＣＰＵがプログラムを実行して、コンピュータ１が備えるハードウェアを制御することにより実現される。
【００３６】
次に、コンピュータ１の動作について説明する。コンピュータ１の動作は大きく、事前設定処理とアプリケーションデータ書き出し処理とアプリケーションデータ読み出し処理の動作に分かれる。
それぞれの動きについて図１および図２、図３、図４のフローチャートを参照して説明する。
事前設定処理の動作を示す図２において、事前設定処理Ｓ２１０はさらに利用者登録処理Ｓ２１１と改竄管理項目定義処理Ｓ２１１のステップに分かれる。
利用者登録処理Ｓ２１１では、入力装置１０を介してアプリケーションプログラム３０の利用者定義の処理要求が与えられた時アプリケーション制御部３１から利用者情報管理部３３を呼び出して実行する。
利用者情報管理部３３は、入力装置１０から与えられるアプリケーションプログラム３０の利用者定義情報の妥当性チェックを行い、アプリケーションプログラム３０の利用者定義情報に含まれる利用者名（利用者識別情報の一例）に対応する暗号化キーの生成を行い、アプリケーションプログラム３０の利用者定義情報と暗号化キーを利用者毎に識別可能な形式で利用者情報管理テーブル４２に保存する。また登録された情報をアプリケーション制御部３１を介して出力装置２０に出力する。
【００３７】
改竄管理項目定義処理Ｓ２１２は、入力装置１０からアプリケーションデータ項目の改竄のチェック定義の処理要求が与えられた時アプリケーション制御部３１から管理項目定義部３２を呼び出して実行する。
管理項目定義部３２は、アプリケーション制御部３１を介して出力装置２０に対してアプリケーションデータテーブル４３に格納されるデータ項目の一覧を表示し、入力装置１０ならびにアプリケーション制御部３１を介して改竄チェックを行うデータ項目と保存先となるデータ項目の情報を受け取る。
【００３８】
図５は入力装置１０より渡される改竄チェックを行うデータ項目と保存先となるデータ項目の情報の一実施例であり、図中５１１はアプリケーションデータテーブル４３のテーブル名、５１２はアプリケーションデータテーブルを構成するデータ項目名（項目特定情報の一例）、５１３は該データ項目が改竄チェックを行うかどうかの指示で「Ｙ」は改竄チェックを行うことを「Ｎ」は改竄チェックを行わないことを示している。５１４は該データ項目の値を暗号化した値を格納する先のデータ項目名（管理項目特定情報の一例）である。
【００３９】
管理項目定義部３２は、受け取った改竄チェックを行うデータ項目と保存先となるデータ項目に関する情報の妥当性を検査した後、これらの情報を管理項目定義情報としてアプリケーションデータテーブル４３のテーブル名単位に識別可能な形式で管理項目定義テーブル４１に保存する。
【００４０】
次に、アプリケーションデータ書き出し処理について図３を使って説明する。アプリケーションデータ書き出し処理Ｓ３１０はさらに出力アプリケーションデータ取得処理Ｓ３１１、アプリケーションデータ暗号化処理Ｓ３１２、アプリケーションデータ出力処理Ｓ３１３のステップに分かれる。
【００４１】
出力アプリケーションデータ取得処理Ｓ３１１は、入力装置１０を介してアプリケーションプログラムのアプリケーションデータの出力処理要求（書き込み要求）が与えられた時、アプリケーション制御部３１からアプリケーションデータ入出力部３４を呼び出して実行する。
アプリケーションデータ入出力部３４は、出力要求されたアプリケーションデータの出力先となるアプリケーションデータテーブル４３のテーブル名を識別し、管理項目定義テーブル４１から当該のアプリケーションデータテーブル４３に対する管理項目定義情報を取得する。
【００４２】
次に、管理項目定義情報中のデータ項目単位に改竄管理対象のデータ項目であるかどうかを判別し、改竄管理対象のデータ項目の場合にはアプリケーションデータ暗号化処理Ｓ３１２を実行する。この判別は全てのデータ項目について繰り返し実行する。
アプリケーションデータ暗号化処理３１２ステップは、アプリケーションデータ入出力部３４からアプリケーションデータ暗号化復号化部３５を呼び出して実行する。
アプリケーションデータ入出力部３４は、アプリケーションデータ暗号化復号化部３５に対してデータ出力要求をした利用者の利用者情報と暗号化の対象とするデータ項目の値を渡す。
【００４３】
アプリケーションデータ暗号化復号化部３５は、利用者情報管理テーブル４２から入力要求を行った利用者の暗号化キーを取得し、この暗号化キーを使って渡されたデータ項目の値の暗号化を行い、暗号化された結果をアプリケーションデータ入出力部３４に返却する。
【００４４】
アプリケーションデータ出力処理Ｓ３１３は、全てのデータ項目に対して改竄対象の判別ならびに管理項目の値に対する暗号化処理が完了した後に実行する。
アプリケーションデータ入出力部３４は、アプリケーションデータ暗号化復号化部３５に対してデータ出力要求をした利用者の利用者名を渡す。アプリケーションデータ暗号化復号化部３５は、アプリケーション暗号化復号化部３５でプログラム内のデータ値として保持している暗号化キー（システム暗号化キーの一例）を使って渡された利用者名の値の暗号化を行い、暗号化された結果をアプリケーションデータ入出力部３４に返却する。
【００４５】
アプリケーションデータ入出力部３４は、出力アプリケーションデータ取得処理Ｓ３１１で得た出力要求されたアプリケーションデータとアプリケーションデータ暗号化処理Ｓ３１２で得た暗号化された値を管理項目定義情報を参照し、アプリケーションデータテーブルの各データ項目に格納し、暗号化された利用者名値とともにアプリケーションデータテーブル４３に出力する。
【００４６】
図６は、アプリケーションデータテーブル４３に格納されたアプリケーションデータの一例である。
図中５２１は、暗号化されていないデータであり、「取引番号」「登録者」「取引日」「取引内容」「取引金額」「備考」の項目名（項目特定情報の一例）を持つ各項目を含んでいる。５２２は、暗号化されたデータであり「項目１」「項目２」「項目３」「項目４」「項目５」「項目６」の項目名（管理項目特定情報の一例）を持つ各項目を含んでいる。それぞれの項目名は、図５に示したルールに従って対応付けられている。たとえば、「項目１」は、「取引日」に対応し、その値は「２００６／０５／０５」を登録者「Ｓｍｉｔｈ」の暗号化キーで暗号化した「７４ＧｇｉＹ４５」である。
「項目６」には利用者情報をシステム暗号キーで暗号化した値「ｖＧｚ３ｓ」が記憶されている。
【００４７】
次にアプリケーションデータ読み出し処理について図４を使って説明する。アプリケーション読み出し処理４１０は、さらに出力アプリケーションデータ読取取得処理Ｓ４１１、アプリケーションデータ復号化処理Ｓ４１２、アプリケーションデータ比較処理Ｓ４１３、アプリケーション復旧処理Ｓ４１４、アプリケーションデータ確定処理Ｓ４１５のステップに分かれる。
【００４８】
アプリケーションデータ読取処理Ｓ４１１は、入力装置１０を介してアプリケーションプログラムのアプリケーションデータの入力処理要求が与えられた時アプリケーション制御部３１からアプリケーションデータ入出力部３４を呼び出して実行する。
アプリケーションデータ入出力部３４は、入力要求されたアプリケーションデータの入力元となるアプリケーションデータテーブル４３のテーブル名を識別し、管理項目定義テーブル４１から当該のアプリケーションデータテーブルに対する管理項目定義情報を取得する。次に、アプリケーションデータテーブル４３より指定されたアプリケーションデータを取得する。取得したアプリケーションデータ中に格納されている暗号化された利用者名値をアプリケーションデータ暗号化復号化部３５に渡す。
【００４９】
アプリケーションデータ暗号化復号化部３５はアプリケーション暗号化復号化部３５で持っている暗号化キーを使って渡された利用者名の値の復号化を行い、復号化された結果をアプリケーションデータ入出力部３４に返却する。
【００５０】
アプリケーションデータ入出力部３４は、管理項目定義情報中のデータ項目単位に管理項目であるかどうかを判別し、改竄管理対象のデータ項目の場合にはアプリケーションデータ復号化処理Ｓ４１２を実行する。この判別は全てのデータ項目について繰り返し実行する。
【００５１】
アプリケーションデータ復号化処理Ｓ４１２は、アプリケーションデータ入出力部３４からアプリケーションデータ暗号化復号化部３５を呼び出して実行する。
アプリケーションデータ入出力部３４は、アプリケーションデータ暗号化復号化部３５に対して復号化された利用者名と復号化の対象とするデータ項目の値を渡す。
アプリケーションデータ暗号化復号化部３５は利用者情報管理テーブル４２から該当する利用者の暗号化キーを取得し、この暗号化キーを使って渡されたデータ項目の値の復号化を行い、復号化された結果をアプリケーションデータ入出力部３４に返却する。
【００５２】
アプリケーションデータ比較処理Ｓ４１３は、全てのデータ項目に対して改竄チェックの対象であるか否かの判別ならびに該当するデータ項目の値に対する復号化処理が完了した後に実行する。アプリケーションデータ入出力部３４は管理項目定義情報を参照し、全ての改竄管理対象となっているデータ項目に対してアプリケーションデータ読取処理Ｓ４１１で読み込んだデータ項目の値とアプリケーションデータ復号化処理４１２ステップで得た復号化された値を比較して一致しているかを判別する。もし、改竄管理対象のデータ項目の中に復号化されたデータ項目の値と不一致なデータ項目があった場合にはアプリケーションデータ復旧処理Ｓ４１４を実行する。
【００５３】
アプリケーションデータ復旧処理Ｓ４１４ステップは、アプリケーション制御部３１を介し出力装置２０に対して、アプリケーションデータの改竄が発生した旨の通知、該当するデータ項目の値の復旧を行うかどうかの問合せを出力する。入力装置１０を介してアプリケーション制御部３１にアプリケーションデータの復旧要求が与えられた時、アプリケーション制御部３１はアプリケーションデータ入出力部３４を呼び出して実行する。
【００５４】
アプリケーションデータ入出力部３４は、不一致となっている管理項目のそれぞれについて復号化されたデータ項目の値に置き換えを行い、アプリケーションデータテーブル４３の各データ項目に格納し、アプリケーションデータテーブル４３に格納されているデータを更新する。
アプリケーションデータ確定処理Ｓ４１５は、アプリケーションデータ比較処理Ｓ４１３の結果、改竄されたデータ項目がなかった時、あるいはアプリケーションデータ復旧処理４１４ステップが終了した時に実行する。
アプリケーションデータ入出力部３４はアプリケーションデータ読取処理４１１ステップ、もしくはアプリケーションデータ復旧処理４１４で得た入力要求されたアプリケーションデータをアプリケーション制御部３１を介して出力装置２０に出力する。
【００５５】
本実施形態の第１の効果は、利用者から出力要求のあったアプリケーションデータに対して改竄管理対象となるデータ項目については暗号化された値を併せてアプリケーションデータテーブルに保存することにより、悪意のある第３者がアプリケーションデータテーブル４３に格納されているデータの値を直接更新した場合でもアプリケーションプログラムがそのデータを読み出した時に改竄されたことを確認することができ、かつ改竄前の値に戻すことができることである。
【００５６】
本実施形態の第２の効果は、改竄管理対象のデータ項目の暗号化されたデータの格納先のデータ項目を定義できるため、アプリケーションデータテーブルを見ただけでは暗号化されたデータ項目がどのデータ項目が元になったデータ項目かを識別することができないことにある。
【００５７】
本実施形態の第３の効果は、アプリケーションデータを利用者毎に暗号化すること、またアプリケーションデータの暗号化キーの元となる利用者名もシステム固有の暗号化キーで暗号化するため、外部から暗号を解読するための暗号キーに関する情報を得ることが困難なことにある。
【００５８】
本実施形態の第４の効果は、出力要求のあったアプリケーションデータのデータ形式は要求どおりの形式で格納することにより、アプリケーションデータテーブルから直接データを取り出した場合でもデータの値を意図した値で参照することができることにある。
【図面の簡単な説明】
【００５９】
【図１】本発明の一実施形態であるコンピュータの機能ブロック図である。
【図２】事前設定処理を説明するフローチャートである。
【図３】アプリケーションデータ書き出し処理を説明するフローチャートである。
【図４】アプリケーションデータ読み出し処理を説明するフローチャートである。
【図５】改竄チェックを行うデータ項目と保存先となるデータ項目の情報の一例を示す図である。
【図６】アプリケーションデータの一例を示す図である。
【符号の説明】
【００６０】
１  コンピュータ
３０  アプリケーション部
３２  管理項目定義部
３３  利用者情報管理部
３４  アプリケーションデータ入出力部
３５  アプリケーションデータ暗号化復号化部
３６  アプリケーションデータ比較部
３７  アプリケーションデータ復旧部
４０  記憶装置
４１  管理項目定義テーブル
４２  利用者情報管理テーブル
４３  アプリケーションデータテーブル
【図１】
0004697451.tif 000002
【図２】
0004697451.tif 000003
【図３】
0004697451.tif 000004
【図４】
0004697451.tif 000005
【図５】
0004697451.tif 000006
【図６】
0004697451.tif 000007