(57)【要約】【課題】  情報セキュリティシステムにおいて、特に内部者によるデータの盗み見や入手などの不正の防止を十分に行い、また既存の多数の情報処理システムに対し容易にかつ低コストで適用してセキュア化できる技術を提供する。【解決手段】  ユーザがデータを入出力するクライアント１と、データベースにデータを格納するサーバ（ＡＳＰサーバ２、ＤＢサーバ３）と、を有する情報処理システムを保護対象とし、クライアント１内のＷｅｂブラウザ１１の背後においてデータの入出力の通信に介入し、データがサーバ側で暗号化状態となるようにデータの暗号化／復号化を行う機能（ＨＴＴＰプロクシ１２、暗号管理サーバ４）と、サーバ側のデータベースの前段においてデータの入出力の通信に介入し、データについてのユーザ単位及び所定データ単位でのアクセス権限の設定を確認してこれに基づきデータベースへのアクセスを行う機能（ＳＱＬプロクシ３１、ポリシー管理サーバ５）とを有する。【選択図】  図１ 
2005242740.tif 000002
【特許請求の範囲】
【請求項１】
ユーザがデータを入出力するクライアントと、データベースに前記データを格納するサーバと、を有する情報処理システムを保護対象とする情報セキュリティシステムのプログラムであって、
前記クライアント内または前記クライアントとサーバとの間において前記データの入出力の通信に介入し、前記データが前記サーバ側で暗号化状態となり前記データベースに暗号化データとして格納され逆に前記クライアント側では復号化状態で出力されるように前記データの暗号化／復号化を行う暗号機能をコンピュータに実行させることを特徴とする、情報セキュリティシステムのプログラム。
【請求項２】
請求項１記載の情報セキュリティシステムのプログラムにおいて、
前記データの入力時において、前記クライアント内または前記クライアントとサーバとの間において前記クライアントの前記データについての入出力インターフェイス部から前記サーバ側への通信に介入して前記データについて暗号化の必要を判断する手順と、
暗号化が必要と判断した場合に前記データが前記サーバ側で暗号化状態となり前記データベースに暗号化データとして格納されるように前記データについての暗号化の要求を送信する手順と、
前記要求に基づき前記データの暗号化を所定の暗号アルゴリズム及び暗号化鍵を用いて行って暗号化データを返す手順と、
前記暗号化データを受信して前記サーバ側に送信する手順と、を有し、
また前記データの出力時において、前記クライアント内または前記クライアントとサーバとの間において前記サーバ側から前記クライアントの入出力インターフェイス部への通信に介入して前記データについて復号化の必要を判断する手順と、
復号化が必要と判断した場合に前記データが前記クライアント側の入出力インターフェイス部に復号化状態で出力されるように前記データについての復号化の要求を送信する手順と、
前記要求に基づき前記データの復号化を所定の暗号アルゴリズム及び復号化鍵を用いて行って復号化されたデータを返す手順と、
前記復号化されたデータを受信して前記入出力インターフェイス部に送信して出力させる手順と、を有することを特徴とする、情報セキュリティシステムのプログラム。
【請求項３】
ユーザがデータを入出力するクライアントと、データベースに前記データを格納するサーバと、を有する情報処理システムを保護対象とする情報セキュリティシステムのプログラムであって、
前記クライアント内で前記データの入出力インターフェイス部の周囲あるいは一部要素において前記サーバ側との前記データの入出力の通信に介入し、これを処理起点として前記データが前記サーバ側で暗号化状態となり前記データベースに暗号化データとして格納され逆に前記クライアント側では復号化状態で出力されるように前記データの暗号化／復号化を行う第１の処理をコンピュータに実行させることを特徴とする、情報セキュリティシステムのプログラム。
【請求項４】
請求項３記載の情報セキュリティシステムのプログラムであって、
前記データの暗号化／復号化に使用する鍵情報を管理する処理と、前記第１の処理からの要求に基づき前記データについて前記鍵情報を使用して暗号化／復号化処理して暗号化／復号化されたデータを返す処理と、を行う第２の処理をコンピュータに実行させることを特徴とする、情報セキュリティシステムのプログラム。
【請求項５】
請求項３記載の情報セキュリティシステムのプログラムにおいて、
前記データベースに対する前記データの入出力のための通信に介入し、前記クライアント側またはサーバ側からのユーザの認証情報の受信に基づくユーザ認証処理と、前記データについてのユーザ単位及び前記データベースにおける所定データ単位でのアクセス権限の設定を含んだポリシー設定を確認してこれに基づき前記データベースへのアクセス対象領域またはデータを制限して問い合わせを行う処理と、を行うアクセス制限機能をコンピュータに実行させることを特徴とする、情報セキュリティシステムのプログラム。
【請求項６】
請求項５記載の情報セキュリティシステムのプログラムにおいて、
前記クライアント側からサーバ側への前記データの入出力のためのアクセスに際して前記クライアント側からのユーザの認証情報の受信に基づくユーザ認証処理を行う手順と、
前記ユーザ認証の通過後における前記データベースの前段での前記データの入出力のためのデータベースアクセスに際して前記サーバ側からのユーザの認証情報の受信に基づくユーザ認証処理を行い、前記データについてのユーザ単位及び前記データベースにおける所定データ単位でのアクセス権限を確認する手順と、
前記アクセス権限の確認に基づき前記データベースへのアクセス対象領域またはデータを制限して問い合わせを行って前記データベースから結果を得る手順と、を有することを特徴とする、情報セキュリティシステムのプログラム。
【請求項７】
請求項５記載の情報セキュリティシステムのプログラムにおいて、
前記サーバ側のデータベースの前段あるいは一部要素において前記データベースに対する前記データの入出力の通信に介入し、前記データについてのユーザ単位及び前記データベースにおける所定データ単位でのアクセス権限の設定を含んだポリシー設定を確認して、これに基づき前記データベースへのアクセス対象領域またはデータを制限して問い合わせを行う第３の処理をコンピュータに実行させることを特徴とする、情報セキュリティシステムのプログラム。
【請求項８】
請求項７記載の情報セキュリティシステムのプログラムにおいて、
前記データについてのユーザ単位及び前記データベースにおける所定データ単位でのアクセス権限の設定を含んだポリシー設定を管理する処理と、前記クライアント側またはサーバ側からのユーザの認証情報の受信に基づくユーザ認証及び前記第３の処理からの要求に基づくポリシー設定の確認を行う処理と、を行う第４の処理をコンピュータに実行させることを特徴とする、情報セキュリティシステムのプログラム。
【請求項９】
ユーザが入出力インターフェイス部を通じてデータを入出力するクライアントと、前記クライアントからのアクセスに応じて前記データを所定のビジネスロジックで処理するアプリケーションサーバと、前記アプリケーションサーバを通じて前記データをデータベースに入出力するデータベースサーバと、を有する情報処理システムを保護対象とする情報セキュリティシステムのプログラムであって、
前記クライアント内で前記データの入出力インターフェイス部の周囲あるいは一部要素において前記アプリケーションサーバとの間での前記データの入出力の通信に介入し、これを処理起点として前記データが前記サーバ側で暗号化状態となり前記データベースに暗号化データとして格納され逆に前記クライアント側では前記入出力インターフェイス部に復号化状態で出力されるように前記データの暗号化／復号化を行う第１の処理と、
前記データの暗号化／復号化に使用する鍵情報を管理する処理と前記第１の処理からの要求に基づき前記データについて前記鍵情報で暗号化／復号化処理して暗号化／復号化されたデータを返す処理とを行う第２の処理と、
前記データベースサーバのデータベースの前段あるいは一部要素において前記データベースに対する前記データの入出力の通信に介入し、前記データについてのユーザ単位及び前記データベースにおける所定データ単位でのアクセス権限の設定を含んだポリシー設定を確認してこれに基づき前記データベースへのアクセス対象領域またはデータを制限して問い合わせを行う第３の処理と、
前記データについてのユーザ単位及び前記データベースにおける所定データ単位でのアクセス権限の設定を含んだポリシー設定を管理する処理と前記クライアント側またはサーバ側からのユーザの認証情報の受信に基づくユーザ認証及び前記第３の処理からの要求に基づく前記ポリシー設定の確認を行う処理とを行う第４の処理と、をコンピュータに実行させることを特徴とする、情報セキュリティシステムのプログラム。
【請求項１０】
請求項３記載の情報セキュリティシステムのプログラムにおいて、
前記データベースに格納された暗号化データを検索するための検索機能として、前記クライアント側で指定された検索条件を前記第１の処理を通じて暗号化または一方向ハッシュ化し、前記暗号化または一方向ハッシュ化された検索条件について前記サーバ側のデータベースの前段においてデータベース問い合わせのための具体的な検索条件として設定してデータベース問い合わせを行わせ、これにより抽出された暗号化データ群について、検索結果絞り込みの処理を行い、この検索結果について前記第１の処理を通じて復号化してから前記クライアントの入出力インターフェイス部に出力する機能をコンピュータに実行させることを特徴とする、情報セキュリティシステムのプログラム。
【請求項１１】
請求項１０記載の情報セキュリティシステムのプログラムにおいて、
前記検索機能として、前記クライアントで指定された検索条件を判断して前記第１の処理により検索キーを暗号化してこの暗号化された検索キーを前記サーバ側に送信し、前記サーバ側では前記暗号化された検索キーを用いて前記データベースに対する問い合わせを行ってこれによりデータベースから抽出された暗号化データを前記クライアント側に送信し、これを前記第１の処理により復号化して前記クライアントの入出力インターフェイス部に検索結果として出力する機能をコンピュータに実行させることを特徴とする、情報セキュリティシステムのプログラム。
【請求項１２】
請求項１０記載の情報セキュリティシステムのプログラムにおいて、
前記クライアント側からの前記データの入力時、前記第１の処理により前記データを暗号化することに加え、前記データについて所定の一方向ハッシュ関数によりハッシュ値を生成しこれを前記暗号化されたデータと関連付ける処理と、
検索時、前記クライアントで入力された検索キーについて前記一方向ハッシュ関数によりハッシュ値の生成を行ってこれを前記サーバ側に送信し、前記サーバ側で前記検索キーのハッシュ値により前記データベース中の前記暗号化データに関連付けされたハッシュ値を対象として検索して値が一致する領域に対応する暗号化データを抽出させる処理と、
前記抽出結果の暗号化データについて復号化して元の検索キーが含まれるものを選んでこれを検索結果として前記クライアントに返す処理と、をコンピュータに実行させることを特徴とする、情報セキュリティシステムのプログラム。
【請求項１３】
請求項１２記載の情報セキュリティシステムのプログラムにおいて、
前記クライアント側から前記データを前記データベースへ入力する際、前記第１の処理により前記データを暗号化することに加え、前記データを所定単位に分割し、各分割されたデータについて所定の一方向ハッシュ関数によりハッシュ値を生成し前記暗号化データと関連付けて前記データベースにおける検索の際に参照可能となるように保管する処理をコンピュータに実行させることを特徴とする、情報セキュリティシステムのプログラム。
【請求項１４】
請求項１〜１３のいずれか一項に記載の情報セキュリティシステムのプログラムにおいて、
前記クライアントが、前記データに関するアクセスの際、ユーザ証明書情報を保持する認証トークンを読み込んでここから前記認証情報を生成し、これにより所定の認証方式に基づいて前記ユーザ認証及びポリシー設定の確認を行わせる処理をコンピュータに実行させることを特徴とする、情報セキュリティシステムのプログラム。
【請求項１５】
請求項１〜１４のいずれか一項に記載の情報セキュリティシステムのプログラムにおいて、
前記データベースに格納されるデータについて判断してその内の特定タイプのデータに対してのみ前記暗号化／復号化の対象とする処理をコンピュータに実行させることを特徴とする、情報セキュリティシステムのプログラム。
【請求項１６】
請求項１〜１５のいずれか一項に記載の情報セキュリティシステムのプログラムを記憶したことを特徴とする記憶媒体。
【請求項１７】
請求項１〜１５のいずれか一項に記載の情報セキュリティシステムのプログラムを読み込んで実行することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報セキュリティシステムのプログラムに関し、特に、クライアントとサーバを有しデータベースにデータを格納するＷｅｂベースなどの情報処理システムを保護対象として不正防止を図る技術に関する。
【背景技術】
【０００２】
現状の一般的なＷｅｂベースの情報処理システムには、情報セキュリティに関してデータの盗聴、改竄などの様々な問題点が存在する。クライアント（ユーザクライアント）、ＡＳＰサーバ（Ｗｅｂアプリケーション提供サーバ）、ＤＢサーバ（データベースサーバ）を有する一般的な３層クライアント・サーバ構成の情報処理システムを例にしたとき、例えば、クライアント−ＡＳＰサーバ間では、セッション乗っ取りによるデータ改竄の可能性がある。またＡＳＰサーバでは、ＡＳＰサーバ管理者などの内部者によるデータの盗み見などの可能性がある。またＡＳＰサーバ−ＤＢサーバ間では、正規ユーザに成りすましてのデータ不正入手の可能性がある。またＤＢサーバでは、ＤＢサーバ管理者などの内部者によるバックアップデータの持ち出しなどの可能性がある。
【０００３】
前記のような問題点に対して、通常、次のような技術的対策を施してセキュリティを確保しようとする。例えば、クライアント−ＡＳＰサーバ間をＳＳＬ／ＴＬＳ（Secure Socket Layer／Transport Layer Security）などの暗号通信方法で保護し、ユーザＩＤやパスワードの流出や外部からの攻撃を防止する。またＤＢサーバへのアクセスに関して、データベース中のカラム（列）、レコード（行）などを単位として適切なアクセス権限を設定するなどの厳格なデータベースアクセス制限管理を行い、データベースへの不正アクセスを防止する。また、暗号化データベース、つまりデータベースに格納されているデータを暗号化して読めなくする技術を導入し、データベース中の情報の盗み見や持ち出しを防止する。
【０００４】
昨今、所定の情報セキュリティシステムを設置したイントラネットなどの情報処理システムにおいて、外部アクセスによる攻撃を防止する手法については浸透してきたが、保護対象のシステムを利用あるいは管理する内部者による不正が特に問題となってきている。前記のような不正防止を行う所定の情報セキュリティシステムが設置されたＷｅｂベースの情報処理システムにおいて、内部に不正者が存在すると仮定する場合、次のような点に注意しなければならない。現状では、ＡＳＰサーバやＤＢサーバなどが配置されたサーバルームへの入出管理や、データベースのバックアップデータについての厳密な管理など、情報セキュリティシステム外のポリシーを徹底することで対応するのが一般的である。
【０００５】
例えば、ＡＳＰサーバからの不正アクセスに関しては、ＡＳＰサーバ管理者は、クライアント側から送信されたデータを盗み見ることが可能であるので、高レベルの権限を与えられているユーザのユーザＩＤ及びパスワードを用いてデータベースにアクセスを行えば、データ改竄や顧客データの入手などを行うことは容易である。また、データベースへの不正アクセスに関しては、データベースへのアクセスにはＵｎｉｘ（Ｒ）ユーザ認証（ユーザ名とパスワードによる認証）が多く利用されているため、イントラネット内からは比較的容易に不正アクセスが可能である。またデータベース管理者により不正が行われるとすると、データベース中のデータ自体が暗号化されて保護されていなければ不正を防止できない。また、データベースのバックアップデータの流出に関しては、バックアップデータはテープメディアや光学ディスクメディアなどに保存されることが多いが、このメディアごと持ち出される危険がある。
【０００６】
このように、従来では情報セキュリティシステムを設置した情報処理システムにおいてその内部者例えば情報システム部員が顧客データなどのデータを盗み見たり不正入手したりすることが可能なアーキテクチャとなっている。前記データを扱う情報システム部員には情報取り扱い者としての高いモラルが要求され、精神的にも大きな負担となる面がある。また高いモラルを備えた情報システム部員を雇用するためのコストや新たな情報セキュリティシステムの導入にかかるコストなど、高いコストを要している。
【０００７】
また前記暗号化データベースのような技術が存在するが、あくまでＤＢサーバにおける暗号化であるので、データベース内の、暗号化されたデータ（以下「暗号化データ」と称する）の復号化のための鍵情報は、システム構成上多くの場合ＤＢサーバ付近に保存されている可能性が高く、内部者などにより読み出しやすい状況となっている。内部者などにより前記鍵情報を不正入手されると、この鍵情報によりデータベース内の暗号化データを復号化することによってデータが読まれ不正入手されてしまう。このように従来の暗号化データベースもデータ保護のセキュリティは十分ではない。
【０００８】
従来技術では、クライアント・サーバ構成の情報処理システムにおいてサーバ側でユーザのデータを集中的に管理して効率化を図ることがシステム設計者の主要な観点であったため、データベースに格納されるデータについて暗号化を行うことに関しては、例えばデータ検索が不便になって扱い難いなどの理由から深く追求されていなかった。また、情報セキュリティシステムの構築のために、サーバ側に様々なモジュールを備える必要があるなど構成が複雑になる傾向があった。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
前記のように従来技術では、情報セキュリティシステムを設置した情報処理システムにおいて取り扱い対象のデータに対する特に内部者による不正、例えば顧客情報や社員情報の盗み見や入手などに対する防止対策が不十分であり、システムとして大きな欠陥があったと言える。また、システム構成が複雑になる傾向がありコストが高くなる問題があった。
【００１０】
本発明は以上のような問題に鑑みてなされたものであり、その目的は、クライアントとサーバを有するＷｅｂベースなどの情報処理システムを主な対象として保護を行う情報セキュリティシステムにおいて、特に内部者によるデータの盗み見や入手などの不正の防止を十分に行うことができ、また既に構築済みの多数の情報処理システムに対し容易にかつ低コストで適用してセキュア化することのできる技術を提供することにある。
【課題を解決するための手段】
【００１１】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００１２】
（１）前記目的を達成するために、本発明の情報セキュリティシステムのプログラムは、ユーザがデータを入出力するクライアントと、データベースに前記データを格納するサーバと、を有する情報処理システムを保護対象とし、クライアント内またはクライアントとサーバとの間において前記データの入出力の通信に介入し、前記データがサーバ側で暗号化状態となりデータベースに暗号化データとして格納され、またクライアント側で復号化状態で出力されるように前記データの暗号化／復号化を行う暗号機能をコンピュータに実行させることを特徴とする。サーバ側ではなくクライアント側で、前記データについての可逆暗号による暗号化／復号化によって情報の機密化を行う。この暗号機能はクライアントの入出力インターフェイス部（Ｗｅｂブラウザなど）とサーバ側（ＡＳＰサーバなど）との間において透過的につまりユーザに暗号化／復号化処理の存在を意識されることなく機能する。前記データをクライアント側からサーバ側のデータベースに入力（蓄積）する際は、暗号機能によりデータの暗号化を行ってからサーバ側に渡し、データベースには暗号化データが格納される。サーバ側のデータベースから暗号化データをクライアント側に出力（抽出）する際は暗号機能により暗号化データの復号化を行ってから入出力インターフェイス部に出力する。前記データは、不正者特に内部不正者によって不正利用されるのを防ぐために保護対象となるデータである。暗号化対象となるのは、例えば顧客情報や社員情報などのプライバシーに係る情報をはじめとして不正利用されるのを防止したいデータである。このデータ暗号化／復号化処理により、前記データをそのまま判読可能な形式で扱えるのはクライアント側における許可ユーザのみとなる。
【００１３】
（２）また、本発明は、前記（１）の情報セキュリティシステムのプログラムにおいて、前記データの入力時において、クライアント内またはクライアントとサーバとの間において前記データの入出力インターフェイス部からサーバ側への通信に介入し、前記データについて暗号化の必要を判断する手順と、暗号化が必要と判断した場合に前記データがサーバ側で暗号化状態となりデータベースに暗号化データとして格納されるように前記データの暗号化の要求を送信する手順と、前記要求に基づき前記データの暗号化を所定の暗号アルゴリズム及び暗号化鍵を用いて行って暗号化データを返す手順と、暗号化データを受信してサーバ側に送信する手順とを有し、また前記データの出力時において、クライアント内またはクライアントとサーバとの間においてサーバ側から入出力インターフェイス部への通信に介入し、前記データについて復号化の必要を判断する手順と、復号化が必要と判断した場合に前記データがクライアント側の入出力インターフェイス部で復号化状態で出力されるように前記データの復号化の要求を送信する手順と、前記要求に基づき前記データの復号化を所定の暗号アルゴリズム及び復号化鍵を用いて行って復号化されたデータを返す手順と、復号化されたデータを受信して入出力インターフェイス部に送信する手順とを有することを特徴とする。
【００１４】
（３）また、本発明の情報セキュリティシステムのプログラムは、ユーザがデータを入出力するクライアントと、データベースに前記データを格納するサーバと、を有する情報処理システムを保護対象とする情報セキュリティシステムのプログラムであって、クライアント内でデータの入出力インターフェイス部の周囲あるいは一部要素においてサーバ側との前記データの入出力の通信に介入し、これを処理起点として前記データがサーバ側で暗号化状態となりデータベースに暗号化データとして格納され逆に前記クライアント側の入出力インターフェイス部で復号化状態で出力されるように前記データの暗号化／復号化を行う第１の処理（ＨＴＴＰプロクシ処理）をコンピュータに実行させることを特徴とする。クライアント側で入出力インターフェイス部の背後などにおいてサーバ側（ＡＳＰサーバなど）との間においてこの処理のプログラムモジュールが介在し、前記データの入出力のためのＨＴＴＰなどの通信に自動的に介入してこれを処理起点として対象データについての暗号化／復号化を図る動作を行う。この介入は、サーバ側のデータベースに格納するデータについて、クライアント側から送信する際あるいはサーバ側から受信する際に行われる。
【００１５】
（４）また、本発明は、前記（３）の情報セキュリティシステムのプログラムにおいて、前記データの暗号化／復号化に使用する鍵情報を管理する処理と、前記第１の処理からの要求に基づき前記データについて前記鍵情報を使用して暗号化／復号化処理して暗号化／復号化されたデータを返す処理と、を行う第２の処理（暗号管理サーバ処理）をコンピュータに実行させることを特徴とする。この処理では、暗号化／復号化対象データのデータＩＤ，暗号化／復号化に使用する鍵情報などの対応を管理する。
【００１６】
（５）また、本発明は、前記（３）の情報セキュリティシステムのプログラムにおいて、データベースに対する前記データの入出力のための通信に介入し、クライアント側またはサーバ側からのユーザの認証情報の受信に基づくユーザ認証処理と、前記データについてのユーザ単位及びデータベースにおける所定データ単位でのアクセス権限の設定を含んだポリシー設定を確認してこれに基づきデータベースへのアクセス対象領域またはデータを制限して問い合わせを行う処理と、を行うアクセス制限機能をコンピュータに実行させることを特徴とする。
【００１７】
（６）また、本発明は、前記（５）の情報セキュリティシステムのプログラムにおいて、クライアント側からサーバ側への前記データの入出力のためのアクセスに際してクライアント側からのユーザの認証情報の受信に基づくユーザ認証処理を行う手順と、ユーザ認証の通過後におけるデータベースの前段での前記データの入出力のためのデータベースアクセスに際してサーバ側からのユーザの認証情報の受信に基づくユーザ認証処理を行い、前記データについてのユーザ単位及びデータベースにおける所定データ単位でのアクセス権限を確認する手順と、アクセス権限の確認に基づきデータベースへのアクセス対象領域またはデータを制限して問い合わせを行ってデータベースから結果を得る手順と、を有することを特徴とする。前記ユーザ認証処理では、認証結果に基づきユーザに対してデータベース接続を許可する接続チケットの発行などを行い、以後のデータベース接続セッション内において認証情報として提示させる。
【００１８】
（７）また、本発明は、前記（５）の情報セキュリティシステムのプログラムにおいて、データベースに対する前記データの入出力の通信に介入し、クライアント側またはサーバ側からのユーザの認証情報の受信に基づくユーザ認証処理と、前記データについてのユーザ単位及びデータベースにおける所定データ単位でのアクセス権限の設定を含んだポリシー設定を確認してこれに基づきデータベースへのアクセス対象領域またはデータを制限して問い合わせを行う処理と、を行う第３の処理（ＳＱＬプロクシ処理）をコンピュータに実行させることを特徴とする。
【００１９】
（８）また、本発明は、前記（７）の情報セキュリティシステムのプログラムにおいて、前記データについてのユーザ単位及びデータベースにおける所定データ単位でのアクセス権限の設定を含んだポリシー設定を管理する処理と、クライアント側またはサーバ側からのユーザの認証情報の受信に基づくユーザ認証及び前記第３の処理からの要求に基づくポリシー設定の確認を行う処理と、を行う第４の処理（ポリシー管理サーバ処理）をコンピュータに実行させることを特徴とする。この処理では本システムを利用するユーザ単位における、データベースへの所定データ単位例えばカラム、レコード、セル、テーブルなどでのアクセス権限の設定を含んだポリシー設定を管理する。またユーザ認証処理などの際に該当ユーザのアクセス権限を確認してデータベースへのアクセス許可領域あるいはデータＩＤを絞り込む。データベースへのアクセス権限は、ＰＫＩに基づくユーザ認証と、所定データ単位でのアクセス権限の設定とを組み合わせて設定可能とする。
【００２０】
（９）また、本発明の情報セキュリティシステムのプログラムは、ユーザが入出力インターフェイス部を通じてデータを入出力するクライアントと、クライアントからのアクセスに応じて前記データを所定のビジネスロジックで処理するアプリケーションサーバと、アプリケーションサーバを通じて前記データをデータベースに入出力するデータベースサーバと、を有する情報処理システムを保護対象とし、クライアント内で前記データの入出力インターフェイス部の周囲あるいは一部要素において前記データの入出力の通信に介入し、これを処理起点として前記データがサーバ側で暗号化状態となりデータベースに暗号化データとして格納され逆にクライアント側では入出力インターフェイス部に復号化状態で出力されるように前記データの暗号化／復号化を行う第１の処理（ＨＴＴＰプロクシ処理）と、前記データの暗号化／復号化に使用する鍵情報を管理する処理とクライアント側の前記第１の処理からの要求に基づき前記データについて前記鍵情報で暗号化／復号化処理して暗号化／復号化されたデータを返す処理とを行う第２の処理（暗号管理サーバ処理）と、サーバ側のデータベースの前段あるいは一部要素においてデータベースに対する前記データの入出力の通信に介入し、前記データについてのユーザ単位及びデータベースにおける所定データ単位でのアクセス権限の設定を含んだポリシー設定を確認してこれに基づきデータベースへのアクセス対象領域またはデータを制限して問い合わせを行う第３の処理（ＳＱＬプロクシ処理）と、前記データについてのユーザ単位及びデータベースにおける所定データ単位でのアクセス権限の設定を含んだポリシー設定を管理する処理とクライアント側またはサーバ側からのユーザの認証情報の受信に基づくユーザ認証及び前記第３の処理からの要求に基づくポリシー設定の確認を行う処理とを行う第４の処理（ポリシー管理サーバ処理）と、をコンピュータに実行させることを特徴とする。前記第２の処理（暗号管理サーバ処理）及び第４の処理（ポリシー管理サーバ処理）は、任意のセキュアな位置にサーバとして配置され、前記鍵情報やポリシー設定情報などを高いセキュリティレベルで管理する。
【００２１】
（１０）また、本発明は、前記（３）の情報セキュリティシステムのプログラムにおいて、前記データベースに格納された暗号化データを検索するための検索機能として、前記クライアント側で指定された検索条件を前記第１の処理を通じて暗号化または一方向ハッシュ化し、前記暗号化または一方向ハッシュ化された検索条件について前記サーバ側のデータベースの前段においてデータベース問い合わせのための具体的な検索条件として設定してデータベース問い合わせを行わせ、これにより抽出された暗号化データ群について、検索結果絞り込みの処理を行い、この検索結果について前記第１の処理を通じて復号化してから前記クライアントの入出力インターフェイス部に出力する機能をコンピュータに実行させることを特徴とする。
【００２２】
（１１）また、本発明は、前記（３）の情報セキュリティシステムのプログラムにおいて、データベースに格納された暗号化データを検索するための検索機能を有することを特徴とする。この検索機能として、クライアントで入力された検索キー（検索ワード）を含む検索条件を判断して暗号化し、サーバ側では前記暗号化された検索キーを用いてデータベースに対する問い合わせを行ってこれによりデータベースから抽出された暗号化データを復号化してクライアントの入出力インターフェイス部に検索結果として出力させる機能をコンピュータに実行させることを特徴とする。
【００２３】
（１２）また、本発明は、前記（１０）の情報セキュリティシステムのプログラムにおいて、前記検索機能がハッシュ値を用いた暗号化データ検索機能を有することを特徴とする。この機能では、クライアント側で検索処理要求が発生した時、完全一致検索、部分一致検索などの検索処理モードを判断し、それに合わせた処理を行う。特に部分一致検索の際にハッシュ値を用いた検索を行う。クライアント側からの前記データの入力時、前記第１及び第２の処理により前記データを暗号化することに加え、前記データについて所定の一方向ハッシュ関数によりハッシュ値を生成しこれを前記暗号化されたデータと関連付ける処理と、検索時、クライアントで入力された検索キーについて前記一方向ハッシュ関数によりハッシュ値の生成を行ってこれをサーバ側に送信し、サーバ側で前記検索キーのハッシュ値によりデータベース中の前記暗号化データに関連付けされたハッシュ値を対象として検索して値が一致する領域に対応する暗号化データを抽出させる処理と、抽出結果の暗号化データについて復号化して元の検索キーが含まれるものを選んでこれを検索結果としてクライアントに返す処理と、をコンピュータに実行させることを特徴とする。生成したハッシュ値についての情報は、データＩＤ他に関連付けて保管する。サーバ側では、クライアント側から受けた暗号化データを保管すると共に、検索に備えてこの暗号化データの元データについてのハッシュ値を関連付けて両方参照できるように管理しておく。データベースからの抽出結果には元の検索キーに対応しない暗号化データの領域も含まれる可能性があるので、候補の暗号化データを復号化して元の検索キーが含まれるか確認して元の検索キーを含む領域のみ選んでこれを検索結果として暗号化データの状態でクライアント側に返す。この検索結果を前記第１及び第２の処理により復号化処理してから前記入出力インターフェイス部に出力する。
【００２４】
（１３）また、本発明は、前記（１２）の情報セキュリティシステムのプログラムにおいて、前記検索機能が、クライアント側から前記データをデータベースへ入力する際、前記データを暗号化することに加え、前記データを所定単位に分割し、各分割されたデータについて所定の一方向ハッシュ関数によりハッシュ値を生成し前記暗号化データと関連付けて前記データベースにおける検索の際に参照可能となるように保管する処理をコンピュータに実行させることを特徴とする。
【００２５】
（１４）また、本発明は、前記（１）〜（１３）のいずれかの情報セキュリティシステムのプログラムにおいて、クライアントが、前記データに関するアクセスの際、ユーザ証明書情報を保持する認証トークンを読み込んでここから認証情報を生成し、これによりＰＫＩ（公開鍵基盤）に基づく認証方式などの任意のユーザ認証方式に基づいてユーザ認証及びポリシー設定の確認を行わせる処理をコンピュータに実行させることを特徴とする。データベースにアクセスしてデータを取り扱う資格を持つ許可ユーザであることを識別するユーザ認証のために、公知のＰＫＩなどに基づいたユーザ認証処理を採用し、これをクライアント側におけるデータ暗号化／復号化処理の際あるいはサーバ側におけるデータベース問い合わせ直前などにおいて行う。これにより安全な運用が可能である。クライアント側では、ユーザのアクセス許可証となる認証トークンからのユーザ証明書情報の読み込みをもとに認証情報を生成し提供してこれによりユーザ認証を行わせる。
【００２６】
（１５）また、本発明は、前記（１）〜（１４）のいずれかの情報セキュリティシステムのプログラムにおいて、データベースに格納されるデータについて判断してその内の特定タイプのデータに対してのみ暗号化／復号化の対象とする処理をコンピュータに実行させることを特徴とする。例えばＨＴＭＬの入力フォームにおける特定フィールドの入力データ例えば名前、住所、電話番号などを対象として暗号化を行う。データベースに格納されるデータの内のすべてを暗号化する必要は必ずしも無く、前記入出力されるデータを判断して、目的とする保護のために必要十分な特定タイプのデータのみを暗号化／復号化する処理を行う。
【００２７】
本発明は、前記各処理（第１の処理〜第４の処理）及び検索機能などを実現するプログラムをモジュール単位で提供し、必要最小限から最大のセキュリティを確保する構成まで、本情報セキュリティシステムの適用対象となる既存の情報処理システムの構成状況に合わせて導入を行う。また本発明のプログラムを記憶したＣＤ−ＲＯＭなどの記憶媒体を提供する。また本発明のプログラムを配置したクライアント装置やサーバ装置などの情報処理装置を提供し、これによりＷｅｂベースなどの情報処理システムを構成できる。
【発明の効果】
【００２８】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００２９】
本発明によれば、情報処理システム上においてサーバ側でなくクライアント側でデータの暗号化／復号化を行ってサーバ側では暗号化データ状態となるようにする構成のため、不正者特に内部不正者によるデータの盗み見や入手などに対する効果的な防止を実現できる。また一般のＷｅｂブラウザで暗号システムを扱えるようになり、ユーザは特にデータの暗号化／復号化について意識する必要無くアプリケーションを利用してデータを扱うことができる。情報処理システムを利用あるいは管理する内部者例えば情報システム部員なども、暗号化データを扱うこととなるので精神的にも安心して業務を担当することができる。
【００３０】
また、クライアントとサーバを有する情報処理システムで主にクライアント側に本発明の情報セキュリティシステムのプログラムを配置するだけで暗号機能を実現することが可能なので、既存のＷｅｂベース情報処理システムの改変を最小限にしつつ容易にセキュア化することができる。またさらにサーバ側でデータベースとＡＳＰサーバの間に本発明のプログラムを配置することでアクセス制限機能を実現し、同様に既存のＷｅｂベース情報処理システムの改変を最小限にしつつセキュア化することができる。
【００３１】
また、本発明の提供する暗号化データについての検索機能により、データベースにおいて暗号化されて格納されているデータに対しても部分一致検索を含む検索処理を行うことができ、サーバ側では暗号化データ状態とするという方法をより有効なものとすることができる。また、暗号化データ検索時にハッシュ値を用いた検索を行うことにより、暗号化データの検索速度を向上することができる。
【発明を実施するための最良の形態】
【００３２】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一符号を付し、その繰り返しの説明は省略する。
【００３３】
図１は、本発明の一実施の形態における情報セキュリティシステムの全体構成を示す。また図２、図３は、本発明の実施の形態における情報セキュリティシステムの扱うデータや管理情報に関する説明図である。また、図４〜図８は、本発明の実施の形態における情報セキュリティシステムの処理動作を示すシーケンス図である。また、図９は、本実施の形態における、特にハッシュ値を用いた暗号化データ検索処理におけるデータの状態を示す説明図である。
【００３４】
まず図１を参照して本実施の形態の情報セキュリティシステムの構成について説明する。本実施の形態の情報セキュリティシステムは、クライアント１、ＡＳＰサーバ２、ＤＢサーバ３を有するＷｅｂベースの情報処理システムに対し導入されるソフトウェアのシステムであり、クライアント１内のＨＴＴＰプロクシ１２と、ＤＢサーバ３内のＳＱＬプロクシ３１と、暗号管理サーバ４と、ポリシー管理サーバ５とを主な構成要素として有する構成である。ＨＴＴＰプロクシ１２と暗号管理サーバ４により暗号機能を実現する。またＳＱＬプロクシ３１とポリシー管理サーバ５によりアクセス制限機能を実現する。
【００３５】
本実施の形態の情報セキュリティシステムは、一般的な３層クライアント・サーバ構成のＷｅｂベースの情報処理システム上に構成される。クライアント１は、ユーザがサーバ側に対しデータの入出力を行う部分でありデータの入出力インターフェイスとなるＷｅｂブラウザ１１を有する。入出力データはＡＳＰサーバ２での処理を経由してＤＢサーバ３においてデータベースに格納される。ＡＳＰサーバ２は、ＡＳＰ部２１で所定のビジネスロジックを処理するＷｅｂアプリケーション提供サーバである。ＤＢサーバ３は、所定のＤＢＭＳ（データベース管理システム）３２においてデータベースへの前記データの入出力つまり蓄積や抽出を行う。
【００３６】
本実施の形態では、クライアント１は、ユーザの使用するＰＣやモバイル端末などの各種Ｗｅｂクライアント装置に対応し、ＡＳＰサーバ２はＡＳＰサーバ装置に、ＤＢサーバ３はＤＢサーバ装置にそれぞれ対応する。ハードウェア的に三つのコンピュータで分割されて構成される。なお、本発明で用いているＷｅｂベースの情報処理システムの構成は一般的な３層クライアント・サーバの概念モデルに基づくものであって前記のように三つのハードウェアで分割される構成に限定するものではない。例えばビジネスロジックを処理するＡＳＰサーバ２相当の機能をクライアント装置側やＤＢサーバ装置側に実装することも可能である。
【００３７】
本情報セキュリティシステムは、前記Ｗｅｂベースの情報処理システムに対し、ＨＴＴＰプロクシ１２をクライアント１のＷｅｂブラウザ１１−ＡＳＰサーバ２間特にクライアント１内でＷｅｂブラウザ１１の背後に配置している。またＳＱＬプロクシ３１をＡＳＰサーバ２−ＤＢＭＳ３２間特にＤＢサーバ３内でＤＢＭＳ３２の前に配置している。またＡＳＰサーバ２では、既存のＡＳＰ部（アプリケーション）に加えて一部関連コード（後述の処理識別タグ追加処理などのためのコード）を有する。Ｗｅｂブラウザ１１、ＡＳＰ部２１、ＤＢＭＳ３２などは基本的に本情報セキュリティシステム導入前から使用されていた既存のものがそのまま使用可能である。
【００３８】
クライアント１−ＡＳＰサーバ２間は、ＨＴＴＰプロトコルで通信接続される。ＡＳＰサーバ２−ＤＢサーバ３間は、ＳＱＬに本発明関連の処理識別タグなどが加わった独自プロトコルで通信接続される。ＨＴＴＰプロクシ１２は、暗号管理サーバ４及びポリシー管理サーバ５と例えばＳＳＬプロトコルを用いてセキュア通信で接続される。また、ＳＱＬプロクシ３１は、暗号管理サーバ４及びポリシー管理サーバ５と例えばＳＳＬプロトコルを用いてセキュア通信で接続される。
【００３９】
またＰＫＩに基づき、認証局１０との間でユーザ証明書７、ＡＳＰ証明書８、ＤＢ証明書９がそれぞれ発行されている。各証明書は、ユーザ、ＡＳＰサーバ２、ＤＢサーバ３をそれぞれ証明する情報であり、認証時には必要に応じて認証局１０との間において検証が行われる。ユーザ証明書７はユーザのアクセス許可証となる認証トークン６内に記憶される。ユーザ証明書７を認証情報として用いたユーザ認証処理により、情報処理システムを利用するユーザの特定及び本人確認が可能である。ポリシー管理サーバ５でユーザ認証を行うことでシステムへのアクセス特にデータベースアクセスを許可されたユーザであることを確認する。また同様にＡＳＰ証明書８の認証によりＡＳＰサーバ２の完全性が確認可能で、不正者によってＡＳＰサーバ２が操作されていないことなどが保証される。また同様にＤＢ証明書９の認証によりＤＢサーバ３の完全性が確認可能で、不正者によってデータベースが操作されていないことなどが保証される。
【００４０】
クライアント１は、これに対応する一つ以上のＷｅｂクライアント装置が、ユーザが使用可能な任意位置に配置される。これには遠隔端末からのネットワークアクセスの構成も含む。ＡＳＰサーバ２、ＤＢサーバ３は、例えば所定のサーバルームに配置される。暗号管理サーバ４、ポリシー管理サーバ５は、任意のセキュアな位置に配置される。例えば所定のセキュリティレベルを保証するセキュリティサービス会社やデータセンターなどのサーバルームへの配置などである。
【００４１】
クライアント１は、Ｗｅｂブラウザ１１と、ＨＴＴＰプロクシ１２とを有する。ＨＴＴＰプロクシ１２は、Ｗｅｂブラウザ１１とは独立しており、その背後において透過的に暗号化／復号化処理動作を行う。ＨＴＴＰプロクシ１２と認証トークン６との間では、認証トークン６内に記憶されているユーザ証明書７などのユーザ情報のやり取りが必要に応じて行われる。
【００４２】
ユーザは、クライアント１において、Ｗｅｂブラウザ１１を操作し、ＡＳＰサーバ２のＷｅｂアプリケーションからＨＴＭＬデータを得る。またクライアント１で認証トークン６の情報を読み込ませてポリシー管理サーバ５におけるユーザ認証を通過してデータベースへの接続チケットを得る。ユーザは、Ｗｅｂブラウザ１１において必要に応じてデータの入力や出力を行う。データの入力とは、ＤＢサーバ３にアクセスしてデータベースにデータを蓄積することであり、データの出力とはＤＢサーバ３にアクセスしてデータベースからデータを抽出することである。
【００４３】
ＡＳＰサーバ２は、ＡＳＰ部２１と、ＳＱＬプロクシドライバ２２とを有する。ＡＳＰ部２１は既存のＷｅｂアプリケーションであり、イントラネットなどにおける所定の情報処理業務に対応するビジネスロジックを処理する。ＡＳＰサーバ２は、ＨＴＴＰサーバモジュールを備え、クライアント１のＷｅｂブラウザ１１からのＨＴＴＰプロクシ１２を介した要求に対して応答しＨＴＭＬデータを返信する。ＡＳＰサーバ２は、暗号化／復号化の対象となるデータに対して本発明の処理に係わることを示す処理識別タグ（制御情報）やデータＩＤなどを追加する処理を行う。ＳＱＬプロクシドライバ２２は、データベースクライアントモジュールであり、ＳＱＬプロクシ３１を介してＤＢＭＳ３２に対してデータの問い合わせや制御のためのＳＱＬ命令を発行するモジュールである。
【００４４】
ＤＢサーバ３は、ＳＱＬプロクシ３１と、ＤＢＭＳ３２とを有する。本実施の形態では、リレーショナル・データベースとその問い合わせ言語であるＳＱＬを扱う。
【００４５】
ＳＱＬプロクシ３１は、ＡＳＰサーバ２−ＤＢＭＳ３２間に介在し、ＡＳＰサーバ２のＳＱＬプロクシドライバ２２からＳＱＬ命令及び本発明関連処理のための処理識別情報（制御情報）を受け取ると、ポリシー管理サーバ５と通信を行って該当ユーザのアクセス権限を確認してそれに対応する適切な問い合わせ条件を設定してＤＢＭＳ３２に対しＳＱＬ命令を送信する。
【００４６】
ＤＢＭＳ３２は、リレーショナル・データベースを管理するデータベース管理システムであり、ＳＱＬプロクシ３１を通じて受信するＳＱＬ命令に応じてデータベースの制御、データ操作、抽出などを行って結果を返す。具体的には、データベース接続（対応するＳＱＬ命令は「ＣＯＮＮＥＣＴ」）、データの追加（「ＩＮＳＥＲＴ」）や変更（「ＵＰＤＡＴＥ」）、指定データの取得やデータ検索（「ＳＥＬＥＣＴ」）などがある。また、ＤＢＭＳ３２ではデータベースのバックアップ処理など所定の運用管理がなされる。データベースには暗号化データが格納されるので、バックアップデータも同様に暗号化データの形式となり、仮にこれが不正者により持ち出されても復号化に必要な鍵情報は暗号管理サーバ４に管理されているため意味をなさない。
【００４７】
暗号管理サーバ４は、ＤＢサーバ３のデータベースへの格納対象となるデータについての暗号処理を管理するサーバであり、ＨＴＴＰプロクシ１２からの要求に応じてデータの暗号化／復号化処理を行う。所定の暗号アルゴリズムを使用して暗号化／復号化がなされる。ユーザによるデータベースへのデータの入力時には、クライアント１でＷｅｂブラウザ１１から入力された対象データについてＨＴＴＰプロクシ１２からの依頼に基づき暗号化処理を行って暗号化データを返し、これがサーバ側（ＡＳＰサーバ２，ＤＢサーバ３）に渡される。また、ユーザによるデータベースからのデータの出力時には、ＨＴＴＰプロクシ１１からの依頼に基づき対象データの復号化処理を行ってデータを返し、これがＷｅｂブラウザ１１に渡される。暗号化／復号化に使用する鍵は、ポリシー管理サーバ５よりデータＩＤを受信した際などに必要に応じて作成し保管する。
【００４８】
暗号管理サーバ４は、暗号化／復号化の際の鍵情報をセキュアに管理する。暗号管理サーバ４は、暗号管理情報として、対象となるデータのデータＩＤと、そのデータに対する暗号化／復号化の鍵との対応を管理する。この鍵管理はＷｅｂベース情報処理システムから分離されている。なおこの鍵管理を分離せずＡＳＰサーバ２やＤＢサーバ３付近に置いて運用する構成も可能であり、これはシステム運用におけるポリシーに依存する。
【００４９】
ポリシー管理サーバ５は、ユーザ単位のポリシーの設定を管理するサーバであり、この設定には、データベースにおけるテーブル、レコード、カラム、セルなどの所定データ単位を対象としたアクセス権限の設定を含む。ポリシー管理サーバ５は、所定データ単位で、暗号化が必要なデータに対してそのデータＩＤを設定する。また、ポリシー管理サーバ５は、ユーザの認証トークン６との間でユーザ認証処理を行う。前記ポリシーとしては、データベースに格納されるデータについて、どのユーザがどのデータを読み取れるようにするか、データに対するどのような操作を許可するかなど、データの目的外利用や外部侵入、情報機密漏洩などを防止するための方針を定める。前記アクセス権限を設定することでユーザごとにアクセス可能なデータを分けることができる。例えば病院の電子カルテシステムで、あるグループ例えば外科の患者を担当する看護士はその外科の患者の電子カルテデータについてのみアクセス許可されるようにポリシー設定し、別グループである内科の患者を担当する看護士はその内科の患者の電子カルテデータについてのみアクセス許可されるように設定する。
【００５０】
ポリシー管理サーバ５は、ＨＴＴＰプロクシ１２やＳＱＬプロクシ３１からの要求に応じて、ＰＫＩに基づくユーザ認証と、ユーザのアクセス権限の設定を含むポリシー設定の確認処理及び該当アクセスユーザに対する権限付与とを行う。特にＳＱＬプロクシ３１からアクセス権限の確認及び付与の要求を受けた場合は、ユーザがデータベースにおいてアクセス許可される領域あるいはデータを制限する条件を記述した情報を生成して返す。ポリシー管理サーバ５は、ポリシー管理情報として、ユーザを一意に特定するユーザＩＤとデータを一意に特定するデータＩＤとの対応を管理する。あるデータＩＤで識別されるデータにアクセス可能なユーザがユーザＩＤで対応付けされる。ポリシー管理サーバ５は、認証トークンとの間でのユーザ認証処理後、認証を正常に通過したユーザに対して、データベースへの接続の許可を示す情報である接続チケットを発行し、以後セッション内ではこの接続チケットをもとに認証や確認を行わせる。ＨＴＴＰプロクシ１２は、発行された接続チケットの情報を必要に応じて提示してサーバ側にアクセスを行う。
【００５１】
ＨＴＴＰプロクシ１２は、クライアント１のＷｅｂブラウザ１１とＡＳＰサーバ２との間におけるＨＴＴＰプロトコル及び関連プロトコルによる通信に自動的に介入し、ＤＢサーバ３のデータベースに格納されるデータについて暗号化／復号化の必要を判断して暗号管理サーバ４により暗号化／復号化処理を行わせる。ＨＴＴＰプロクシ１２は、Ｗｅｂブラウザ１１／ＡＳＰサーバ２から受信した対象データについて暗号化／復号化の必要があると判断した場合は暗号管理サーバ４に対象データの暗号化／復号化の依頼を行ってそこで適切な鍵情報を使用して対象データの暗号化／復号化処理を行わせ、暗号化／復号化されたデータを得てＡＳＰサーバ２／Ｗｅｂブラウザ１１に返す。
【００５２】
ＨＴＴＰプロクシ１２は、Ｗｅｂブラウザ１１との通信部、ＡＳＰサーバとの通信部、暗号管理サーバ４との通信部、ポリシー管理サーバ５との通信部、認証トークン６の情報を読み込んでポリシー管理サーバ５などとの間で認証処理を行う認証処理部、データの暗号化を判断する暗号化処理部、データの復号化を判断する復号化処理部、データ検索を判断する検索処理部などの図示しないプログラムモジュールを有し、それぞれ連携して処理を行う。クライアント１に対応するコンピュータは、メモリ上にＨＴＴＰプロクシ１２を構成する前記各プログラムモジュールを有し、プロセッサにより読み込んで処理命令を実行することで各種処理が実現される。
【００５３】
なお一般の「ＨＴＴＰプロクシ」は、Ｗｅｂ閲覧のための一つ以上のＷｅｂクライアントからのＨＴＴＰプロトコルによる通信処理を代理するものを指すが、本実施の形態におけるＨＴＴＰプロクシ１２は単に通信処理の代理を行うだけでなく対象データの暗号化／復号化及び関連処理をＷｅｂベースの情報処理システムの裏で行うものである。
【００５４】
図２は、情報処理システム上におけるデータの暗号化／復号化の状態を示す説明図である。ｄ１〜ｄ５は、あるデータに関する状態を示す。ｄ１，ｄ２は、ユーザが判読可能な通常状態（未暗号化状態または復号化された状態）のデータを示し、ｄ３，ｄ４，ｄ５は、暗号化された状態の暗号化データを示す。クライアント１のＷｅｂブラウザ１１において入力されるデータｄ１についての暗号化／復号化処理は、クライアント１でＷｅｂブラウザ１１の背後で動作するＨＴＴＰプロクシ１２とセキュアな位置に配置され暗号処理及び鍵情報の管理を行う暗号管理サーバ４とによる暗号機能を通じて行われる。データｄ１をクライアント１のＷｅｂブラウザ１１からサーバ側のＤＢＭＳ３２のデータベースに入力（蓄積）する際は、暗号機能によりデータｄ２の暗号化が行われて暗号化データｄ３の状態となり、暗号化データｄ３がサーバ側（ＡＳＰサーバ２）に渡される。ＡＳＰサーバ２では暗号化データｄ４の状態を扱う。また、ＤＢサーバ３ではＤＢＭＳ３２のデータベースに暗号化データｄ５の状態で格納される。サーバ側のデータベース中からデータつまり暗号化データｄ５をクライアント１側に出力（抽出）する際は、ＡＳＰサーバ２を通じて暗号化データｄ４がクライアント１側に送信されると、暗号機能で暗号化データｄ３の復号化を行って元のデータｄ２に戻され、Ｗｅｂブラウザ１１でデータｄ１の状態で出力される。このようにサーバ側では判読不能な暗号化データが扱われることとなり、対象データをそのまま判読可能な形で出力できるのはクライアント１側における許可ユーザのみとなる。仮にサーバ側で暗号化データが不正者によって入手されたとしても、復号化のための鍵情報はセキュアな暗号管理サーバ４に管理されていて手に入らないため意味をなさない。許可ユーザの判断は、また図２中に示すようにポリシー管理サーバ５及びＳＱＬプロクシ３１によるアクセス制限機能を有し、ＤＢＭＳ３２の前段及びＨＴＴＰプロクシ１２との通信に基づくにおいてユーザ認証及びユーザのベースアクセスの制限が行われる。
【００５５】
ＳＱＬプロクシ３１は、ユーザによるＤＢＭＳ３２のデータベースへのアクセスの制限を行う機能を担う処理部である。ＳＱＬプロクシ３１は、ＡＳＰサーバ２を通じてＤＢＭＳ３２へのアクセスがあった際にＳＱＬプロクシドライバ２２からＳＱＬ命令を受け取ると、ポリシー管理サーバ５と通信を行って、データベースアクセスを行おうとしているユーザについてのユーザ認証を行い、またポリシー管理サーバ５で設定されているユーザのアクセス権限を含むポリシーの確認を行う。ユーザ認証の正常な通過により該当ユーザのデータベースアクセスを許可し、またポリシーの確認に基づき該当ユーザについてのデータベースアクセス権限の付与を行い、データベースへのアクセス領域あるいはデータを絞り込む。ユーザのデータベース接続後のセッションにおいて、データベースへのアクセスの発生の度に、前記アクセス領域あるいはデータの絞り込みの条件をＳＱＬ命令に付加する。また、ＳＱＬプロクシ３１は、後述する暗号化データ検索処理の際に暗号管理サーバ４と通信を行って検索支援機能による検索処理を行わせる。なおＳＱＬプロクシ３１は、本実施の形態の場合、ＤＢサーバ３内でＤＢＭＳ３２の前面に配置しているが、ＡＳＰサーバ２−ＤＢＭＳ３２間に介在すればどこに配置しても構わない。
【００５６】
ＳＱＬプロクシ３１と、ポリシー管理サーバ５及び暗号管理サーバ４との間は必要時にＳＳＬなどを用いてセキュア通信で接続される。本実施の形態では、ＳＱＬプロクシ３１と、ポリシー管理サーバ５及び暗号管理サーバ４との間の任意位置にＩＰパケットプロクシ３１１を配置している。ＩＰパケットプロクシ３１１は、ＳＱＬプロクシ３１のアドレスを隠蔽してセキュリティを高める機能を担う。ポリシー管理サーバ５及び暗号管理サーバ４には、構築された情報セキュリティシステム数に応じた複数のＳＱＬプロクシ３１が接続されることとなるが、ＩＰパケットプロクシ３１１でのアドレス隠蔽機能により、各ＳＱＬプロクシ３１を統一的に扱えるため、ＳＱＬプロクシ３１との通信のセキュリティをより高めることが可能となる。このＩＰパケットプロクシ３１１は必須要素ではなく、他の実施の形態としてこれを配置しない構成も勿論可能である。ＩＰパケットプロクシ３１１は適用対象の情報処理システムにおいて要求されるキュリティレベルに応じて導入すればよい。
【００５７】
暗号管理サーバ４、ポリシー管理サーバ５の配置位置は任意であるが、セキュリティを高めるために本実施の形態では、鍵情報を管理する暗号管理サーバ４及びポリシーを管理するポリシー管理サーバ５を対象Ｗｅｂベース情報処理システムとは別ドメインで管理し、暗号管理サーバ４やポリシー管理サーバ５にアクセスしてくるＳＱＬプロクシ３１がＩＰパケットプロクシ３１１によりアドレス隠蔽されながらも確実に認証されている状態、を保持する。
【００５８】
情報処理システムの利用を所定のポリシー設定に基づき許可されるユーザに対しては、システムへのアクセス許可証として機能する認証トークン６が与えられている。認証トークン６は、耐タンパー性を持った、ソフトウェアまたはハードウェアによって実装される暗号演算器であり、ユーザに固有の情報（秘密鍵など）を保持するものである。本実施の形態では、認証トークン６はハードウェア構成によるモジュールであり、メモリとプロセッサを有する所定形状の情報記憶媒体である。認証トークン６内のメモリにユーザ証明書７、ＰＫＩにおける秘密鍵の情報などを保持している。認証トークン６内では、ユーザ証明書７の提供の他、プロセッサによりデジタル署名の生成などの処理が行われる。認証トークン６は、例えばＵＳＢトークンやＩＣカードなどの形態を採る。本実施の形態では、クライアント１において認証トークン６の情報を読み込むことでユーザ証明書７の情報を用いてポリシー管理サーバ５でユーザ認証処理が行われる。ユーザ証明書７とポリシー管理サーバ５で管理されるユーザＩＤは対応し、これを用いてユーザ単位のアクセス権限管理が行われる。ポリシー管理サーバ５でのユーザ認証に成功すると、ユーザのデータベースアクセスが許可され、ユーザに対し接続チケットが発行される。この接続チケットは、一認証セッションにおいて有効な情報を暗号化して保存したものであり、リトライ攻撃などから保護するために、保存情報として有効期限などの情報を持つ。クライアント１は、この接続チケットをサーバ側に提示することで正規ユーザであること及びアクセス権限を有することを伝える。
【００５９】
図３（ａ）は、暗号管理サーバ４内で管理する暗号管理情報を示す。暗号管理情報として、対象データを識別するデータＩＤ４１と、そのデータについての暗号化／復号化の際に使用する鍵情報４２と、さらには後述のハッシュ情報４３、処理内容４４などとの対応をテーブルに保持している。データＩＤ４１は、ポリシー管理サーバ５が対象データに対して振り出したものであり、ユーザＩＤとの対応関係を持つ。鍵情報４２は、鍵の値を保持している参照先アドレスあるいは鍵の値そのものの情報である。ハッシュ情報４３は、後述する暗号化データ検索処理のために使用する情報であり、対象データに対する所定の一方向ハッシュ関数によるハッシュ値を管理するものである。ハッシュ情報４３は、そのハッシュ値を保持している参照先アドレスあるいはハッシュ値そのものなどの情報である。処理属性４４は、対象データに対する前記鍵情報４１による暗号化や一方向ハッシュ化などの処理内容や、処理状態、対象データのタイプ、暗号化対象か否かなどの諸情報である。他に、データＩＤ４１に対応するユーザＩＤの情報などを持たせても良い。
【００６０】
なおＨＴＴＰプロクシ１２及び暗号管理サーバ４における暗号処理方式は特に限定されないのでその暗号化と復号化の鍵を区別せずにまとめて一つの鍵４２として表わしている。暗号処理方式に応じて複数の鍵を使用する場合は必要な複数の鍵情報が暗号管理サーバ４で管理される。
【００６１】
図３（ｂ）は、ポリシー管理サーバ５内で管理するポリシー管理情報を示す。ユーザ証明書７の情報に対応してユーザを特定するユーザＩＤ５１と、そのユーザがアクセス許可されるデータを特定するデータＩＤ５２と、の対応がテーブルに管理されている。データＩＤ５２はポリシー管理サーバ５が必要に応じて生成し対象データに付与する。これは図３（ａ）の暗号管理情報におけるデータＩＤ４１にそのまま対応する。なお対象データに対するデータＩＤ４１あるいはデータＩＤ５２の生成・付与を暗号管理サーバ４など他のモジュールから行う形態も可能である。図３（ｂ）ではポリシー管理情報としてユーザＩＤ５１とデータＩＤ５２の対応のみ示しているが、他に、ユーザやユーザグループ単位のデータベースアクセス許可領域や、レコード・カラムなどの扱うデータ単位などの諸情報を保管して使用しても良い。
【００６２】
暗号管理サーバ４は、前記のような暗号化／復号化処理の機能に加え、データベースに格納された暗号化データの検索のための検索支援機能を提供する。ユーザより入力された検索キー（検索ワード）そのままではデータベース中の暗号化データについての検索ができない。従って、検索キーを暗号管理サーバ４で暗号化してこの暗号化された検索キーでデータベース問い合わせを行わせることとなる。対象データの暗号化鍵と同一鍵で検索キーを暗号化して完全一致検索を行うことで検索結果を得ることが可能である。
【００６３】
Ｗｅｂブラウザ１１でデータベースにおける暗号化済み領域に対する検索指定及び検索条件の指定が行われると、ＨＴＴＰプロクシ１２はそれを認識し、暗号化データ検索処理モードとなる。暗号管理サーバ４では、ＨＴＴＰプロクシ１２からの暗号化データ検索要求に基づき暗号化データ検索の検索条件に含まれる検索キーを受け取って検索キーの暗号化（あるいは一方向ハッシュ化）を行う。暗号化された検索キーをＨＴＴＰプロクシ１２に返し、ＨＴＴＰプロクシ１２は、暗号化された検索キーをＡＳＰサーバ２に渡す。ＡＳＰサーバ２のＳＱＬプロクシドライバ２２は暗号化された検索キーを用いてデータ検索のＳＱＬ命令である「ＳＥＬＥＣＴ」を適切に設定してＤＢサーバ３に対する問い合わせを送信する。ＳＱＬプロクシ３１ではポリシー管理サーバ５でユーザのアクセス権限の確認を行ってデータベースアクセス領域の絞り込み条件を付与してからＤＢＭＳ３２にＳＱＬ命令を与える。ＤＢＭＳ３２では、暗号化された検索キーでデータ検索がなされ、検索結果の暗号化データのリストがＳＱＬプロクシ３１で得られる。ＳＱＬプロクシ３１は検索結果について必要なら絞り込みやデータ補完等の処理を行ってからＡＳＰサーバ２に送信する。ＡＳＰサーバ２は検索結果のＨＴＭＬをＷｅｂブラウザ１１に送信する。これにＨＴＴＰプロクシ１２が介入し、検索結果に含まれる暗号化データについての復号化依頼を暗号管理サーバ４に行って復号化を行わせ、復号化されたデータで検索結果中の暗号化データを元データに置き換えてからＷｅｂブラウザ１１に返して出力させる。クライアント側で指定された検索条件をサーバ側のＤＢＭＳ３２に対して伝える処理方法などについては上記手順以外にも可能である。
【００６４】
暗号化データ検索の基本的な処理は上のようになるが、検索結果が多量のデータとなる場合を考慮しなければならないため、検索の効率化のための処理方法を提供する。暗号管理サーバ４の検索支援機能は、検索の効率化を実現するための処理として、ハッシュ値を用いた検索処理を提供する。検索処理要求が発生した時、完全一致検索、部分一致検索などの検索処理モードを判断し、それに合わせた処理を行う。特に部分一致検索の際にハッシュ値を用いた検索を行うことが有効となる。
【００６５】
ハッシュ値を用いる検索処理について説明する。この処理を行う形態では、クライアント１側からデータをデータベースへ入力する際に、暗号管理サーバ４で、対象データを暗号化することに加え、対象データを所定の一方向ハッシュ関数によりハッシュ化してそのハッシュ値を生成する。ハッシュ化は非可逆暗号化でありそのハッシュ値は固定ビットサイズのデータとなる。生成したハッシュ値についての情報は、暗号管理情報におけるハッシュ情報４３としてデータＩＤ４１他に関連付けて保管する。ＤＢサーバ３では、暗号化データを保管すると共に、検索に備えてこの暗号化データの元データについてのハッシュ値を関連付けて両方参照できるように管理しておく。
【００６６】
暗号化データ検索時、ハッシュ値を用いた検索処理を行う場合に、ＨＴＴＰプロクシ１２は、暗号管理サーバ４に依頼して検索キーについて所定の一方向ハッシュ関数によりハッシュ化してハッシュ値の生成を行わせる。ＨＴＴＰプロクシ１２は、このハッシュ値を検索キーとしてサーバ側に与え、データベースの検索を行わせる。データベースの検索は、データベース中の暗号化データに対応する元データのハッシュ値が対象となるように行う。前記検索キーとなるハッシュ値によってデータベース中で一致する値の領域を抽出する。この抽出結果には元の検索キーに対応しない領域も含まれるので、後の処理（検索支援機能による検索処理）で確認して元の検索キーに対応する領域のみ抽出することとする。この抽出結果のリストに対して、ＳＱＬプロクシ３１は、暗号管理サーバ４の検索支援機能に対し要求を行い、検索処理セッションを実行する。この検索処理セッションで、前記検索キーのハッシュ値に一致する値の領域に対応する暗号化データを復号化し、元の検索キーに一致する領域のみ選んでこれを検索結果として暗号化データの状態で返す。この検索結果をＡＳＰサーバ２を経由してＨＴＴＰプロクシ１２及び暗号管理サーバ４で復号化処理を経てからＷｅｂブラウザ１１に出力する。ハッシュ値を用いた検索を行うことで扱う情報量を減少させるので、検索速度を向上できる。
【００６７】
次に、本実施の形態の情報セキュリティシステムにおける処理動作について以下（１）〜（５）において図４〜図８に示すシーケンスを参照して順に説明する。
【００６８】
（１）ユーザ認証、接続チケットの入手：  まず、図４のシーケンスを参照しながら、ユーザ認証、及びデータベースアクセスのための接続チケット入手処理の流れについて説明する。まず、クライアント１のＷｅｂブラウザ１１から、ＨＴＴＰのＧＥＴメソッドによるアクセスがＡＳＰサーバ２に対してなされる。ＡＳＰサーバ２からは、アクセス要求に対応するＨＴＭＬデータが返される（ステップＳ１０１〜Ｓ１０３）。ここではＡＳＰサーバ２で既存のＡＳＰ部２１が、Ｗｅｂアプリケーションへのユーザ単位でのアクセス権をユーザＩＤ及びパスワードの認証により確認する処理を行っているものとする。ＨＴＴＰプロクシ１２は、これに介入し、ＨＴＭＬヘッダの解析を行い、入力フォームをＷｅｂブラウザ１１に対して返す。次に、Ｗｅｂブラウザ１１を通じてユーザＩＤとパスワード、あるいは認証トークン６から読み込んだ情報などのユーザ情報の入力がなされると、そのユーザ情報がサーバ側に対し送信される（Ｓ１０５〜Ｓ１０７）。
【００６９】
ＨＴＴＰプロクシ１２は、Ｗｅｂブラウザ１１側からのユーザ情報を受け取り、ポリシー管理サーバ５に対しユーザ認証要求を行う。ポリシー管理サーバ５は、ユーザ認証要求を受けて認証チャレンジをＨＴＴＰプロクシ１２に送信する。ＨＴＴＰプロクシ１２は、ユーザ認証のための認証情報を生成し、これをポリシー管理サーバ５に送信する。認証情報の生成及び送信は、具体的には、認証トークン６内でデジタル署名を生成してポリシー管理サーバ５側に送付するなどする（Ｓ１０８〜Ｓ１１１）。ポリシー管理サーバ５は、ＨＴＴＰプロクシ１２から認証情報を受け取ると、これを検証する処理を行う。正当な認証トークン６を持たないユーザはデジタル署名の生成が行えないので認証を通過できない。ポリシー管理サーバ５では、ユーザ証明書７の情報を検索し、認証トークン６の正当性をＰＫＩに基づき認証局に検証してもらうことで確認する。そしてユーザ認証結果をＨＴＴＰプロクシ１２に返す。クライアント１側からの認証情報からユーザが本人確認された場合は、データベースへの接続チケットとセッション情報とを同時に返す。セッション情報は、ユーザのデータベース接続セッションを識別する制御情報である（Ｓ１１２，Ｓ１１３）。
【００７０】
ＨＴＴＰプロクシ１２は、ポリシー管理サーバ５からユーザ認証結果を受信し、アクセスが許可されて接続チケットを受け取った場合は、このユーザ認証結果情報を含んだＨＴＴＰにおけるＰＯＳＴデータの生成を行い、これをＡＳＰサーバ２に対し送信する。ＡＳＰサーバ２は、認証通過に対応したＨＴＭＬデータをＷｅｂブラウザ１１側に返す（Ｓ１１４〜Ｓ１１７）。なお前記のクライアント１におけるユーザＩＤとパスワードのデータ入力は、既存Ｗｅｂアプリケーションとの互換性のために行っている処理であり、認証トークン６からのユーザ証明書７の情報を取り出して認証する処理さえあれば無くても構わない処理である。
【００７１】
（２）データベースへの接続：  次に、図５のシーケンスを参照しながらデータベースへの接続処理について説明する。まず、Ｗｅｂブラウザ１１からＡＳＰサーバ２にＧＥＴメソッドでアクセスすると、ＡＳＰサーバ２からユーザ情報要求のＨＴＭＬデータが送信される。ＨＴＴＰプロクシ１２は、ＨＴＭＬヘッダ解析を行い、入力フォームをＷｅｂブラウザ１１に返す。Ｗｅｂブラウザ１１を通じてデータ入力がなされると、そのユーザ情報がＡＳＰサーバ２側に対し送信される（Ｓ２０１〜Ｓ２０７）。それにＨＴＴＰプロクシ１２が介入し、前記（１）のユーザ認証及び接続チケット入手処理において入手した接続チケットを含んだＰＯＳＴデータを生成し、認証情報としてＡＳＰサーバ２に送信する。ＡＳＰサーバ２は、ＨＴＴＰプロクシ１２から認証情報を受信して、ユーザ情報、セッション情報、認証チケットなどを含んだデータベース接続のための接続情報をＳＱＬプロクシ３１に送信する（Ｓ２０８〜Ｓ２１０）。
【００７２】
ＳＱＬプロクシ３１は、接続情報をＡＳＰサーバ２から受信すると、ユーザ情報と接続チケットを含んだ認証情報をポリシー管理サーバ５に送信する。ポリシー管理サーバ５は、認証処理として接続チケットを検証してデータベース接続資格のあるユーザであるかを確認し、認証結果をＳＱＬプロクシ３１に返す（Ｓ２１１〜Ｓ２１３）。ＳＱＬプロクシ３１は、正規ユーザであることがわかるとＤＢＭＳ３２に対しデータベース接続のためのＳＱＬ命令である「ＣＯＮＮＥＣＴ」を送信する（Ｓ２１４）。ＤＢＭＳ３２は、データベース接続処理を行って結果をＳＱＬプロクシ３１に返し（Ｓ２１５）、ＳＱＬプロクシ３１は、接続結果をＡＳＰサーバ２に返す。ＡＳＰサーバ２は、接続結果のＨＴＭＬデータをＷｅｂブラウザ１１に返す（Ｓ２１６〜Ｓ２１８）。
【００７３】
（３）データ暗号化：  次に、図６のシーケンスを参照しながら、データの暗号化処理、つまりユーザがクライアント１側からデータを入力してサーバ側のデータベースへ追加・変更する場合の処理について説明する。まず、クライアント１のＷｅｂブラウザ１１からＡＳＰサーバ２に対しＨＴＴＰのＧＥＴメソッドでのアクセスがなされ、データ入力のための入力フォームを記述したＨＴＭＬデータ及び関連データが返される（Ｓ３０１〜Ｓ３０３）。ＨＴＴＰプロクシ１２は、ＨＴＭＬヘッダを解析し、入力フォームの構造特にそのフィールド（入力項目、入力欄）の属性などを判断する（Ｓ３０４）。例えば、ＡＳＰサーバ２でＨＴＭＬの入力フォームに対し本発明に係わる処理つまり暗号化／復号化処理を必要とすることを示すマーク付け（処理識別タグの付加）を行っておき、入力フォーム中の名前や電話番号や住所などの特定のフィールドについてデータ暗号化対象とすることを指示する記述を行っておく。これにより名前などの特定のフィールドに入力されるデータについては暗号化を行うものとＨＴＴＰプロクシ１２及び暗号管理サーバ４で判断される。
【００７４】
ＨＴＴＰプロクシ１２から入力フォームがＷｅｂブラウザ１１に送信されると、Ｗｅｂブラウザ１１での入力フォームの表示を通じてユーザがデータベースに格納したいデータの入力を行って送信提出ボタンが押され入力データがＡＳＰサーバ２側に送信される（Ｓ３０５〜Ｓ３０７）。
【００７５】
ＨＴＴＰプロクシ１２は、Ｗｅｂブラウザ１１からＡＳＰサーバ２に送信される入力データに介入し、ここを処理起点として以下で入力データの暗号化を図る。ＨＴＴＰプロクシ１２は、まず認証のために前記（１）のシーケンスで入手済みの接続チケットとユーザ証明書７の情報とを含んだ認証情報を暗号管理サーバ４に送信する。暗号管理サーバ４は、認証情報を簡単に確認してからポリシー管理サーバ５に送信する。ポリシー管理サーバ５は、受信した認証情報をもとに接続チケットの検証を行い（Ｓ３０８〜Ｓ３１０）、認証結果を暗号管理サーバ４に返す。暗号管理サーバ４は認証結果をＨＴＴＰプロクシ１２に返す（Ｓ３１１，Ｓ３１２）。
【００７６】
なおここではユーザ認証のために一旦暗号管理サーバ４を経由してポリシー管理サーバ５に接続する手順としているが、直接ポリシー管理サーバ５に接続して認証を行う手順も可能である。
【００７７】
ＨＴＴＰプロクシ１２は、ポリシー管理サーバ５での認証を通過すると、対象データについてのデータ暗号化依頼を暗号管理サーバ４に対して送信する。同時に入力データ中のどのフィールドについて暗号化を施すかを示すフィールド情報なども送信される（Ｓ３１３）。この際、データ暗号化依頼に含まれる対象データはＳＳＬ通信で保護される。暗号管理サーバ４は、データ暗号化依頼及びその対象データを受信すると、対象データに対してデータＩＤを付与あるいは付与済みのデータＩＤを確認すると共に、所定の暗号化アルゴリズム及び暗号化鍵を用いて暗号化処理を施し（Ｓ３１４）、暗号化データをＨＴＴＰプロクシ１２にＳＳＬ通信で返す。対象データのデータＩＤ、その暗号化鍵及び復号化鍵などの暗号化処理関連情報や処理結果は、図３（ａ）の暗号管理情報として暗号管理サーバ４内に保管する。
【００７８】
なおこの暗号化処理をＨＴＴＰプロクシ１２において行う形態にすることも可能である。その場合、暗号化処理時に暗号管理サーバ４は鍵情報４２などの暗号管理情報を確認あるいは提供し、ＨＴＴＰプロクシ１２で所定の暗号化アルゴリズム及び暗号化鍵で対象データの暗号化処理を行う。暗号化及び鍵管理の方式は所定技術を使用する。
【００７９】
ＨＴＴＰプロクシ１２は、暗号管理サーバ４との通信を通じて対象データの暗号化データを取得すると、その暗号化データと接続チケットなどを含んだＨＴＭＬのＰＯＳＴデータを生成し、ＨＴＴＰのＰＯＳＴメソッドでＡＳＰサーバ２に送信する（Ｓ３１６，Ｓ３１７）。ＡＳＰサーバ２は、暗号化データを含んだＰＯＳＴデータを受信すると、データベースへのデータ追加変更のための、暗号化データ、セッション情報、接続チケットを含んだＳＱＬ形式の追加変更情報をＳＱＬプロクシドライバ２２からＳＱＬプロクシ３１に送信する（Ｓ３１８）。
【００８０】
ＳＱＬプロクシ３１は、ＡＳＰサーバ２側から追加変更情報を受けると、ＤＢＭＳ３２に渡す前に、ポリシー管理サーバ５に対し接続チケットを含んだ認証情報を送信して認証を行わせる。ポリシー管理サーバ５は、接続チケットの検証及びアクセス権限の確認を行ってユーザがデータベースへのデータ入力の資格があることを確認し、認証結果をＳＱＬプロクシ３１に返す（Ｓ３１９〜Ｓ３２１）。ＳＱＬプロクシ３１は、認証後、ＤＢＭＳ３２に対し適切なデータベース問い合わせ条件を設定してデータ追加変更を指示するＳＱＬ命令である「ＩＮＳＥＲＴ」／「ＵＰＤＡＴＥ」などを送信する（Ｓ３２２）。ＤＢＭＳ３２は、データベースへ対象となる暗号化データの追加変更処理を行って追加変更結果を返す（Ｓ３２３）。ＳＱＬプロクシ３１は、データベースへの追加変更結果をＡＳＰサーバ２に返し、ＡＳＰサーバ２は、その追加変更結果のＨＴＭＬデータをＷｅｂブラウザ１１に返す（Ｓ３２４〜Ｓ３２６）。
【００８１】
（４）データ復号化：  次に、図７のシーケンスを参照しながら、データの復号化処理、つまりユーザがサーバ側のデータベースからデータを抽出、取得してクライアント１側に出力する場合の処理について説明する。まず、クライアント１のＷｅｂブラウザ１１からＡＳＰサーバ２に対しＨＴＴＰのＧＥＴメソッドでのアクセスがなされ、データ出力のための入力フォームのＨＴＭＬデータ及び関連データが返される（Ｓ４０１〜Ｓ４０３）。ＨＴＴＰプロクシ１２は、ＨＴＭＬヘッダを解析し、入力フォームの構造特にそのフィールドの属性などを判断する（Ｓ４０４）。なおデータベースからのデータ取得処理は広義には検索処理（ＳＱＬ命令「ＳＥＬＥＣＴ」による処理）であり、後述の暗号化データ検索処理と基本処理が共通している。
【００８２】
ＨＴＴＰプロクシ１２から入力フォームがＷｅｂブラウザ１１に送信されると、Ｗｅｂブラウザ１１での入力フォームの表示を通じてユーザがデータベースから取得したいデータの指示の入力を行って送信提出ボタンが押され入力データ（取得対象の指示データ）がＡＳＰサーバ２側に送信される（Ｓ４０５〜Ｓ４０７）。ＨＴＴＰプロクシ１２は、Ｗｅｂブラウザ１１からＡＳＰサーバ２側に送信される入力データに介入する。ＨＴＴＰプロクシ１２は、データ暗号化の際と同様に、まず前記（１）のシーケンスで入手済みの接続チケットを含んだ認証情報を暗号管理サーバ４に送信し、暗号管理サーバ４は、認証情報をポリシー管理サーバ５に送信する。ポリシー管理サーバ５は、受信した認証情報をもとに接続チケットの検証を行い、認証結果を暗号管理サーバ４に返し、暗号管理サーバ４は認証結果をＨＴＴＰプロクシ１２に返す（Ｓ４０８〜Ｓ４１２）。
【００８３】
ＨＴＴＰプロクシ１２は、認証後、取得対象暗号化データの指示データ（データＩＤなど）を含んだＨＴＭＬのＧＥＴデータを生成し、ＨＴＴＰのＧＥＴメソッドでＡＳＰサーバ２に送信する（Ｓ４１３，Ｓ４１３）。ＡＳＰサーバ２は、ＨＴＴＰプロクシ１２から指示データを含んだＧＥＴデータを受信すると、データベースからのデータ取得のための、指示データ、セッション情報、認証チケットを含んだＳＱＬ形式の取得情報をＳＱＬプロクシドライバ２２からＳＱＬプロクシ３１に送信する（Ｓ４１５）。
【００８４】
ＳＱＬプロクシ３１は、ＡＳＰサーバ２側から取得情報を受けると、ポリシー管理サーバ５に接続チケットを含んだ認証情報を送信して認証を行わせる。ポリシー管理サーバ５は、接続チケットの検証及びアクセス権限の確認を行ってユーザがデータベースからのデータ出力の資格があることを確認し（Ｓ４１６，Ｓ４１７）、その認証結果を返す。ポリシー管理サーバ５は、この認証結果に、ユーザのアクセス権限に対応したデータベースアクセス領域絞り込み条件となるＷＨＥＲＥ句の情報を含めて送信する。前記ＷＨＥＲＥ句の情報は、データベースにおいてユーザがアクセスを許可される領域あるいはデータＩＤなどを限定する指示情報である。ＳＱＬプロクシ３１は、ポリシー管理サーバ５での認証後、ＤＢＭＳ３２に対し、適切なデータベース問い合わせ条件を設定して、データ抽出のＳＱＬ命令である「ＳＥＬＥＣＴ」に前記絞り込み条件となるＷＨＥＲＥ句の情報を付加した形で送信する（Ｓ４１８）。なお前記絞り込み条件となるＷＨＥＲＥ句の情報の作成をＳＱＬプロクシ３１で行う形態でも構わない。その場合、ポリシー管理サーバ５でのアクセス権限確認をもとに絞り込み条件を作成する。ＤＢＭＳ３２は、データベースから取得対象である暗号化データを抽出して取得する処理を行って結果を返す（Ｓ４１９，Ｓ４２０）。ＳＱＬプロクシ３１は、データベースからの取得結果をＡＳＰサーバ２に返し、ＡＳＰサーバ２は、取得結果のＨＴＭＬデータをＷｅｂブラウザ１１に返す（Ｓ４２１，Ｓ４２２）。
【００８５】
ＨＴＴＰプロクシ１２は、ＡＳＰサーバ２からＷｅｂブラウザ１１に送信される取得結果のＨＴＭＬデータに介入して受信し、そのＨＴＭＬヘッダを解析してデータ復号化の必要性を判断する。そして対象の暗号化データについて復号化が必要と判断するとデータ復号化依頼を暗号管理サーバ４に対して送信する。同時に取得暗号化データ中のどのフィールドについて復号化を施すかを示すフィールド情報なども送信される（Ｓ４２３，Ｓ４２４）。
【００８６】
暗号管理サーバ４は、データ復号化依頼及びその対象の暗号化データを受信すると、暗号管理情報を参照しながら対象の暗号化データに対して所定の復号化アルゴリズム及び復号化鍵を用いて復号化処理を施し（Ｓ４２５）、復号化されたデータをＨＴＴＰプロクシ１２に返す。復号化されたデータを返す際にはＳＳＬ通信でデータが保護される。復号化処理の関連情報や処理結果などは、暗号管理情報として暗号管理サーバ４内に保管する。ＨＴＴＰプロクシ１２は、復号化されて元に戻ったデータをＷｅｂブラウザ１１に返し、Ｗｅｂブラウザ１１で判読可能な形で出力される（Ｓ４２６，Ｓ４２７）。
【００８７】
なお暗号化処理の場合と同様に復号化処理をＨＴＴＰプロクシ１２において行う形態にすることも可能である。その場合、暗号管理サーバ４では暗号管理情報を確認あるいは提供し、ＨＴＴＰプロクシ１２において所定の復号化アルゴリズム及び復号化鍵で対象暗号化データを復号化処理する。復号化及び鍵管理の方式は所定技術を使用する。
【００８８】
（５）データ検索：  次に、図８、図９を参照しながら、データ検索処理、つまりクライアント１側から検索条件を入力してサーバ側のデータベース中のデータを検索しクライアント１側に出力する場合の処理について説明する。暗号化データ検索の際は、クライアント１側からサーバ側及び暗号管理サーバ４やポリシー管理サーバ５に対して特別の検索処理である旨を告げ、検索モードに応じた処理を行う。
【００８９】
検索モードとして、まずデータに対する暗号化／復号化の暗号鍵を単一（ＰＫＩの場合は公開鍵と秘密鍵の一組）とする場合でかつ完全一致検索を行う場合は、前記ハッシュ値を用いた検索処理は必要でなく、検索キーを対象データの暗号鍵と同一鍵で暗号化してこれにより検索を行うことができる。ここで完全一致検索とは、検索キーの単位が、入力データの暗号化の単位、つまり本実施の形態の場合では入力フォームにおけるフィールド単位、と対応する場合である。またデータに対する暗号鍵を複数（複数組）とする場合でかつ完全一致検索を行う場合は、前記ハッシュ値を用いた検索処理を行う。データに対する暗号鍵を複数とする場合とは、例えば同一データに対して異なる鍵で暗号化を施すことでセキュリティ強度を高める場合である。例えば、電子カルテシステムにおいてあるグループ例えば外科の患者の名前を暗号化する鍵と、別グループ例えば内科の患者の名前を暗号化する鍵とで異なるものとする場合などである。また暗号鍵の数に係わらず部分一致検索を行う場合は、入力データを検索最小単位に分割したデータに対するハッシュ値セットを生成してこれを用いた検索処理を行う。ここで部分一致検索とは、検索キーの単位が、入力データの暗号化の単位よりも細かい単位となる場合である。
【００９０】
図９は、本実施の形態における情報セキュリティシステムで、ハッシュ値を用いた暗号化データ検索処理におけるデータの状態を示す説明図である。ＨＴＭＬの入力フォーム中のあるフィールドとして例えば住所入力欄があるものとする。このフィールドにユーザにより入力されるデータを例えばＡ＝“東京都新宿区新宿三丁目”とする。ＨＴＴＰプロクシ１２及び暗号管理サーバ４における暗号化処理の際は、このフィールド内のデータＡを暗号化の単位として所定の暗号鍵により暗号化を施し、その暗号化データをＥ（Ａ）とする。また一方向ハッシュ関数をＨとし、データＡのハッシュ値をＨ（Ａ）と表わす。暗号管理サーバ４では、データベースへの新規入力データＡについて、暗号化データＥ（Ａ）を生成すると共に、暗号化データ検索に備えるために、データＡのハッシュ値Ｈ（Ａ）も生成してデータＡとその暗号化データＥ（Ａ）に関連付ける。ＤＢＭＳ３２のデータベースでは、暗号化データＥ（Ａ）を格納すると共に、ハッシュ値Ｈ（Ａ）も関連付けて参照可能な状態としておく。暗号化データ検索の際は、検索キー、例えばＡ、をハッシュ化し、この検索キーハッシュ値Ｈ（Ａ）により、データベースにおける暗号化データに対応するハッシュ値の領域を検索させる。これにより、値がＨ（Ａ）と一致するような領域がヒットするので、その領域に対応する暗号化データの領域を候補群として抽出する。
【００９１】
暗号管理サーバ４では、フィールドに入力されたデータＡに対する部分一致検索を可能とするために、入力データＡを所定単位に分割し、分割されたデータそれぞれをハッシュ化する処理を行う。データＡをｎ個に区切ったデータを｛Ａ１，Ａ２，…，Ａｎ｝とする。それぞれをハッシュ化してハッシュ値のセットＳ＝｛Ｈ（Ａ１），Ｈ（Ａ２），…，Ｈ（Ａｎ）｝を生成し、データＡ及び暗号化データＥ（Ａ）に関連付けして、データベース側でこのハッシュ値セットＳを対象として検索可能な状態としておく。入力データ分割の例として、前記データＡを、Ａ１＝“東京都”，Ａ２＝“新宿区”，Ａ３＝“新宿”，Ａ４＝“三丁目”のように分割する。これが最小検索単位となる。
【００９２】
データ検索時において、検索キーを仮にＡ２＝“新宿区”とすれば、そのハッシュ値Ｈ（Ａ２）を用いてデータベース側における前記ハッシュ値セットＳを含んだ領域を対象とした検索を行うことで、値がハッシュ値Ｈ（Ａ２）と一致する領域に対応する暗号化データの領域例えばＸを候補群として抽出する。ハッシュ値を用いているので、候補群中には検索キーＡ２に対応しない暗号化データも含まれている可能性がある。候補群としてデータベースから抽出した暗号化データをＨＴＴＰプロクシ１２及び暗号管理サーバ４側において復号化し、復号化されたデータが検索キーＡ２を含むか確認する。検索キーＡ２を含んだデータ領域のみを検索結果とする。例えば、データベースから暗号化データＸ，Ｙ，Ｚが候補群として得られ、これらを復号化するとデータＡ，Ｂ，Ｃが得られたとする。データＡ，Ｂは検索キーＡ２を含むデータであったのでこれを検索結果とし、データＣは検索キーＡ２を含まない関係無いデータであったので捨てる。
【００９３】
以下、前記部分一致検索を行う場合において前記ハッシュ値を用いた検索処理を行う場合の処理の流れについて示す。図８で、まず、クライアント１のＷｅｂブラウザ１１からＡＳＰサーバ２に対しデータ検索を行うためにＨＴＴＰのＧＥＴメソッドでのアクセスがなされる。ＡＳＰサーバ２は、データ検索のための入力フォームを含むＨＴＭＬデータ及び関連データを返す（Ｓ５０１〜Ｓ５０３）。ＨＴＴＰプロクシ１２は、そのＨＴＭＬヘッダを解析して検索処理であることを認識し、入力フォームをＷｅｂブラウザ１１に送信する（Ｓ５０４，Ｓ５０５）。
【００９４】
ＨＴＴＰプロクシ１２から入力フォームがＷｅｂブラウザ１１に送信されると、Ｗｅｂブラウザ１１での入力フォームの表示を通じてユーザがデータベースから検索したいデータのための検索条件となる検索キーの入力を行って送信提出ボタンが押され入力データである検索キーがＡＳＰサーバ２側に送信される。ＨＴＴＰプロクシ１２は、Ｗｅｂブラウザ１１からＡＳＰサーバ２側に送信される入力データに介入し、この検索キーのデータを取得する（Ｓ５０６，Ｓ５０７）。
【００９５】
ＨＴＴＰプロクシ１２は、まず前記（１）のシーケンスで入手済みの接続チケットを含んだ認証情報を暗号管理サーバ４に送信し、暗号管理サーバ４は、認証情報をポリシー管理サーバ５に送信する。ポリシー管理サーバ５は、受信した認証情報をもとに接続チケットの検証を行い（Ｓ５０８〜Ｓ５１０）、認証結果を暗号管理サーバ４に返し、暗号管理サーバ４は認証結果をＨＴＴＰプロクシ１２に返す（Ｓ５１１，Ｓ５１２）。
【００９６】
ＨＴＴＰプロクシ１２は、認証通過後、前記検索キーデータを含んだデータ検索依頼を暗号管理サーバ４に送信する（Ｓ５１３）。暗号管理サーバ４は、ＨＴＴＰプロクシ１２からデータ検索依頼を受けると、サーバ側で検索条件として使用するための検索情報の生成を行う（Ｓ５１４）。検索情報生成として、処理モードに応じて前記検索キーデータについての暗号化やハッシュ化を行い、また検索セッション生成などを行う。処理結果などは暗号管理情報として保管する。ここで検索キーデータのハッシュ値を生成してこの検索キーハッシュ値をサーバ側における検索キーと設定する。暗号管理サーバ４は、生成した検索キーハッシュ値を含んだ検索情報をＨＴＴＰプロクシ１２に送信する（Ｓ５１５）。
【００９７】
ＨＴＴＰプロクシ１２は、暗号管理サーバ４から前記検索キーハッシュ値を含んだ検索情報を受信すると、データ検索のためのＨＴＭＬのＰＯＳＴデータを生成し、ＨＴＴＰのＰＯＳＴメソッドでＡＳＰサーバ２に送信する（Ｓ５１６，Ｓ５１７）。ＡＳＰサーバ２は、ＨＴＴＰプロクシ１２から検索キーハッシュ値を含んだ検索情報のＰＯＳＴデータを受信すると、データベースからのデータ検索のための、検索データ（前記検索キーハッシュ値）、セッション情報、接続チケット、を含んだＳＱＬ形式の検索情報をＳＱＬプロクシドライバ２２からＳＱＬプロクシ３１に送信する（Ｓ５１８）。
【００９８】
ＳＱＬプロクシ３１は、ＡＳＰサーバ２側からＳＱＬ形式の検索情報を受けると、ポリシー管理サーバ５に接続チケットを含んだ認証情報を送信して認証を行わせる。ポリシー管理サーバ５は、接続チケットの検証及びアクセス権限の確認を行ってユーザがデータベースからのデータ検索の資格があることを確認し（Ｓ５１９，Ｓ５２０）、ユーザのアクセス権限に対応したデータベースアクセス領域絞り込み条件となるＷＨＥＲＥ句の情報を含めた認証結果を返す（Ｓ５２１）。なお、前記のステップＳ５０５における検索情報生成の処理を、このＳＱＬプロクシ３１がＡＳＰサーバ２側からＳＱＬ形式の検索情報を受けてから行う処理形態とすることも可能である。この場合、この時点でＳＱＬプロクシ３１が暗号管理サーバ４に対して依頼を行って検索キーの暗号化あるいはハッシュ化を行わせて検索情報を取得する。
【００９９】
ＳＱＬプロクシ３１は、ポリシー管理サーバ５での認証後、ＤＢＭＳ３２に対し、適切なデータベース問い合わせ条件を設定して、データ検索のＳＱＬ命令である「ＳＥＬＥＣＴ」に前記絞り込み条件となるＷＨＥＲＥ句の情報を付加した形で送信する（Ｓ５２２）。ＤＢＭＳ３２では、データベースから暗号化データに対応するハッシュ値セットを対象として含めながら前記検索キーハッシュ値により検索を行い、これと値が一致した領域に対応する暗号化データの領域を候補群として抽出する処理を行って結果を返す（Ｓ５２３）。この抽出結果の候補群には、ハッシュ化前の元の検索キーに対応しない暗号化データの領域も含まれている可能性がある。図９に示すように例として、検索キーを前記データＡ２＝“新宿区”とすると、検索キーハッシュ値Ｈ（Ａ２）により、データベース中の暗号化データＥ（Ａ）に対応する前記ハッシュ値セットＳの領域を対象として含めた形で検索することで、値がハッシュ値Ｈ（Ａ２）に一致する領域に対応する暗号化データの領域がヒットする。
【０１００】
ＳＱＬプロクシ３１は、データベースからの抽出結果である、前記検索キーハッシュ値（例えばＨ（Ａ２））に値が一致した領域に対応する暗号化データの領域群（例えばＸ，Ｙ，Ｚ）について、元の検索キー（Ａ２）に対応するものを抽出するために、暗号管理サーバ４の検索支援機能に対して検索処理依頼を行って検索セッションを実行する（Ｓ５２４）。ＳＱＬプロクシ３１は、前記抽出結果の暗号化データ（Ｘ，Ｙ，Ｚ）を暗号管理サーバ４に渡す。
【０１０１】
暗号管理サーバ４の検索支援機能は、ＳＱＬプロクシ３１から検索処理依頼を受けて、前記データベースからの抽出結果の暗号化データのすべてに対して、あるいは一つずつ順次に、暗号管理情報における鍵情報４２を参照して適切な復号化鍵により復号化を行い、復号化したデータについて元の検索キー（Ａ２）で検索し、それを含んだデータに対応する暗号化データを検索結果として選んでＳＱＬプロクシ３１に返す（Ｓ５２５，Ｓ５２６）。ここではあくまで元の検索キーに対応した暗号化データを検索結果として返し、復号化したデータは渡さない。ＳＱＬプロクシ３１は、暗号管理サーバ４から検索結果の暗号化データを受けると、必要であればＤＢＭＳ３２のデータベースから検索結果の暗号化データに対応する他フィールドのデータも取り出して補完する。例えばレコード単位などの所定データ単位で検索結果の暗号化データを構成する。そしてＡＳＰサーバ２に検索結果として送信する（Ｓ５２７）。なおＳＱＬプロクシ３１から暗号管理サーバ４に対し前記他フィールドデータも含めて渡して検索セッションを実行するなど、検索処理の形態は各種可能である。
【０１０２】
ＡＳＰサーバ２は、ＳＱＬプロクシ３１から暗号化データを含んだ検索結果を受信し、検索結果のＨＴＭＬデータとしてクライアント１のＷｅｂブラウザ１１に返す。ＨＴＴＰプロクシ１２は、ＡＳＰサーバ２からＷｅｂブラウザ１１に送信される検索結果のＨＴＭＬデータに介入して受信し、そのＨＴＭＬヘッダを解析してデータ復号化の必要性を判断する。そして検索結果の暗号化データについて復号化が必要と判断するとデータ復号化依頼及び復号化対象の暗号化データを暗号管理サーバ４に対して送信する（Ｓ５２８〜Ｓ５３０）。暗号管理サーバ４は、データ復号化依頼及び復号化対象の暗号化データを受信すると、暗号管理情報を参照しながら対象の暗号化データに対して所定の復号化アルゴリズム及び復号化鍵を用いて復号化処理を施し、復号化されたデータをＨＴＴＰプロクシ１２に返す。復号化されたデータを返す際にはＳＳＬ通信でデータが保護される。復号化処理の関連情報や処理結果などは、暗号管理情報として暗号管理サーバ４内に保管される。
【０１０３】
ＨＴＴＰプロクシ１２は、復号化されたデータを暗号管理サーバ４から受信すると、検索結果のＨＴＭＬデータにおける暗号化データ部分を復号化されたデータに置き換えてＷｅｂブラウザ１１に送信し、Ｗｅｂブラウザ１１では判読可能な形で検索結果が出力される（Ｓ５３１〜Ｓ５３３）。処理のシーケンスは以上である。
【０１０４】
本発明の他の実施の形態について説明する。まず、前記したように、データの暗号化／復号化の際にＨＴＴＰプロクシ１２から暗号管理サーバ４へデータ暗号化／復号化依頼を行って暗号管理サーバ４で暗号化／復号化処理を行う形態に限らず、データの暗号化／復号化処理について暗号管理サーバ４でなくＨＴＴＰプロクシ１２で行う形態としても良い。この場合、クライアント１内にＨＴＴＰプロクシ１２を配置し、ＨＴＴＰプロクシ１２で、対象データについて所定の暗号アルゴリズム及び鍵情報を用いて暗号化／復号化を行う。この際、暗号化／復号化に必要な鍵情報を暗号管理サーバ４が確認し、ＨＴＴＰプロクシ１２に提供する構成としても良いし、またクライアント１内でＨＴＴＰプロクシ１２と暗号管理サーバ４の両方の機能を配置及び動作させて暗号化／復号化処理を行う構成としても良い。また暗号化データ検索処理の際の前記暗号管理サーバ４による検索支援機能、つまりデータベースから抽出した結果に対する復号化及び元の検索キーでの検索処理（前記Ｓ５２５の処理）などについても、同様にＨＴＴＰプロクシ１２で処理する構成とすることが可能である。
【０１０５】
また、Ｗｅｂブラウザ１１とＨＴＴＰプロクシ１２を独立した構成とする以外にも、これを独立せずに同一アプリケーションとしてクライアント１内に構成する形態としても良い。例えばＷｅｂブラウザ上でＪａｖａ（Ｒ）アプリケーション（スクリプト）などのプログラムを動作させることでＷｅｂブラウザ１１とＨＴＴＰプロクシ１２（さらには暗号管理サーバ４）の機能を同一Ｗｅｂブラウジング・アプリケーションとして構成する。
【０１０６】
また同様に、ＳＱＬプロクシ３１とＤＢＭＳ３２を独立した構成とする以外にも、ＤＢＭＳ３２とＳＱＬプロクシ３１を同一アプリケーションとしてサーバ側に構成しても構わない。
【０１０７】
また、データベースに格納するデータについての暗号化／復号化では、すべてのデータを暗号化して格納する構成としても構わないが、一部の特定タイプのデータをフィールド情報などから判断して暗号化しデータベースに格納する形態とすることで、データを必要十分に保護しながら効率的なデータ入出力を行うことが可能である。プライバシー保護などのための機密化が必要十分に実現されるように、所定の性質のデータについてのみ対象として暗号化を行えば良い。どのようなデータに対して暗号化を施すかについては、システム適用の時点で例えばＨＴＭＬの入力フォーム中のフィールド情報に対し暗号化あるいは非暗号化の指示を記述するなどの手法を用いる。前記の実施の形態の場合は、ＨＴＭＬの入力フォーム中のフィールド情報を判断して、名前、住所、電話番号などのフィールドに入力されたデータについて暗号化を施すこととした。
【０１０８】
また前記入力データの検索最小単位への分割例としては、例えば前記データＡを、｛Ａ１＝“東”，Ａ２＝“京”，Ａ３＝“都”，…｝のように文字ごとに分割してそれぞれハッシュ化する処理形態とすることも可能である。この処理形態では、例えば検索キーを“新宿区”とした場合、データベースでハッシュ値「Ｈ（“新”），Ｈ（“宿”），Ｈ（“区”）」を含むデータ列を検索することで、ヒットした結果に“新宿区”を含むか否かを復号化しなくとも判断できる。
【０１０９】
また、前記入力データの検索最小単位への分割に関し、そのハッシュ値のサイズを何ビットとするか、また分割してできたデータ（ハッシュ値）を正順に並べてストアするかランダムに並べるかなど、各種の処理形態が可能である。このような検索のための処理形態に関しては、本情報セキュリティシステムを情報処理システムへ適用する際に、入力データの分割方法、分割サイズ、ハッシュ値サイズ、データストア順などのデータ分割及びハッシュ化のルールを決めておく。
【０１１０】
また、前記暗号化データ検索処理では、名前や住所といった整数値列を対象として検索する例を示したが、実数値や整数値についても検索を行えることが望ましい。完全一致検索の場合は前記整数値列の場合と同様のハッシュ化方法により実現できるが、値の大小を比較する比較検索のためには別途工夫が必要となる。実数値や整数値についての比較検索を行うためにハッシュ値の生成に関して工夫した処理形態を以下に示す。ハッシュ化に関して、対象とする表現区間をＣと考えるとその正常値がほとんど入る制限区間を規定するＹが考えられる。これを下記式（１）で表わす。異常値については、式（１）のＸより小さければＸとし、式（１）のＹより大きければＹとする。これに何らかの評価式を適用して整数空間にマッピングする。例えば、元のデータの分散が一様であればリニアにマッピングするだけで良く、下記式（２），（３）のようになる。そしてそのＢをハッシュ値とする。この際、Ｚは小さければ小さいほど情報を隠蔽できるが検索速度が下がり、逆に大きければ大きいほど情報は漏れやすくなるが検索速度を上げることができる。これについてはアプリケーションの特性に応じて適当な値を設定する。このようにして求めたハッシュ値は元データを類推し難くかつ上下関係を逆転させない特性を有しているため、比較検索が可能となる。
【０１１１】
Ｘ＜Ｃ＜Ｙ                                        ・・・（１）
Ｂ＝（Ｃ−Ｘ）×Ｚ／（Ｙ−Ｘ）      （ＢとＺは整数）・・・（２）
０＜Ｂ＜Ｚ                                        ・・・（３）
また、データベースに格納する暗号化データに対し処理識別用の管理ＩＤを付与した形で格納する形態とすれば、暗号化データの復号化の際などに、その管理ＩＤを参照することですぐに復号化鍵を判断して復号化することができる。具体的にはＨＴＴＰプロクシ１２及び暗号管理サーバ４で、入力データに対し暗号化を行う際に、暗号化処理と共に、暗号化データのヘッダ情報として管理ＩＤや処理識別タグなどを生成して付与する処理を行うなどする。このような暗号化データに管理ＩＤを付与する処理形態以外でも、復号化の際に暗号管理情報を参照してデータＩＤやユーザＩＤなどの諸情報から復号化鍵を判断することが可能である。また、データベース中の暗号化領域と非暗号化領域が判別できるように、暗号化領域と非暗号化領域の区別を示す識別情報や暗号化領域アドレス情報などをＤＢサーバ３やその他のモジュールで保持して使用することとしても良い。
【０１１２】
また本実施の形態ではデータの暗号化／復号化の際の鍵については暗号管理サーバ４やポリシー管理サーバ５が必要に応じて作成して管理するものとし特に限定しなかったが、認証トークン６内に保持されているユーザの秘密鍵などの情報を、対象データの暗号化／復号化処理に使用する構成としても良い。
【０１１３】
また、ポリシー管理サーバ５に関して、これを設けない形態、あるいは暗号管理サーバと一体とする形態も可能である。その該当例は、ユーザ単位や所定データ単位のデータベースアクセス権限の設定を行わない場合である。例えばすべてのユーザがデータベースの同一領域にしかアクセスできないポリシー設定とする場合などである。この場合、ＳＱＬプロクシ３１におけるアクセス領域絞り込み条件の付加の処理が不要である。
【０１１４】
また、ＤＢサーバ３で扱うデータベースの方式はリレーショナル・データベースに限らず、所定のデータ単位に対して暗号化した状態で格納が可能であれば良いので、オブジェクト指向型データベースなどその他の方式を用いることもできる。
【０１１５】
また、ユーザＩＤを有する特定ユーザではなく、一般の不特定多数のユーザが本情報処理システムにアクセスを行う場合の構成及び処理については例えば以下（１），（２）のようになる。（１）：クライアント１において、Ｊａｖａ（Ｒ）アプレットやＡｃｔｉｖｅＸなどのプログラムを用いて前記ＨＴＴＰプロクシ１２に相当するような暗号処理アプリケーションをＷｅｂブラウザ１１上で動作させる。そして、一般ユーザのアクセスの際は、その暗号処理アプリケーション及び暗号管理サーバ４でデータを暗号化し、暗号化データはＡＳＰサーバ２に送信する。（２）：一般不特定多数ユーザ向けの共用のＨＴＴＰプロクシサーバをネットワーク上に配置する。データの暗号化／復号化のための鍵を持たないユーザのアクセスはそのプロクシサーバで担当し、そこでの処理を経由してデータの暗号化／復号化を行う。
【０１１６】
本実施の形態の情報セキュリティシステムの利用例を述べる。一例として病院内の電子カルテシステムが考えられる。電子カルテには、患者のプライバシーに係る情報が記載されるのでその機密性の保護が重要となると同時に、医療業務のためにデータ検索機能も必要である。ユーザとなる看護士や医師がポリシー管理サーバ５におけるポリシーの設定に従って所定のデータベースアクセス権限を与えられる。例えば外科、内科などを単位としてアクセス権限が設定される。また認証トークン６及びクライアント１となるコンピュータを使用してデータベースに保存される電子カルテデータへのアクセスを行う。ＡＳＰサーバ２は電子カルテ操作のアプリケーションを提供する。ユーザがクライアント１のＷｅｂブラウザ１１から電子カルテデータへのアクセス要求を行うと、ＨＴＴＰプロクシ１２が介入し、ポリシー管理サーバ５でユーザ認証が行われ、データ暗号化／復号化の必要性が判断されて必要な場合は暗号管理サーバ４でデータ暗号化／復号化処理が行われる。電子カルテにデータを入力する際は、クライアント１における入力データがＨＴＴＰプロクシ１２及び暗号管理サーバ４で暗号化処理されてからサーバ側に渡されデータベースに暗号化データが格納される。データベースに格納されている電子カルテデータからデータ例えば担当患者データを出力する際は、サーバ側で該当データは暗号化されており暗号化データを取得してＨＴＴＰプロクシ１２及び暗号管理サーバ４によって復号化処理してからＷｅｂブラウザ１１で出力される。電子カルテデータについての検索を行う際も同様に、クライアント１で適当な検索キーを入力すると、ＨＴＴＰプロクシ１２及び暗号管理サーバ４で検索キーが暗号化されこの暗号化された検索キーでデータベースの検索が行われる。前記ハッシュ値を用いる検索によりフィールド中の部分一致検索も可能であり検索結果についてはＨＴＴＰプロクシ１２及び暗号管理サーバ４で復号化処理されてからＷｅｂブラウザ１１に渡され判読可能な状態で出力される。
【０１１７】
以上の本発明の実施の形態における情報セキュリティシステムにより、クライアント１のＷｅｂブラウザ１１からサーバ側（ＡＳＰサーバ２）へのデータの出入り口で暗号機能により暗号化／復号化を行うことで、サーバ側においては暗号化データしか流れないように情報の機密化が実現されている。これにより特に内部者によるデータの盗み見や入手などの不正を効果的に防止できる。またクライアント１からサーバ側（ＡＳＰサーバ２）への入口と、データベース（ＤＢＭＳ３２）への入口において、アクセス制限機能によりユーザ認証、及びアクセス権限を含むポリシーの確認に基づくデータベースアクセス制限を行うことでセキュア化を実現している。データの暗号化／復号化はＨＴＴＰプロクシ１２を処理起点としてＷｅｂブラウザ１１の背後で透過的に行われるので、ユーザはデータの暗号化／復号化について意識する必要なくＷｅｂアプリケーションを利用して判読可能な形式でデータを扱うことができる。またユーザ認証にＰＫＩに基づく認証方式などを採用してユーザＩＤベースの認証により安全に運用可能である。
【０１１８】
また、データベースに格納される暗号化データに対しての検索機能も提供しており、ユーザはクライアント１側で通常の判読可能な形式で検索条件を入力すれば、ＨＴＴＰプロクシ１２及び暗号管理サーバ４での検索支援機能を通じて、データベースから抽出され復号化された検索結果を得ることができる。またハッシュ値を用いた検索処理を行うことにより特にフィールドにおける部分一致検索を可能とし、暗号化データの検索速度を向上することができる。
【０１１９】
また、Ｗｅｂベースの情報処理システムにおいてデータベースのアクセス権限は、ＰＫＩなどによるユーザ認証と、所定データ単位での権限設定とを組み合わせて設定可能であるため、ユーザ単位、部課単位、カラム単位、レコード単位、セル単位など、細やかなセキュリティポリシーを構築可能である。
【０１２０】
また、ＡＳＰサーバ２とＤＢＭＳ３２との間にＳＱＬプロクシ３１を配置してポリシー管理サーバ５との間でユーザ認証やアクセス権限の確認を行うことで、クライアント１内にＨＴＴＰプロクシ１１のみ配置した場合に比べてより高いセキュリティレベルを構築できる。仮に不正者によりＡＳＰサーバ２を通過されたとしてもＳＱＬプロクシ３１を処理起点としてデータベースアクセスに係わる認証の通過が必要なので、よりセキュアなシステムとなっている。
【０１２１】
また、ＨＴＴＰプロクシ１２、ＳＱＬプロクシ３１、暗号管理サーバ４、ポリシー管理サーバ５などの各処理の機能をモジュール単位で提供可能であるため、適用対象の情報処理システムに合わせて必要最小限から最大までのセキュリティを確保することができる。
【０１２２】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【産業上の利用可能性】
【０１２３】
本発明は、顧客データ、社員データなど保護すべき情報を扱う情報処理システム全般に対して利用可能である。
【図面の簡単な説明】
【０１２４】
【図１】本発明の一実施の形態における情報セキュリティシステムの全体構成を示す図である。
【図２】本発明の一実施の形態における情報セキュリティシステムで、情報処理システム上におけるデータの暗号化／復号化の状態を示す説明図である。
【図３】本発明の一実施の形態における情報セキュリティシステムの管理する情報について示す図であり、（ａ）は暗号管理サーバが管理する暗号管理情報を、（ｂ）はポリシー管理サーバが管理するポリシー管理情報を示す。
【図４】本発明の一実施の形態における情報セキュリティシステムの処理動作として、ユーザ認証と接続チケット入手の処理の流れを示すシーケンス図である。
【図５】本発明の一実施の形態における情報セキュリティシステムの処理動作として、データベース接続の処理の流れを示すシーケンス図である。
【図６】本発明の一実施の形態における情報セキュリティシステムの処理動作として、データ入力時のデータ暗号化処理の流れを示すシーケンス図である。
【図７】本発明の一実施の形態における情報セキュリティシステムの処理動作として、データ出力時のデータ復号化処理の流れを示すシーケンス図である。
【図８】本発明の一実施の形態における情報セキュリティシステムの処理動作として、データ検索時におけるハッシュ値を用いた暗号化データ検索処理の流れを示すシーケンス図である。
【図９】本発明の一実施の形態における情報セキュリティシステムで、ハッシュ値を用いた暗号化データ検索処理におけるデータの状態を示す説明図である。
【符号の説明】
【０１２５】
１…クライアント、２…ＡＳＰサーバ、３…ＤＢサーバ、４…暗号管理サーバ、５…ポリシー管理サーバ、６…認証トークン、７…ユーザ証明書、８…ＡＳＰ証明書、９…ＤＢ証明書、１０…認証局、１１…Ｗｅｂブラウザ、１２…ＨＴＴＰプロクシ、２１…ＡＳＰ部、２２…ＳＱＬプロクシドライバ、３１…ＳＱＬプロクシ、３２…ＤＢＭＳ、３１１…ＩＰパケットプロクシ、ｄ１，ｄ２…データ、ｄ３，ｄ４，ｄ５…暗号化データ、４１，５２…データＩＤ、４２…鍵情報、４３…ハッシュ情報、４４…処理属性、５１…ユーザＩＤ。
【図１】
2005242740.tif 000003
【図２】
2005242740.tif 000004
【図３】
2005242740.tif 000005
【図４】
2005242740.tif 000006
【図５】
2005242740.tif 000007
【図６】
2005242740.tif 000008
【図７】
2005242740.tif 000009
【図８】
2005242740.tif 000010
【図９】
2005242740.tif 000011