(57)【要約】【課題】トークンベースの暗号化および復号プロセスにおいてアプリケーションサーバとトークンサーバ間の通信オーバーヘッド軽減すことができ、トークンサーバに障害が発生した場合でも、 暗号化/復号処理を継続することができるトークンベースの暗号化と復号方法を提供すること。【解決手段】予め必要とする範囲の数値列の原文暗号文と、それぞれの数値列に対応するトークン暗号文を相互に関連させて保存するトークンイメージファイルをアプリケーションサーバに作成することにより、アプリケーションサーバ側での処理が可能となり、通信オーバーヘッド軽減とトークンサーバ障害時の処理継続が可能となる。【選択図】図１
2015187661.tif 000002
【特許請求の範囲】
【請求項１】
N桁から（N＋M）桁のすべての数字列を暗号化した原文暗号文及び前記N桁から（N＋M）桁のすべての数字列のそれぞれに対応するトークンを暗号化し、前記原文暗号文と前記トークン暗号文を相互に関連させて保存するトークンイメージファイルを作成する工程（NおよびMは正の整数）。
原文の数字列をN桁から（N＋M）桁の数字列に分割して、分割原文を生成し、前記分割原文のそれぞれを暗号化して分割原文暗号文を生成する工程。
前記のトークンイメージファイルから前記分割原文暗号文のそれぞれに対応する分割トークン暗号文を読み出す工程。
それぞれの前記分割トークン暗号文を復号して分割トークン生成し、それぞれの前記分割トークンを組み合わせて、前記原文の数字列に対応するセキュリティトークンを生成する工程。
前記の一連の工程を特徴とするトークンベースの暗号化の方法。
【請求項２】
請求項１において、前記トークンイメージファイル作成は、K（KはN以上（N＋M）以下の整数）桁のすべての数字列のそれぞれに対応するK-ブロックトークンを生成する工程。
前記K桁のすべての数字列のそれぞれを暗号化してK-ブロック原文暗号文を作成する工程。
前記K-ブロックトークンのそれぞれを暗号化してK-ブロックトークン暗号文を作成する工程。
互いに対応する前記K-ブロック原文暗号文及び前記K-ブロックトークン暗号文の組を、前記K-ブロックトークン暗号文を基準に昇順で並べ替えて、K-ブロックの組を生成する工程。
前記K-ブロックの組の順序を示す一連番号を前記のK-ブロックの組に含まれる前記K-ブロック原文暗号文を基準に昇順で並べ替えて、K-ブロック暗号のインデックスを作成する工程。
及び、前記K-ブロックの組及び前記K-ブロック暗号のインデックスを前記トークンイメージファイルとして保存する工程を含むことを特徴とするトークンベースの暗号化の方法。
【請求項３】
請求２項において、前記K-ブロック原文暗号文及び前記K-ブロックトークン暗号文のそれぞれは、テキストのフォーマットを有することを特徴とするトークンベースの暗号化の方法。
【請求項４】
請求２項において、前記K-ブロック原文暗号文の生成は、前記K桁のすべての数字列のそれぞれに暗号化アルゴリズムを適用して、K-ブロックの一時原文暗号文を生成する工程。 及び、前記K-ブロックの一時原文暗号文のそれぞれにBASE６４アルゴリズムを適用する工程。
前記K-ブロックトークン暗号文の生成は、前記K-ブロックトークンのそれぞれについて、前記暗号化アルゴリズムを適用してK-ブロックの一時トークン暗号文を作成する工程。及び、前記K-ブロックの一時トークン暗号文のそれぞれにBASE６４アルゴリズムを適用する工程を特徴とするトークンベースの暗号化の方法。
【請求項５】
請求２項において、前記原文の数字列をN桁から（N＋M）桁の数字列に分割して前記分割原文を作成する工程は、前記原文の数値列を N桁から（N＋M）桁の中で最大桁の数字列で順次分割して前記分割原文を生成する工程を含むことを特徴とするトークンベースの暗号化の方法。
【請求項６】
請求２項において、前記トークンイメージファイルから前記分割原文暗号文のそれぞれに対応する前記分割トークン暗号文を読み出すために、前記分割原文暗号文のそれぞれについて、前記分割原文暗号文に対応する前記分割原文の桁数を判断する工程。
前記分割原文がK桁の数字列である場合、前記トークンイメージファイルに含まれる前記K-ブロック暗号のインデックスに基づいて前記K-ブロックの組の中から前記分割原文暗号文と一致する前記K-ブロック原文暗号文と一致するK-ブロック組を判断する工程。
及び、一致する前記K-ブロック組に含まれる前記K-ブロックトークン暗号文を前記分割トークン暗号文として読み出す工程を含むことを特徴とするトークンベースの暗号化の方法。
【請求項７】
請求６項において、一致する前記K-ブロック組の判断は、前記K-ブロック暗号のインデックス及び前記K-ブロック組にバイナリ検索（binary search）アルゴリズムを適用して前記K-ブロック組の中から前記分割原文暗号文と一致する前記K-ブロック原文暗号文を含む一致する前記K-ブロック組を決定する工程を特徴とするトークンベースの暗号化の方法。
【請求項８】
請求１項において、前記分割トークンを組み合わせて、前記原文の数字列に対応する前記セキュリティトークンを生成する工程は、前記分割原文のそれぞれに対応する前記分割トークンを前記原文の数字列に含まれる前記分割原文の順序で組み合わせて、前記のセキュリティトークンを生成する工程を特徴とするトークンベースの暗号化の方法。
【請求項９】
請求２項において、前記トークンイメージファイル作成は、前記原文の数字列の種類のそれぞれについて前記K-ブロック組及び前記K-ブロックインデックスをそれぞれ生成する工程。
及び、前記原文の数字列の種類のそれぞれに対して生成された前記K-ブロック組及び前記K-ブロックインデックスを前記トークンのイメージファイルとして保存する工程を含み、 K桁の同じ数字列に対して前記原文の数字列の種類のそれぞれに対応して生成される前記K-ブロックトークンは、互いに異なることを特徴とするトークンベースの暗号化の方法。
【請求項１０】
請求９項において、前記分割トークン暗号文は、前記トークンイメージファイルに保存された前記原文の数字列の種類に対応する前記K-ブロック組から読み出されることを特徴とするトークンベースの暗号化の方法。
【請求項１１】
N桁から（N＋M）桁のすべての数字列を暗号化した原文暗号文及び前記N桁から（N＋M）桁のすべての数字列のそれぞれに対応するトークンを暗号化したトークン暗号文を相互に関連させて保存するトークンイメージファイルを作成する工程（NおよびMは正の整数）。
セキュリティトークンをN桁から（N＋M）桁の数字列に分割して、分割トークンを生成する工程。
前記分割トークンのそれぞれを暗号化して分割トークン暗号文を生成する工程。
前記トークンイメージファイルから前記分割トークン暗号文のそれぞれに対応する分割原文暗号文を読み出す工程。
前記分割原文暗号文を復号して分割原文を生成する工程。
及び、前記分割原文を組み合わせて前記セキュリティトークンに相当する原文の数字列を生成する工程を特徴とするトークンベースの復号方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースのデータ項目に対しトークナイゼーションをベースとした暗号化及び復号による通信オーバーヘッド軽減と可用性向上に関するものである。
（以下、「トークナイゼーションをベース」とした処理を「トークンベース」という。）
【背景技術】
【０００２】
データベース管理システムでは、テーブル内のフィールドデータの属性と長さを変更せずに、原文データを暗号化する技術として、トークナイゼーション技術が知られている。原文データと一対一でマッピングされるトークンデータを生成するためには、別のトークンサーバに原文データを送信し、トークンサーバから原文データに相当するトークンを受信するのが一般的である。
【０００３】
このようなトークン生成プロセスでは、アプリケーションサーバとトークンサーバ間でデータ通信が行われるため、大量のトークンを生成する場合は、アプリケーションサーバとトークンサーバ間の通信オーバーヘッドによりアプリケーションの動作速度が遅くなる問題が発生する。また、トークンサーバに障害が発生した場合は、アプリケーションサーバでの処理が継続できない問題が生じる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする問題点は、トークンベースの暗号化および復号プロセスに於いてアプリケーションサーバとトークンサーバ間の通信オーバーヘッドを軽減すことができ、トークンサーバに障害が発生した場合でも、 アプリケーションサーバだけで暗号化/復号処理を継続することができるトークンベースの暗号化と復号方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
予め必要とする範囲の数値列を暗号化した原文暗号文と、それぞれの数値列に対応したトークンを暗号化したトークン暗号文を相互関連させたトークンイメージファイルをアプリケーションサーバに用意することにより、通信オーバーヘッド軽減とトークンサーバ障害での暗号化/復号処理の継続を実現した。
【発明の効果】
【０００６】
本発明の実施例によるトークンベースの暗号化及び復号方法により、暗号化プロセスおよび復号プロセスでは、トークンサーバとのデータ通信を行う必要がないため、通信オーバーヘッドが軽減され暗号化/復号速度を向上させることができ、トークンサーバに障害が発生した場合でも、暗号化/復号処理を継続的に行うことができる。
【図面の簡単な説明】
【０００７】
【図１】トークンベース暗号化の全体概要を示すフローである。
【図２】暗号化/復号のシステム例を示すブロック図である。
【図３】図１のトークンイメージファイルの生成手順を示すフローである。
【図４】図３のトークンイメージファイルの生成ロジックの詳細図である。
【図５】トークンイメージファイルの概念図である。
【図６】実処理で暗号化を行う例を図にしたサンプルフローである。
【図７】複数のトークンイメージを保持する場合のイメージファイル概念図である。
【図８】本発明のトークンベースの復号方法を示すフローである。
【図９】トークンベース復号の全体概要を示すフローである。
【発明を実施するための形態】
【０００８】
トークンサーバとのトラフィック増大による通信オーバーヘッド軽減、及びトークンサーバ障害時の処理継続を目的として、トークンベースの暗号化/復号を実現した。
【実施例１】
【０００９】
図1は、本発明のトークンベース暗号化の方法を示すフローである。
本発明によるトークンベースの暗号化方法では、N桁から（N＋M）桁のすべての数値列を暗号化した原文暗号文及び（N＋M）桁のすべての数字列の各々に対応するトークンを暗号化したトークン暗号文を相互に関連させて保存するトークンイメージファイルを作成する（工程S100）。 ここで、NとMは正の整数を示す。
【００１０】
例えば、Nは３、Mが３である場合には、０００から９９９の３桁のすべての数字列、００００から９９９９の４桁のすべての数字列、０００００から９９９９９の５桁のすべての数字列及び００００００から９９９９９９の６桁のすべての数字列の各々に対応するトークンを生成する。
【００１１】
前記３桁のすべての数字列、前記の４桁のすべての数字列、前記５桁のすべての数字列、前記６桁のすべての数字列を暗号化した原文暗号文を生成し、前記３桁のすべての数字列、前記４桁のすべての数字列、前記５桁のすべての数字列、前記６桁のすべての数字列の各々に対応する前記トークンを暗号化する。
【００１２】
前記原文暗号文と前記トークン暗号文を相互に関連させてトークンイメージファイルとして保存することができる。
【００１３】
この例において、前記N桁から（N＋M）桁のすべての数値列の各々に対応する前記トークンは、トークンサーバを使用して作成することができる。
【００１４】
原文暗号文及びトークン暗号文は、さまざまな暗号化アルゴリズムを使用して作成することができる。
【００１５】
これにより、暗号化を実行しようとする原文の数字列をN桁から（N＋M） 数字列に分割して、分割原文を生成する（工程S200）。
例えば、前記の原文の数字列が、１０桁の数字列である場合には、前記原文の 数字列を６桁の数字列と４桁の数字列に分割し、２つの分割原文を生成することができる。
【００１６】
前記の分割原文の各々を暗号化して分割原文暗号文を生成し（工程S300）、
トークンイメージファイルから分割原文暗号文の各々に対応する分割トークン暗号文を読み出して（工程S400）、分割トークン暗号文を復号して（工程S500）、分割トークンを組み合わせて原文数字列に対応するセキュリティトークンを生成する（工程S600）。
【００１７】
このように、トークンサーバを使用して事前にトークンイメージファイルを生成することにより、原文の数字列の暗号化の過程でトークンサーバとのデータ通信を行う必要がないため、暗号化速度を向上させることができ、トークンサーバに障害が発生した場合でも、暗号化動作を継続的に行うことが可能となる。
【実施例２】
【００１８】
図２は、本発明の１つの実施形態に係る暗号化/復号システムを示すブロック図である。 図1のトークンベース暗号化の方法は、図２に示された暗号化/復号システム（10）を通して行うことができる。
【００１９】
以下、図１および図２について、暗号化/復号システム（10）が実行される図１のトークンベースの暗号化の方法について詳細に説明する。
【００２０】
図２では、暗号/復号化システム（10）は、アプリケーションサーバ（100）、およびトークンサーバ（200）を含んでいる。
アプリケーションサーバ（100）は、起動時にトークンサーバ（200）を使用してN桁から（N＋M）桁のすべての数字列を暗号化した原文暗号文と、N桁目から（N＋M）桁のすべて数字列の各々に対応する前記トークンを暗号化したトークン暗号文を相互に関連させて保存するトークンイメージファイル（TIF）（110）を生成することができる（工程S100）。
【００２１】
図３は図１のトークンイメージファイルを生成する工程の例を示すフローであり、図４は図３のトークンイメージファイルを生成する工程の例を説明するための図である。
【００２２】
図２から図４は、アプリケーションサーバ（100）がトークンサーバ（200）を使用してK桁のすべての数字列の（K-NS）のそれぞれに対応するK-ブロックトークン（K-TK）を生成することができる（工程S110）。ここで、KはN以上（N＋M）以下の整数を示す。
【００２３】
構成例において、図２に示すように、アプリケーションサーバ（100）は、K桁のすべての数字列（K-NS）をトークンサーバ（200）に提供し、トークンサーバ（200）は、アプリケーションサーバー（100）から受信するK桁のすべての数字列（K-NS）のそれぞれと一対一にマッピングされるK-ブロックトークン（K-TK）を生成し、アプリケーションサーバ（100）に提供することができる。
【００２４】
例えば、Nは３であり、Mが３である場合、アプリケーションサーバ（100）は、トークンサーバ（200）を使用して３桁のすべての数字列の各々と一対一にマッピングされる３ - ブロックトークンを生成し、 トークンサーバ（200）を使用して４桁のすべての数字列の各々と一対一にマッピングされる４- ブロックトークンを生成し、トークンサーバ（200）を使用して５桁のすべての数字列の各々と一対一にマッピングされる５ - ブロックトークンを生成し、トークンサーバ（200）を使用して６桁のすべての数字列の各々と一対一にマッピングされる６- ブロックトークンを生成することができる。
【００２５】
図４には、例としてKが３である場合には、０００から９９９を含んでいる３桁のすべての数字列（K-NS）と３桁のすべての数字列（K-NS）のそれぞれと一対一にマッピングされる３- ブロックトークン（K-TK）が示されている。
【００２６】
図４に示すように、トークンサーバ（200）から生成され、アプリケーションサーバ（100）に提供されているK-ブロックトークン（K-TK）は、K桁の数字列（K-NS）と同じ属性と同じ長さを持つことができる。 つまり、K-ブロックトークン（K-TK）のそれぞれは、K桁の文字列を含むことができる。
【００２７】
アプリケーションサーバ（100）は、K桁のすべての数字列（K-NS）をそれぞれ暗号化してK-ブロック原文暗号文（K-PED）を生成し（工程S120）、K-ブロックトークン（K-TK）それぞれを暗号化してK-ブロックトークン暗号文（K-TED）を生成することができる（工程S130）。
【００２８】
具体的には、アプリケーションサーバ（100）は、K桁のすべての数字列（K-NS）それぞれについて、暗号化アルゴリズムを適用して、K-ブロックの一時原文暗号文を生成し、それぞれについてBASE６４アルゴリズムを適用して、K-ブロック原文暗号文（K-PED）を生成することができる。
【００２９】
また、アプリケーションサーバ（100）は、K-ブロックトークン（K-TK）のそれぞれについて、暗号化アルゴリズムを適用して、K-ブロックの一時トークン暗号文を生成し、前記K-ブロックの一時トークン暗号文のそれぞれについて、BASE６４アルゴリズムを適用して、K-ブロックトークン暗号文（K-TED）を生成することができる。
【００３０】
したがって、図４に示すように、K-ブロック原文暗号文（K-PED）およびK-ブロックトークン暗号文（K-TED）のそれぞれは、文字列を含むテキストの属性を持つことができる。
【００３１】
前記K-ブロックの一時原文暗号文及び前記K-ブロックの一時トークン暗号文は、国際標準である3DES、AES、RSAなどのさまざまな暗号化アルゴリズムを使用して作成することができる。
【００３２】
次の工程として、アプリケーションサーバ（100）は、相互に対応するK-ブロック原文暗号文（K-PED）およびK-ブロックトークン暗号文（K-TED）の組をK-ブロックトークンパスフレーズ（K-TED）を基準に昇順で並べ替えて、K-ブロックの組（K-PAIR）を生成する（工程S140）。
【００３３】
K-ブロックの組（K-PAIR）には、前記の並べ替え順序の一連番号（K-SER）を付与する。
【００３４】
アプリケーションサーバ（100）は、K-ブロックの組（K-PAIR）の順序を示す一連番号（K-SER）をK-ブロックの組（K-PAIR）に含まれるK-ブロック原文暗号文（K-PED）を基準に昇順に並べ替えて、K-ブロック暗号インデックス（K-IDX）を生成する（工程S150）。
【００３５】
アプリケーションサーバ（100）は、K-ブロックの組（K-PAIR）およびK-ブロック暗号インデックス（K-IDX）をトークンイメージファイル（110）として保存する（工程S160）。
【００３６】
アプリケーションサーバ（100）は、N桁のすべての数字列から（N＋M）桁のすべての数字列に対し、図２から図４の動作を繰り返し実行して、N-ブロックの組（N-PAIR）およびN-ブロック暗号インデックス（N-IDX）から（N＋M） - ブロックの組（（N＋M）-PAIR）および（N＋M） - ブロック暗号インデックス（（N+ M）-IDX）を作成し、図５に示すように、これをトークンイメージファイル（110）として保存する。
【００３７】
このように、アプリケーションサーバ（100）は、起動時にトークンサーバ（200）を使用して、トークンイメージファイル（110）を事前に作成することができる。
再び図１および図２を参照すると、アプリケーションサーバ（100）は、事前に生成されたトークンイメージファイル（110）をメモリにロードして、トークンイメージファイル（110）を使用して暗号化処理を実行することができる。
【００３８】
図６は、図２の暗号化/復号システムに含まれているアプリケーションサーバの暗号化の流れを説明した図である。
以下、図１から図６を参照して、アプリケーションサーバ（100）の暗号化の動作について説明する。
【００３９】
図６を参照すると、アプリケーションサーバ（100）は、暗号化/復号ポリシーに基づいて原文データ（PD）から暗号化の対象となる原文の数字列（PNS）を抽出することができる。
【００４０】
前記暗号化/復号ポリシーは、トークンの長さの情報を含むことができる。
【００４１】
例えば、図６に示すように、原文データ（PD）が２０桁クレジットカード番号に相当し、前記暗号化/復号ポリシーに含まれる前記トークンの長さの情報が１０を表す場合、アプリケーションサーバ（100）は、原文データ（PD）を原文データ（PD）の最後の１０桁に相当する原文の数字列（PNS）および、残りの桁に相当する非暗号化データ（NPD）に分割することができる。
【００４２】
前記暗号化/復号ポリシーは、トークンイメージファイル（110）に保存することができる。
【００４３】
アプリケーションサーバ（100）は、原文の数字列（PNS）をN桁から（N＋M）桁の数字列に分割して、分割原文（DPD）を生成することができる（工程S200）。
アプリケーションサーバ（100）は、原文の数字列（PNS）をN桁から（N＋M）桁の中で最大桁の数字列で順次分割して、分割原文（DPD）を生成する。
【００４４】
例えば、Nは３であり、Mは３である場合には、図６に示すように、アプリケーションサーバ（100）は、桁数の原文の数字列（PNS）を６桁の第１分割原文（DPD1）および４桁の第２分割原文（DPD2）に分割することができる。
アプリケーションサーバ（100）は、分割原文（DPD）のそれぞれを暗号化して分割原文暗号文（DPD_E）を生成することができる（工程S300）。
【００４５】
このとき、アプリケーションサーバ（100）は、トークンイメージファイル（110）を生成する過程で、K桁のすべての数字列（K-NS）それぞれを暗号化してK-ブロック原文暗号文（K-PED）を作成し、K-ブロックトークン（K-TK）それぞれを暗号化してK-ブロックトークン暗号文（K-TED）を生成するときに使用される暗号化アルゴリズムと同じアルゴリズムを使用して分割原文暗号文（DPD_E）を生成することができる。
【００４６】
以降、アプリケーションサーバ（100）は、トークンイメージファイル（110）から分割原文暗号文（DPD_E）のそれぞれに対応する分割トークン暗号文（DTK_E）を読み出すことができる（工程S400）。
【００４７】
具体的には、アプリケーションサーバ（100）は、分割原文暗号文（DPD_E）のそれぞれについて、分割原文暗号文（DPD_E）に相当する分割原文（DPD）の桁数を判断することができる。
【００４８】
図６に示された例の場合、第１分割原文（DPD1）は、６桁の数字列であり、第２分割原文（DPD2）は、４桁の数字列を指定することができる。
【００４９】
アプリケーションサーバ（100）は、分割原文暗号文（DPD_E）のそれぞれについて、対応する分割原文（DPD）がK桁の数字列である場合には、トークンイメージファイル（110）に含まれるK-ブロック暗号インデックス（K-IDX）に基づいて、トークンイメージファイル（110）に含まれるK-ブロックの組（K-PAIR）の中で分割原文暗号文（DPD_E）と一致するK-ブロック原文暗号文（K-PED）を含んでいる一致K-ブロックのペアを判断することができる。
【００５０】
アプリケーションサーバ（100）は、K-ブロック暗号インデックス（K-IDX）およびK-ブロックの組（K-PAIR）にバイナリ検索（binary search）アルゴリズムを適用して、K-ブロックの組（K-PAIR）の中で分割原文暗号文（DPD_E）と一致するK-ブロック原文暗号文（K-PED）を含む前記一致K-ブロックの組を決定することができる。
【００５１】
アプリケーションサーバ（100）は一致したK-ブロックの組に含まれるK-ブロックトークン暗号文（K-TED）を分割トークン暗号文（DTK_E）として読み出すことができる。
【００５２】
上述のような動作により、アプリケーションサーバ（100）は、トークンイメージファイル（110）から分割原文暗号文（DPD_E）のそれぞれに対応する分割トークン暗号文（DTK_E）を読み出すことができます。
【００５３】
アプリケーションサーバ（100）は、分割トークン暗号文（DTK_E）を復号して分割トークン（DTK）を生成し（工程S500）、分割トークン（DTK）を組み合わせて、原文の数字列（PNS）に相当するセキュリティトークン（STK）を生成することができる（工程S600）。
【００５４】
例えば、図６に示すように、アプリケーションサーバ（100）は、分割原文（DPD）のそれぞれに対応した分割トークン（DTK）を原文の数字列（PNS）に含まれる分割原文（DPD）の順に組み合わせて、セキュリティトークン（STK）を生成することができる。
【００５５】
したがって、セキュリティトークン（STK）は原文の数字列（PNS）と同じ長さを持つ文字列にすることができる。
【００５６】
アプリケーションサーバ（100）は、図６に示すように、原文データ（PD）に含まれる非暗号化データ（NPD）とセキュリティトークン（STK）を組み合わせることにより、原文データ（PD）に相当する暗号データ（EPD）を生成することができる。
【００５７】
図７は、複数のトークンイメージを保持するイメージファイル例のである。
図７に示すように、アプリケーションサーバ（100）は、原文の数字列（PNS）の種類のそれぞれについて、K-ブロックの組（K-PAIR）およびK-ブロック暗号インデックス（K-IDX）をそれぞれ生成して、原文の数字列（PNS）の種類のそれぞれについて生成されたK-ブロックの組（K-PAIR）およびK-ブロック暗号インデックス（K-IDX）をトークンイメージファイル（110）として保存することができる。
【００５８】
このとき、K桁の数と同じ数字列（K-NS）の原文の数字列（PNS）の種類のそれぞれに対応して生成されたK-ブロックトークン（K-TK）は、互いに異なることがある。
【００５９】
図７は、例示的にトークンイメージファイル（110）は、Z個のK-ブロックの組（K-PAIR）およびZ個のK-ブロック暗号インデックス（K-IDX）を含んでいるものとして示される。
【００６０】
この場合、分割トークン暗号文（DTK_E）は、トークンイメージファイル（110）に格納された原文の数字列（PNS）の種類に相当するK-ブロックの組（K-PAIR）から読出されることができる。
【００６１】
つまり、アプリケーションサーバ（100）は、原文の数字列（PNS）の種類別トークンイメージファイル（110）に保存され、互いに異なるK-ブロックの組（K-PAIR）およびK-ブロック暗号インデックス（K-IDX）を使用して暗号化操作を実行することができる。
【００６２】
例えば、クレジットカード番号を暗号化する場合と、住民登録番号を暗号化する場合、それぞれにおいて、アプリケーションサーバ（100）は、トークンイメージファイル（110）に保存され、互いに異なるK-ブロックの組（K-PAIR）およびK-ブロック暗号のインデックス（K-IDX）を使用して暗号化操作を実行することができる。
【００６３】
したがって、クレジットカード番号に相当する原文の数字列（PNS）と住民登録番号に対応する原文の数字列（PNS）が同じ場合でも、生成されたセキュリティトークン（STK）は、互いに異なることがある。
【００６４】
このように、原文データ（PD）の暗号化プロセスでは、トークンサーバ（200）とデータ通信を行う必要がないため、暗号化速度を向上させることができ、トークンサーバ（200）に障害が発生した場合でも、暗号化処理を中断せずに継続するこができる。
【００６５】
図８は、本発明のトークンベースの復号方法を示すフローである。
【００６６】
図８のトークンベースの復号方法は、図２に示された暗号化/復号システム（10）を通して行うことができる。
【００６７】
図８を参照すると、本発明によるトークンベースの復号方法では、アプリケーションサーバ（100）は、N桁から（N＋M）桁のすべての数字列を暗号化した原文暗号文及び前記N桁から（N＋M）桁のすべての数字列のそれぞれに対応するトークンを暗号化し、トークン暗号文を相互に関連させて保存するトークンイメージファイルを作成する（ステップS100）。
【００６８】
図８に示されたトークンイメージファイルを生成する工程（S100）は、図１に示されたトークンイメージファイルを生成する工程（S100）と同じに行うことができる。
アプリケーションサーバ（100）は、事前に生成されたトークンイメージファイル（110）をメモリにロードして、トークンイメージファイル（110）を使用して復号処理を実行することができる。
【００６９】
図９は、図２の暗号化/復号システムに含まれているアプリケーションサーバの復号処理を説明するための図である。
【００７０】
図９に示すように、図８のトークンベースの復号方法は、図１のトークンベースの暗号化方法の逆の順序で実行することができる。以下、図１から９を参照して、アプリケーションサーバ（100）の復号処理について説明する。
【００７１】
図９を参照すると、アプリケーションサーバ（100）は暗号化/復号ポリシーに基づいて暗号データ（EPD）を復号対象となるセキュリティトークン（STK）と非暗号化データ（NPD）に分割することができる。
【００７２】
アプリケーションサーバ（100）は、セキュリティトークン（STK）をN桁から（N＋M）桁の数字列に分割して、分割トークン（DTK）を生成することができる（工程S201）。
【００７３】
アプリケーションサーバ（100）は、セキュリティトークン（STK）をN桁から（N＋M）桁の中で最大桁の数字列で順次分割して、分割トークン（DTK）を生成することができる。
【００７４】
例えば、Nは３であり、Mは３である場合には、図９に示すように、アプリケーションサーバ（100）は、１０桁のセキュリティトークン（STK）を６桁の第１分割トークン（DTK1）および４桁の第２分割トークン（DTK2）に分割することができる。
【００７５】
アプリケーションサーバ（100）は分割トークン（DTK）それぞれを暗号化して分割トークン暗号文（DTK_E）を生成することができる（工程S301）。
【００７６】
このとき、アプリケーションサーバ（100）は、トークンイメージファイル（110）を生成する過程で、K桁のすべての数字列（K-NS）それぞれを暗号化してK-ブロック原文暗号文（K-PED）を作成し、K-ブロックトークン（K-TK）それぞれを暗号化してK-ブロックトークン暗号文（K-TED）を生成するときに使用される暗号化アルゴリズムと同じアルゴリズムを使用して分割トークン暗号文（DTK_E）を生成することができる。
【００７７】
以降、アプリケーションサーバ（100）は、トークンイメージファイル（110）から分割トークン暗号文（DTK_E）のそれぞれに対応する分割原文暗号文（DPD_E）を読み出すことができる（工程S401）。
【００７８】
具体的にはアプリケーションサーバ（100）は分割トークン暗号文（DTK_E）のそれぞれについて、分割トークン暗号文（DTK_E）に相当する分割トークン（DTK）の桁数を判断することができる。
【００７９】
図９に示された例の場合、第１分割トークン（DTK1）は、６桁の文字列であり、第２分割トークン（DTK2）は、４桁の文字列である。
【００８０】
アプリケーションサーバ（100）は分割トークン暗号文（DTK_E）のそれぞれについて対応する分割トークン（DTK）がK桁の文字列である場合、トークンイメージファイル（110）に含まれるK-ブロックの組（K-PAIR）の中で分割トークン暗号文（DTK_E）と一致するK-ブロックトークン暗号文（K-TED）を含んでいる一致K-ブロックの組を判断することができる。
【００８１】
トークンイメージファイル（110）に含まれるK-ブロックの組（K-PAIR）は、K-ブロックトークン暗号文（K-TED）を基準に昇順に並べ替えされているので、アプリケーションサーバ（100）は、K-ブロックの組（K-PAIR）にバイナリ検索（binary search）アルゴリズムを適用して、K-ブロックの組（K-PAIR）の中で分割トークン暗号文（DTK_E）と一致するK-ブロックトークン暗号文（K-TED）を含む前記一致K-ブロックの組を決定することができる。
【００８２】
アプリケーションサーバ（100）は前記一致K-ブロックの組に含まれるK-ブロック原文暗号文（K-PED）を分割原文暗号文（DPD_E）として読み出すことができる。
【００８３】
上述のような動作により、アプリケーションサーバ（100）は、トークンイメージファイル（110）から分割トークン暗号文（DTK_E）のそれぞれに対応する分割原文暗号文（DPD_E）を読み出すことができる。
【００８４】
以降、アプリケーションサーバ（100）は、分割原文暗号文（DPD_E）を復号して分割原文（DPD）を生成し（工程S501）、分割原文（DPD）を組み合わせてセキュリティトークン（STK）に相当する原文の数字列（PNS）を生成することができる（工程S601）。
【００８５】
例えば、図９に示すようにアプリケーションサーバ（100）は分割トークン（DTK）のそれぞれに対応した分割原文（DPD）をセキュリティトークン（STK）に含まれる分割トークン（DTK）の順番に組み合わせて、原文の数字列（PNS）を生成することができる。
【００８６】
したがって、原文の数字列（PNS）は、セキュリティトークン（STK）と同じ長さを持つ数字列である。
【００８７】
以降、アプリケーションサーバ（100）は、図９に示すように、暗号データ（EPD）に含まれる非暗号化データ（NPD）と原文の数字列（PNS）を組み合わせることにより、暗号データ（EPD）に相当する原文データ（PD）を生成することができる。
【００８８】
以上、説明の便宜のために、本発明に係る暗号化/復号処理は、トークンイメージファイル（110）が生成されるアプリケーションサーバ（100）で実行されるものとして説明したが、トークンイメージファイル（110）は、任意の他のサーバーにコピーすることができて、トークンイメージファイル（110）を持っている任意のサーバーでは、上述のような暗号化/復号処理を実行することにより、データ（EPD）に相当する原文データ（PD）を生成することができる。
【００８９】
本発明によるトークンベースの暗号化/復号方法により、トークンサーバ（200）を使用してトークンイメージファイル（110）を事前に作成した後、事前作成されたトークンイメージファイル（110）を使用して原文データ（PD）を暗号化して暗号データ（EPD）を作成し、暗号データ（EPD）を復号して原文データ（PD）を生成する。
【００９０】
このように、原文データ（PD）の暗号化プロセスおよび暗号データ（EPD）の復号の過程では、トークンサーバ（200）とデータ通信を行う必要がないため通信オーバーヘッドを軽減させることができ、トークンサーバ（200）に障害が発生した場合でも、暗号化/復号の処理を中断せず継続的に行うことができる。
【産業上の利用可能性】
【００９１】
本発明の実施例による暗号化方法及び復号方法は、数字列に対してトークンベースの暗号化と復号を実行するデバイスに適用され、トークンサーバの障害発生時にもサービスを中断せずに暗号化/復号サービスを提供するために使用することができる。
【図１】
2015187661.tif 000003
【図２】
2015187661.tif 000004
【図３】
2015187661.tif 000005
【図４】
2015187661.tif 000006
【図５】
2015187661.tif 000007
【図６】
2015187661.tif 000008
【図７】
2015187661.tif 000009
【図８】
2015187661.tif 000010
【図９】
2015187661.tif 000011