(57)【要約】      （修正有）【課題】プログラムやデータベース等におけるフィールドのデータ型が文字列型と定義されている場合でも、暗号化後のデータ（暗号データ）を前記フィールドに格納可能にするデータの暗号化方法を提供する。【解決手段】データ暗号化処理は、入力データの各構成要素それぞれを換字テーブル記憶部内の換字テーブルに基づいて換字変換しＳ１２、整列順序記憶部内の新たな整列順序にしたがって換字変換後の各構成要素の整列位置を順序変換しＳ１３、換字変換及び順序変換を設定回数繰り返し行うＳ１４ことにより、入力データを暗号化する。【選択図】図６
2016038557.tif 000002
【特許請求の範囲】
【請求項１】
所定の文字からなる文字集合の各文字要素の組み合わせによって構成される入力データを暗号化するデータ暗号化方法であって、
前記入力データの各構成要素それぞれの整列位置を示す複数の位置情報を共通鍵方式における共通鍵で暗号化した暗号結果から求められた新たな整列順序、及び、前記文字集合の各文字要素を前記共通鍵で暗号化して得られた暗号結果から求められた所定の換字テーブルを用いて前記入力データを暗号化する暗号化ステップを含み、
前記暗号化ステップは、前記新たな整列順序にしたがって前記入力データの各構成要素の整列位置を順序変換し、当該順序変換後の変換後入力データの各構成要素それぞれを前記換字テーブルに基づいて換字変換するステップ、もしくは、前記換字テーブルに基づいて前記入力データの各構成要素を換字変換し、当該換字変換後の変換後入力データの各構成要素を前記新たな整列順序にしたがって順序変換するステップを含み、前記順序変換及び前記換字変換を予め定められた設定回数繰り返すことにより前記入力データを暗号化するデータ暗号化方法。
【請求項２】
前記換字テーブルは、前記文字集合に含まれる一つ又は複数の文字要素を一つ又は複数の別の文字に対応させたテーブルデータである請求項１に記載のデータ暗号化方法。
【請求項３】
前記暗号化ステップは、前記入力データの各構成要素のうち、１つの構成要素を一単位として、または隣接する２以上の要素群を一単位として、前記換字変換をする請求項１又は２に記載のデータ暗号化方法。
【請求項４】
前記新たな整列順序は、複数の前記位置情報を前記共通鍵で暗号化して得られた複数の暗号位置情報を予め定められた大小関係に基づいてソートした順序である請求項１から３のいずれかに記載のデータ暗号化方法。
【請求項５】
前記換字テーブルは、前記文字集合の各文字要素を前記共通鍵で暗号化して得られた複数の一次暗号文字要素から予め定められた大小関係に基づいて求められた大小順位を示す順位文字と元の前記文字要素とを対応させたものである請求項１から３のいずれかに記載のデータ暗号化方法。
【請求項６】
請求項１から５のいずれかに記載のデータ暗号化方法によって前記入力データを暗号化した暗号データを前記データ暗号化方法による暗号化とは逆の手順で復号するデータ復号方法。
【請求項７】
所定の文字からなる文字集合の各文字要素の組み合わせによって構成される入力データを暗号化するデータ処理装置であって、
前記入力データの各構成要素それぞれの整列位置を示す複数の位置情報を共通鍵方式における共通鍵で暗号化した暗号結果から求められた新たな整列順序を記憶する第１記憶部と、
前記文字集合の各文字要素を前記共通鍵で暗号化して得られた暗号結果から求められた所定の換字テーブルを記憶する第２記憶部と、
前記新たな整列順序にしたがって前記入力データの各構成要素の整列位置を順序変換した後に当該順序変換後の変換後入力データの各構成要素それぞれを前記換字テーブルに基づいて換字変換する処理、もしくは、前記換字テーブルに基づいて前記入力データの各構成要素を換字変換した後に当該換字変換後の変換後入力データの各構成要素を前記新たな整列順序にしたがって順序変換する処理を行い、各処理において前記順序変換及び前記換字変換を予め定められた設定回数繰り返すことにより、前記入力データを暗号化する暗号化部と、を備えるデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力データを暗号化する方法に関し、特に、暗号化されても入力データの種類やデータ長などの基本情報を暗号化後の暗号データに引き継ぐことが可能な暗号化技術に関する。
【背景技術】
【０００２】
従来、データを暗号化する種々の方法が知られている。例えば、共通鍵を用いて平文（入力データ）をブロック単位に暗号化する共通鍵暗号方式のＡＥＳ（Advanced Encryption Standard）方式や３ＤＥＳ(3-key Tripple DES)方式、暗号鍵と復号鍵を用いた公開鍵方式によりＩＤ等を暗号化する方法（特許文献１参照）などが知られている。従来のブロック暗号化システムでは、オリジナルデータの暗号化後に固定長の暗号データ（暗号化後のデータ）を出力する。このため、オリジナルデータのデータ形式やデータ長などの基本情報は、暗号化後の暗号データには引き継がれない。
【０００３】
ところで、各種のアプリケーションプログラムにおいては、当該プログラムの稼働中に取り扱われるアプリケーションデータの安全性を担保するために、そのアプリケーションデータは適宜暗号化される。しかしながら、プログラムやデータベースのフィールドは、当該フィールドに格納可能な最大文字数やデータ型（文字列型やバイナリ型等）が前記基本情報に合わせて設計されているため、アプリケーションプログラムのブロック暗号化は容易ではない。例えば、データベースのフィールドのデータ型が文字列型と定義されている場合、そのフィールドに格納されるデータを従来のＡＥＳ方式等で暗号化するとしても、上述したように前記基本情報が引き継がれないため、ＡＥＳ暗号化した結果であるバイナリデータをそのまま前記フィールドに格納することはできない。この場合、そのバイナリデータを前記文字列型に変換してから前記フィールドに格納する必要がある。しかしながら、変換後のデータのデータ長が前記フィールドにおいて定義されたフィールド長の上限値を超える場合があり、この場合、変換後のデータの前記フィールドへの格納が正しく行われない。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−１７７９９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
このような問題を解決するためには、既存のアプリケーションプログラムやデータベースのスキーマを変更しなければならない。つまり、アプリケーションンプログラムを稼働するためのシステム自体を変更しなければならない。しかしながら、特定の用途に用いられる所謂パッケージソフトウェア（市販ソフトウェアとも称される。）などを稼働させるシステムにおいては、当該システムの変更は許されていない。仮に変更が可能であるとしても、システムの変更に伴う作業量は膨大であり、多大な作業時間を要することに加え、ソフトウェアプログラムやそれに関連して動作する他のプログラムが前記システムにおいて動作しなくなるというリスクを伴う。また、作業量が膨大であるが故に、変更漏れや変更ミスなどの人的ミスが副次的に生じるというリスクもある。
【０００６】
本発明は、上記事情に鑑みてなされたものであり、その目的は、プログラムやデータベース等におけるフィールドのデータ型が文字列型と定義されている場合でも、暗号化後のデータ（暗号データ）を前記フィールドに格納可能にするデータの暗号化を実現することにある。
【課題を解決するための手段】
【０００７】
本発明の一の局面に係るデータ暗号化方法は、所定の文字からなる文字集合の各文字要素の組み合わせによって構成される入力データを暗号化する方法である。このデータ暗号化方法は、前記入力データの各構成要素それぞれの整列位置を示す複数の位置情報を共通鍵方式における共通鍵で暗号化した暗号結果から求められた新たな整列順序、及び、前記文字集合の各文字要素を前記共通鍵で暗号化して得られた暗号結果から求められた所定の換字テーブルを用いて前記入力データを暗号化する暗号化ステップを含み、前記暗号化ステップは、前記新たな整列順序にしたがって前記入力データの各構成要素の整列位置を順序変換し、当該順序変換後の変換後入力データの各構成要素それぞれを前記換字テーブルに基づいて換字変換するステップ、もしくは、前記換字テーブルに基づいて前記入力データの各構成要素を換字変換し、当該換字変換後の変換後入力データの各構成要素を前記新たな整列順序にしたがって順序変換するステップを含む。
【０００８】
このように構成されたデータ暗号化方法は、前記入力データを受け付けると、前記新たな整列順序にしたがって前記入力データの各構成要素の整列位置を順序変換し、当該順序変換後の変換後入力データの各構成要素それぞれを前記換字テーブルに基づいて換字変換する。或いは、前記入力データを受け付けると、前記換字テーブルに基づいて前記入力データの各構成要素を換字変換し、当該換字変換後の変換後入力データの各構成要素を前記新たな整列順序にしたがって順序変換する。これにより、入力データが暗号化される。
【０００９】
このように、本発明のデータ暗号化方法は、入力データの構成要素の入れ換えや文字置換によって入力データの暗号化を実現するため、前記入力データの基本情報を暗号化後のデータ（暗号データ）に引き継ぐことができる。したがって、プログラムやデータベース等におけるフィールドのデータ型が文字列型と定義されている場合でも、暗号データを前記フィールドに格納することが可能となる。これにより、新たな整列順序、換字テーブル、及び共通鍵を秘匿しておけば、暗号化された暗号データが漏洩しても、その漏洩した暗号データから暗号化に用いられた前記整列順序、換字テーブル、及び共通鍵を知ることはできない。そのため、入力データに関して高い秘匿性・セキュリティ性を実現することができる。ここで、前記基本情報は、入力データの構成要素の種類（例えば、構成要素が文字であればそれを示す情報や、暗号化対象外の文字情報など）やデータ長（例えば、文字数）などである。
【００１０】
前記暗号化ステップは、前記順序変換及び前記換字変換を予め定められた設定回数繰り返すことにより前記入力データを暗号化する。これにより、前記整列順序及び換字テーブルが知られ難くなり、入力データの秘匿性・セキュリティ性が更に高まる。
【００１１】
前記換字テーブルは、前記文字集合に含まれる一つ又は複数の文字要素を一つ又は複数の別の文字に対応させたテーブルデータである。
【００１２】
このように、複数タイプの換字テーブルを利用することにより、利用する換字テーブルに応じた秘匿性・セキュリティ性を実現することができる。なお、前記換字テーブルは、一つの文字要素を別の文字に対応させた単一換字テーブル、複数の文字要素を複数の別の文字に対応させた複数文字換字テーブルとがある。本発明は、これらの各テーブルが混合したもの、つまり、一文字単位の換字と複数文字単位の換字とを実現するための換字テーブルであってもよい。
【００１３】
前記暗号化ステップは、前記入力データの各構成要素のうち、１つの構成要素を一単位として、または隣接する２以上の要素群を一単位として、前記換字変換をする。
【００１４】
前記暗号化ステップにおいて、換字変換の単位は、予め定められたルールに基づいて決定することができる。このように決定されることにより、換字変換の単位に応じた秘匿性・セキュリティ性を実現することができる。なお、換字変換の単位は、暗号化される入力データに対して、部分的に１つの構成要素を一単位としてもよく、部分的に２以上の要素群を一単位としてもよい。つまり、一つの入力データにおいて、１つの構成要素を一単位として換字変換する部分があり、２以上の要素群を一単位として換字変換する部分があってもよい。
【００１５】
前記新たな整列順序は、複数の前記位置情報を前記共通鍵で暗号化して得られた複数の暗号位置情報に基づいて定められるものである。具体的には、前記新たな整列順序は、複数の前記暗号位置情報を予め定められた大小関係に基づいてソートした順序である。
【００１６】
前記換字テーブルは、前記文字集合の各文字要素を前記共通鍵で暗号化して得られた複数の一次暗号文字要素に基づいて定められるものである。具体的には、前記換字テーブルは、複数の前記一次暗号文字要素から予め定められた大小関係に基づいて求められた大小順位を示す順位文字と元の前記文字要素とを対応させたものである。
【００１７】
本発明の他の局面に係るデータ復号方法は、上述のデータ暗号化方法によって前記入力データを暗号化した暗号データを前記データ暗号化方法による暗号化とは逆の手順で復号する。これにより、暗号化された暗号データを元の入力データに復号することができる。
【００１８】
本発明の他の局面に係る暗号化プログラムは、所定の文字からなる文字集合の各文字要素の組み合わせによって構成される入力データを暗号化する処理をコンピュータに実行させるプログラムである。この暗号化プログラムは、前記入力データの各構成要素それぞれの整列位置を示す複数の位置情報を共通鍵方式における共通鍵で暗号化した暗号結果から求められた新たな整列順序、及び、前記文字集合の各文字要素を前記共通鍵で暗号化して得られた暗号結果から求められた所定の換字テーブルを用いて前記入力データを暗号化する暗号化ステップを含み、前記暗号化ステップは、前記新たな整列順序にしたがって前記入力データの各構成要素の整列位置を順序変換し、当該順序変換後の変換後入力データの各構成要素それぞれを前記換字テーブルに基づいて換字変換するステップ、もしくは、前記換字テーブルに基づいて前記入力データの各構成要素を換字変換し、当該換字変換後の変換後入力データの各構成要素を前記新たな整列順序にしたがって順序変換するステップを含み、前記順序変換及び前記換字変換を予め定められた設定回数繰り返すことにより前記入力データを暗号化する処理をコンピュータに実行させる。
【００１９】
このような暗号化プログラムとして本発明を捉えることができる。これにより、当該暗号化プログラムがインストールされたデータ処理装置やデータ処理システムにおいて、上述のデータ暗号化方法により奏される効果と同じ効果を奏することができる。
【００２０】
本発明の他の局面に係る記憶媒体は、上述の暗号化プログラムを記憶したコンピュータ読み取り可能な記憶媒体である。この記憶媒体は、コンピュータ読み取り可能な非一時的な記憶媒体である。
【００２１】
本発明の他の局面に係るデータ処理装置は、所定の文字からなる文字集合の各文字要素の組み合わせによって構成される入力データを暗号化するデータ処理装置である。このデータ処理装置は、前記入力データの各構成要素それぞれの整列位置を示す複数の位置情報を共通鍵方式における共通鍵で暗号化した暗号結果から求められた新たな整列順序を記憶する第１記憶部と、前記文字集合の各文字要素を前記共通鍵で暗号化して得られた暗号結果から求められた所定の換字テーブルを記憶する第２記憶部と、前記新たな整列順序にしたがって前記入力データの各構成要素の整列位置を順序変換した後に当該順序変換後の変換後入力データの各構成要素それぞれを前記換字テーブルに基づいて換字変換する処理、もしくは、前記換字テーブルに基づいて前記入力データの各構成要素を換字変換した後に当該換字変換後の変換後入力データの各構成要素を前記新たな整列順序にしたがって順序変換する処理を行い、各処理において前記順序変換及び前記換字変換を予め定められた設定回数繰り返すことにより、前記入力データを暗号化する暗号化部と、を備える。
【００２２】
このようにデータ処理装置が構成されているため、当該データ処理装置は、上述のデータ暗号化方法と同様の効果を奏することができる。つまり、当該データ処理装置によれば、前記入力データの基本情報を暗号化後のデータ（暗号データ）に引き継ぐことができ、その結果、プログラムやデータベース等におけるフィールドのデータ型が文字列型と定義されている場合でも、暗号データを前記フィールドに格納可能にすることが可能となる。
【発明の効果】
【００２３】
本発明によれば、暗号化されても入力データの種類やデータ長などの基本情報を暗号データに引き継ぐことができるため、プログラムやデータベース等におけるフィールドが文字列型と定義されている場合でも、暗号化後の暗号データを前記フィールドに格納することが可能である。
【図面の簡単な説明】
【００２４】
【図１】図１は、本発明の実施形態に係る暗号化復号システム１０のネットワーク構成を示す図である。
【図２】図２は、暗号化復号システム１０の暗号化復号サーバー２１の概略構成を示すブロック図である。
【図３】図３は、暗号化復号サーバー２１で行われるデータ暗号化処理における各条件の一例を示す一覧図である。
【図４】図４は、整列順序とこの整列順序にしたがって行われる順序変換を説明する図である。
【図５】図５は、換字テーブルとこの換字テーブルに基づいて行われる換字変換を説明する図である。
【図６】図６は、暗号化復号サーバー２１におけるデータ暗号化処理の手順を示すフローチャートである。
【発明を実施するための形態】
【００２５】
［実施形態］
以下、図面を参照しながら、本発明の実施形態について説明する。なお、以下に説明される実施形態は本発明を具体化した一例にすぎず、本発明の技術的範囲を限定するものではない。
【００２６】
図１に示されるように、本発明の一実施形態に係る暗号化復号システム１０は、主として、暗号化復号サーバー２１と、一つ又は複数のクライアント端末装置１１と、によって構成されている。暗号化復号サーバー２１（本発明のデータ処理装置の一例）は、アプリケーションを提供するアプリケーションシステム２０に含まれている。暗号化復号サーバー２１とクライアント端末装置１１とは、インターネット１５（通信網の一例）によって相互にデータ通信可能に接続されている。
【００２７】
アプリケーションシステム２０は、暗号化復号サーバー２１と、アプリケーションサーバー２２と、により構成されている。暗号化復号サーバー２１とアプリケーションサーバー２２とは、インターネット１５を通じてデータ通信可能に接続されている。ここで、アプリケーションサーバー２２は、各種アプリケーション（ソフトウェア）によるＷＥＢサービスを具現化するサーバー装置である。アプリケーションサーバー２２は、暗号化復号サーバー２１を介してインターネット１５に接続されているクライアント端末装置１１に対してアプリケーションを提供する。前記アプリケーションは特に限定されないが、例えば、ＩＤコードや顧客番号などを保管して管理するためのアプリケーションや、顧客毎の売上データを管理するためのアプリケーションが考えられる。
【００２８】
暗号化復号サーバー２１は、クライアント端末装置１１からインターネット１５を介して入力された入力データを暗号化するデータ暗号化処理を行うサーバー装置である。前記入力データは、クライアント端末装置１１の表示画面上に表示されるＧＵＩを介して暗号化復号サーバー２１に入力される。具体的に、アプリケーションサーバー２２が提供するアプリケーションがクライアント端末装置１１の表示画面上にブラウザソフトを介してＧＵＩを表示させ、利用者によって前記ＧＵＩに入力された情報が入力データとして暗号化復号サーバー２１に送信される。これにより、暗号化復号サーバー２１によって前記入力データが取得される。なお、暗号化復号サーバー２１の構成については後述する。
【００２９】
クライアント端末装置１１は、アプリケーションの利用者が使用する端末装置である。例えば、クライアント端末装置１１は、携帯電話機、スマートフォン、タブレット型端末装置、パーソナルコンピューターなどである。利用者は、クライアント端末装置１１を介して前記入力データを入力することにより、その入力データを暗号化復号サーバー２１に提供する。
【００３０】
前記入力データは、暗号化復号サーバー２１による後述のデータ暗号化処理（図６参照）の対象となる情報である。前記入力データは、予め定められた所定の文字からなる文字集合の各文字要素の組み合わせによって構成される文字列データである。例えば、数字のみの組み合わせによって構成されたもの、欧文字（アルファベット文字）のみで構成されたもの、数字と欧文字とが混合されて構成されたものが考えられる。前記入力データの具体例として、ＩＤコードや顧客番号、顧客の売上データなどが考えられる。また、利用者の個人情報、具体的には、利用者の電話番号や生年月日、電子メールアドレス、運転免許証番号、住民基本台帳カードに記憶された住民票コードなども前記入力データの一例である。
【００３１】
なお、本実施形態では、クライアント端末装置１１と暗号化復号サーバー２１とがインターネット１５で接続された形態を例示するが、本発明はこれに限られない。例えば、クライアント端末装置１１は、社内ＬＡＮなどに接続されたものであってもよい。
【００３２】
以下、暗号化復号サーバー２１の構成について詳細に説明する。
【００３３】
図２に示されるように、暗号化復号サーバー２１は、制御部３０と、換字テーブル記憶部４１と、整列順序記憶部４２と、共通鍵記憶部４３と、ＲＡＭ５１と、ＲＯＭ５２と、データベース５３と、を備えるコンピュータである。また、暗号化復号サーバー２１は、図示しない通信Ｉ／Ｆを備えており、この通信Ｉ／Ｆを介してインターネット１５やアプリケーションサーバー２２と通信可能に接続されている。
【００３４】
制御部３０は、内部レジスタを有するＣＰＵである。ＲＯＭ５２には、暗号化復号サーバー２１を動作させるファームウェアなどが記憶されている。制御部３０は、ＲＯＭ５２に記憶されたファームウェアを読み出して実行する。ＲＡＭ５１には、後述のデータ暗号化処理を実行するための暗号化プログラムが記憶されている。制御部３０は、ＲＡＭ５１に記憶された暗号化プログラムを読み出して前記データ暗号化処理実行する。また、ＲＡＭ５１は、メインメモリーとして用いられるものであり、暗号化プログラムの実行時に各種データが一時的に記憶されたり、データの展開処理などに利用される。
【００３５】
本実施形態では、制御部３０は、前記暗号化プログラムを実行することによって、後述する複数の機能部として動作する。具体的には、制御部３０は、パディング部３１、ＡＥＳ暗号化部３２、換字テーブル生成部３３、換字変換部３４、整列順序生成部３５、順序変換部３６として動作することができる。言い換えると、制御部３０は、パディング部３１、ＡＥＳ暗号化部３２、換字テーブル生成部３３、換字変換部３４、整列順序生成部３５、順序変換部３６を備えている。ここで、換字変換部３４及び順序変換部３６は、本発明の暗号化部の一例である。なお、各機能部の詳細については後述する。
【００３６】
データベース５３は、例えば、ＨＤＤやＳＳＤなどの大容量の記憶媒体である。データベース５３には、データ暗号化処理によって前記入力データが暗号化された暗号化後のデータ（以下「暗号データ」という。）が保管される。なお、暗号化前のオリジナルデータである前記入力データは保管されない。また、データベース５３は、暗号化復号サーバー２１内に設けられたものに限られない。例えば、データベース５３は、データ管理会社が提供するデータベースサーバーに設けられたものであってもよい。また、特定のデータベースサーバーではなく、インターネット１５上に利用可能に存在する様々な形態のデータベース資源を前記暗号データの保管場所として利用することができる。なお、近年、クラウドコンピューティング技術の発達により、インターネット１５上のデータベース資源を利用する形態が増加しており、前記暗号データに関するセキュリティ性について注目されている。
【００３７】
換字テーブル記憶部４１、整列順序記憶部４２、共通鍵記憶部４３は、例えば、ＲＡＭ５１と同様の半導体素子を利用した記憶装置である。ここで、換字テーブル記憶部４１は、本発明の第２記憶部の一例である。整列順序記憶部４２は、本発明の第１記憶部の一例である。
【００３８】
換字テーブル記憶部４１には、換字テーブル生成部３３によって生成された換字テーブルが記憶される。整列順序記憶部４２には、整列順序生成部３５によって生成された新たな整列順序が記憶される。共通鍵記憶部４３には、ＡＥＳ暗号化部３２における暗号化に用いられる共通鍵が記憶されている。この共通鍵記憶部４３に記憶される共通鍵は、前記暗号化プログラムが起動されるときに、暗号化復号サーバー２１以外のサーバー装置などに保管管理されている共通鍵が取得されて、当該共通鍵記憶部４３に格納される。前記換字テーブルは、暗号化復号サーバー２１が稼働を開始したとき、換言すると、前記暗号化プログラムが起動されるときに、換字テーブル生成部３３で生成されて、換字テーブル記憶部４１に記憶される。同様に、前記整列順序は、暗号化復号サーバー２１が稼働を開始したとき、換言すると、前記暗号化プログラムが起動されるときに、整列順序生成部３５で生成されて、整列順序記憶部４２に記憶される。本実施形態では、暗号化復号サーバー２１が稼働する度に換字テーブル記憶部４１及び整列順序記憶部４２が初期化されて、その都度、前記換字テーブル及び前記整列順序が生成されて記憶される。
【００３９】
以下の説明では、制御部３０がパディング部３１、ＡＥＳ暗号化部３２、換字テーブル生成部３３、整列順序生成部３５を備えており、これらの各機能部によって前記換字テーブル及び前記整列順序が生成される例について説明する。
【００４０】
パディング部３１は、クライアント端末装置１１から取得した前記入力データのデータ長を予め定められた固定長に変換する処理（以下、「パディング処理」という。）を行う。例えば、後述のＡＥＳ暗号化部３２で実行されるＡＥＳ方式（共通鍵暗号方式の一例）に基づくＡＥＳ暗号化処理が、１２８ビットの長さのブロックを一単位として暗号化するものである場合、このブロック長（１２８ビット）の整数倍の長さになるように前記入力データに無意味なデータを追加してデータ長を変換する。このパディング部３１が設けられているため、前記入力データのデータ長に関わらず、後述のデータ暗号化処理を実行可能となる。
【００４１】
ＡＥＳ暗号化部３２は、所定のデータ（例えば平文データ）を共通鍵記憶部４３内の前記共通鍵を用いてＡＥＳ方式に基づいて暗号化する。具体的には、ＡＥＳ暗号化部３２は、前記入力データの各構成要素それぞれの整列位置を示す位置情報をＡＥＳ方式における前記共通鍵を用いて暗号化する。本実施形態では、暗号化に用いられる前記共通鍵の鍵長は２５６ビットとし、暗号化するブロックの長さ（ブロック長）を１２８ビットとしている。つまり、ＡＥＳ暗号化部３２は、１２８ビットの長さのデータ（ブロックという。）を単位として暗号化する。もちろん、前記鍵長は、２５６ビットに限られない。なお、本実施形態では、ＡＥＳ暗号化部３２を用いた例について説明するが、例えば、ＡＥＳ暗号化部３２に代えて、３ＤＥＳ方式などの他の共通鍵暗号方式によって前記入力データの各構成要素それぞれの整列位置を示す位置情報を前記共通鍵で暗号化するものを用いることもできる。
【００４２】
ここで、前記入力データの一例であるコードＡ（Ａ＝｛Ａ１，Ａ２，Ａ３，・・・，Ａｉ，・・・，Ａｎ−１，Ａｎ｝）を例示して説明する。なお、コードＡを含む各種の条件の一例を図３に示す。コードＡは、十進法（十進記数法）により表現されるｎ桁の数字からなる数字列とする。コードＡにおいて、｛１〜ｎ｝は、コードＡを構成する構成要素ＡｉがコードＡにおいてどの位置に存在しているかを示す整列順序の番号である。例えば、Ａ２は、コードＡの先頭数字（Ａ１）から２番目に位置する数字であり、Ａｉは、コードＡの先頭数字からｉ番目に位置する数字である。以下、この番号を整列番号と称する。したがって、構成要素Ａｉの前記整列番号は「ｉ」であり、これは、構成要素ＡｉがコードＡの先頭数字からｉ番目に位置する数字であることを示す。つまり、コードＡを構成する構成要素Ａｉの前記整列番号「ｉ」は、コードＡにおける整列位置を示す位置情報である。言い換えると、構成要素Ａｉの前記整列番号「ｉ」はコードＡにおける整列順の位置（整列順位）を示す。この例では、整列番号「１」はコードＡの先頭文字の位置である１番目を示し、整列番号「ｎ」はコードＡの最後尾文字の位置であるｎ番目を示す。
【００４３】
本実施形態では、ＡＥＳ暗号化部３２がコードＡの位置情報を暗号化する場合、各構成要素Ａｉの前記整列番号｛１〜ｎ｝の各数字をそれぞれ暗号化する。例えば、コードＡが８桁の数字コード（数字列）である場合は、ＡＥＳ暗号化部３２は、各構成要素の整列番号を示す数字｛１，２，３，・・・，７，８｝をそれぞれ個別に前記共通鍵で暗号化する。また、コードＡが１６桁の数字コード（数列）である場合は、ＡＥＳ暗号化部３２は、各構成要素の整列番号の数字｛１，２，３，・・・，１４，１５，１６｝をそれぞれ前記共通鍵で暗号化する。なお、実際には、コードＡが８桁の数字コードの場合、数字｛１，２，３，・・・，７，８｝のそれぞれが前記パディング処理された後に、前記共通鍵で暗号化される。
【００４４】
整列順序生成部３５は、ＡＥＳ暗号化部３２によって暗号化された後の前記整列番号（暗号結果）に基づいて新たな整列順序を生成する。整列順序生成部３５で生成された新たな整列順序は、整列順序記憶部４２に格納される。以下、説明の便宜上、ＡＥＳ暗号化部３２によって暗号化された後の前記整列番号（位置情報）のことを、暗号位置情報又は暗号整列番号とも称する。
【００４５】
ここで、上述では前記入力データの各構成要素の位置情報として前記コードＡの前記整列番号を例示したが、以下、前記入力データの位置情報を一般化して、位置情報Ｐ（Ｐ＝｛Ｐ１，Ｐ２，Ｐ３，・・・・，Ｐｉ，・・・，Ｐｎ｝）と表すことにする。上述では、位置情報Ｐとして前記整列番号を例示したが、これは単なる一例であり、位置情報Ｐは前記入力データの前記構成要素の位置を特定するものであればよく、様々なルールに基づいて定めることができる。
【００４６】
以下、前記入力データが十進数で表現された８桁の数字コードからなる前記コードＡ＝｛Ａ１，Ａ２，Ａ３，・・・，Ａｉ，・・・，Ａｎ−１，Ａｎ｝である場合を例示して説明する。上述したように、その位置情報Ｐは、コードＡの整列番号であるため、前記コードＡの位置情報Ｐは、｛１，２，３，・・・・，Ｐｉ，・・・，８｝で表される。この場合、ＡＥＳ暗号化部３２は、位置情報Ｐ（Ｐ＝｛１，２，３，・・・・，Ｐｉ，・・・，８｝）のそれぞれの数字（整列番号）を個別に暗号化する。また、整列順序生成部３５は、ＡＥＳ暗号化部３２によって前記整列番号が暗号化された暗号整列番号に基づいて前記整列順序を生成する。具体的には、整列順序生成部３５は、複数の前記暗号整列番号を予め定められた大小関係に基づいてソートした新たな整列順序である。以下の表１に、位置情報Ｐの整列番号Ｐｉと、この整列番号Ｐｉに対応する新たな整列順序Ｒを示す。
【００４７】
【表１】
2016038557.tif 000003
【００４８】
表１に示されるように、位置情報Ｐの各整列番号Ｐｉが暗号化された暗号整列番号は、１６進数で表現された１２８ビットのデータとなる。表１においては、前記暗号整列番号の具体的数値が部分的に省略されている。本実施形態では、整列順序生成部３５は、前記位置情報である前記整列番号Ｐｉの暗号整列番号に基づいて新たに前記整列順序を生成する。この整列順序は、前記暗号整列番号が示す１２８ビットデータを１６進数の複数桁の数（数値）とみなして、それぞれの数（数値）の大小関係に基づいて定められる。以下、前記整列順序をＲ＝｛Ｒ１，Ｒ２，Ｒ３，・・・・，Ｒｉ，・・・，Ｒｎ｝と表すことにする。
【００４９】
整列順序生成部３５は、具体的には、表１に記載の８つの暗号整列番号から、各暗号整列番号を複数桁の数（数値）としたときの大小関係に基づいて各暗号整列番号をソートし、そのソート後の順序（表１の右欄の順序）を前記整列順序として新たに生成する。例えば、整列番号Ｐ１（＝１）を暗号化した暗号整列番号が示す数（数値）は、他の暗号整列番号と比較して２番目に小さい数であるとする。この場合、整列番号が２番目（Ｐ２）に対応する数字「Ａ２」を前記整列順序の１番目に配置するための順序としてＲ１（＝２）を定める。同様にして、整列番号Ｐ２（＝２）を暗号化した暗号整列番号の数（数値）が、他の暗号整列番号と比較して８番目に小さい数（一番大きい数）を表すとすると、整列番号が８番目（Ｐ８）に対応する数字「Ａ８」を前記整列順序の２番目に配置するための順序としてＲ２（＝８）を定める。また、整列番号Ｐ３の暗号整列番号の数（数値）が５番目に小さい場合、整列番号が５番目（Ｐ５）に対応する数字「Ａ５」を前記整列順序の３番目に配置するための順序としてＲ３（＝５）を定める。整列番号Ｐ４の暗号整列番号の数（数値）が６番目に小さい場合、整列番号が６番目（Ｐ６）に対応する数字「Ａ６」を前記整列順序の４番目に配置するための順序としてＲ４（＝６）を定める。整列番号Ｐ５の暗号整列番号の数（数値）が１番目に小さい場合、整列番号が１番目（Ｐ１）に対応する数字「Ａ１」を前記整列順序の５番目に配置するための順序としてＲ５（＝１）を定める。整列番号Ｐ６の暗号整列番号の数（数値）が７番目に小さい場合、整列番号が７番目（Ｐ７）に対応する数字「Ａ７」を前記整列順序の６番目に配置するための順序としてＲ６（＝７）を定める。整列番号Ｐ７の暗号整列番号の数（数値）が４番目に小さい場合、整列番号が４番目（Ｐ４）に対応する数字「Ａ４」を前記整列順序の７番目に配置するための順序としてＲ７（＝４）を定める。そして、整列番号Ｐ８の暗号整列番号の数（数値）が３番目に小さい場合、整列番号が３番目（Ｐ３）に対応する数字「Ａ３」を前記整列順序の８番目に配置するための順序としてＲ８（＝３）を定める。この場合、整列順序Ｒは、Ｒ＝｛２，８，５，６，１，７，４，３｝と表される。この整列順序Ｒは、後述の順序変換部３６で用いられる。
【００５０】
順序変換部３６は、整列順序生成部３５において生成された新たな前記整列順序Ｒにしたがって前記入力データの各構成要素を順序変換する。具体的には、前記入力データが８桁の数字コードからなる前記コードＡ＝｛Ａ１，Ａ２，Ａ３，・・・，Ａｉ，・・・，Ａｎ−１，Ａｎ｝である場合、このコードＡは、前記整列順序Ｒ＝｛２，８，５，６，１，７，４，３｝にしたがって順序が入れ替えられることにより、コードＡ’＝｛Ａ２，Ａ８，Ａ５，Ａ６，Ａ１，Ａ７，Ａ４，Ａ３｝となる。つまり、コードＡは、各数字の順位が入れ替えられてコードＡ’に変換される。例えば、図４に示されるように、コードＡが８桁の数字コード「１２３４１２３４」の場合は、これが同じ８桁の数字コードであるコードＡ’ 「２４１２１３４３」に変換される。
【００５１】
また、ＡＥＳ暗号化部３２は、前記入力データを構成可能な文字であって、ＡＥＳ方式の暗号が可能な文字の前記文字集合における各文字要素をＡＥＳ方式における前記共通鍵を用いて暗号化する。以下、前記文字集合ＳをＳ＝｛Ｓ１，Ｓ２，Ｓ３，・・・・，Ｓｉ，・・・，Ｓｍ｝と表すことにする。文字集合Ｓは、少なくとも数字を含む文字要素Ｓ１〜Ｓｍからなる文字集合であり、前記入力データの構成要素として使用可能な文字要素で構成されている。例えば、前記入力データが数字のみからなる数字コードである場合は、文字集合Ｓは、Ｓ＝｛０，１，２，３，４，５，６，７，８，９｝である。なお、前記入力データが欧文字を含む場合は、文字集合Ｓは、Ｓ＝｛０，１，２，３，・・・，９，ａ，ｂ，ｃ，・・・，ｘ，ｙ，ｚ｝である。
【００５２】
ここで、前記入力データが数字のみからなる数字コードであり、文字集合ＳがＳ＝｛０，１，２，３，４，５，６，７，８，９｝である場合を例示して説明する。なお、必要に応じて、この場合の文字集合Ｓを一般化して、文字集合Ｓ＝｛Ｓ０，Ｓ１，Ｓ２，・・・・，Ｓｉ，・・・，Ｓ９｝と表す場合がある。この場合、ＡＥＳ暗号化部３２は、文字集合Ｓの各文字要素Ｓｉ（数字０〜９）をそれぞれ前記共通鍵で暗号化する。なお、実際には、各文字要素Ｓｉのそれぞれが前記パディング処理された後に、前記共通鍵で暗号化される。ＡＥＳ暗号化部３２によって文字集合Ｓの各文字要素Ｓｉが暗号化された暗号化後のデータを以下の表２に示す。なお、表２では、暗号化後の文字要素Ｓｉの具体的な数値は省略しているが、表１と同様に、文字集合Ｓの各文字要素Ｓｉが暗号化された暗号化後のデータは、１６進数で表現された１２８ビットのデータとなる。
【００５３】
【表２】
2016038557.tif 000004
【００５４】
換字テーブル生成部３３は、換字テーブルを生成する。この換字テーブルは、ＡＥＳ暗号化部３２によって前記文字要素Ｓｉを前記共通鍵で暗号化して得られた暗号結果から求められる。具体的には、換字テーブル生成部３３は、ＡＥＳ暗号化部３２によって前記文字要素Ｓｉを前記共通鍵で暗号化して得られた複数の暗号化データ（以下「一次暗号文字要素」という。）から前記換字テーブルを生成する。本実施形態では、換字テーブル生成部３３は、前記一次暗号文字要素が示す１２８ビットデータを１６進数の複数桁の数（数値）とみなして、それぞれの数（数値）の大小関係に基づいて大小順位を示す順位文字である順番Ｓ’ｉを求める。そして、その順番Ｓ’ｉ（順番を示す数字）と暗号化前の前記文字集合Ｓの各文字要素Ｓｉとが、１対１で対応付けられる。このように対応付けられたテーブルデータが前記換字テーブルである。表２には前記換字テーブルの一例が示されている。
【００５５】
本実施形態では、換字テーブル生成部３３は、文字集合ＳがＳ＝｛０，１，２，３，４，５，６，７，８，９｝である場合、暗号化後のデータである前記一次暗号文字要素に基づいて所定の順位を求める。例えば、表２に示されるように、文字要素Ｓ０（＝０）を暗号化した後の一次暗号文字要素の数（数値）が他の一次暗号文字要素と比較して２番目に小さい数であるとする。この場合、その順位を示す順番の数字「２」を文字要素Ｓ０の変換後の文字Ｓ’０（以下、換字ともいう。）として、文字要素Ｓ０に対応付ける。また、文字要素Ｓ１（＝１）を暗号化した後の一次暗号文字要素の数（数値）が他の一次暗号文字要素と比較して８番目に小さい数を表すとすると、その順番を示す数字「８」を文字要素Ｓ１の変換後の換字Ｓ’１文字として、文字要素Ｓ１に対応付ける。以下、同様にして、文字要素Ｓ２の変換後の換字Ｓ’２を数字「９」とし、文字要素Ｓ３の変換後の換字Ｓ’３文字を数字「５」とし、文字要素Ｓ４の変換後の換字Ｓ’４文字を数字「６」とし、文字要素Ｓ５の変換後の換字Ｓ’５を数字「１」とし、文字要素Ｓ７の変換後の換字Ｓ’７を数字「４」とし、文字要素Ｓ８の変換後の換字Ｓ’８を数字「０」とし、文字要素Ｓ９の変換後の換字Ｓ’９を数字「３」とする。
【００５６】
すなわち、換字テーブル生成部３３は、前記文字集合Ｓが数字０〜９で構成される場合、つまり、文字集合Ｓ＝｛Ｓ０，Ｓ１，Ｓ２，・・・・，Ｓｉ，・・・，Ｓ９｝＝｛０，１，２，３，４，５，６，７，８，９｝の数字の集合である場合は、この文字集合Ｓの各文字要素Ｓｉに対応する換字集合Ｓ’＝｛Ｓ’０，Ｓ’１，Ｓ’２，Ｓ’３，Ｓ’４，Ｓ’５，Ｓ’６，Ｓ’７、Ｓ’８，Ｓ’９｝＝｛２，８，９，５，６，１，７，４、０，３｝を生成する。表２には、このように対応付けられた対応関係を示す前記換字テーブルが示されている。この換字テーブルは、後述の換字変換部３４で用いられる。
【００５７】
換字変換部３４は、換字テーブル生成部３３において生成された前記換字テーブルに基づいて前記入力データの各構成要素を換字変換する。具体的には、換字変換部３４は、前記入力データが８桁の数字コードからなる数字コード「１２３４１２３４」の場合、この数字コードを、図５に示されるように、表２に示される前記換字テーブルに基づいて、同じ８桁の数字コード「８９５６８９５６」に変換する。
【００５８】
なお、本実施形態では、換字テーブル生成部３３において、所謂単一換字テーブルが生成される例について説明するが、例えば、複数文字単位で前記文字集合Ｓの各文字要素Ｓｉと別の文字とを対応させた複数文字換字テーブル（多重音字換字テーブルとも称されている。）を生成するものであってもよい。この場合、換字変換部３４は、前記入力データの各構成要素のうち、隣接する２つの構成要素を一単位として、前記換字変換をする。これにより、換字変換によるする処理速度が向上する。もちろん、前記入力データの構成要素のうち、部分的に単一換字デーブルに基づいて単一換字変換をし、部分的に複数文字換字テーブルに基づいて複数文字換字変換をしてもよい。
【００５９】
１文字単位の換字テーブルを使用するか、２文字単位の換字テーブルを使用するかは、予め定められたルールに基づいて決定されるようにしてもよい。
【００６０】
次に、図６を参照して、制御部３０によって実行されるデータ暗号化処理の手順の一例について説明する。図６中のＳ１１、Ｓ１２、・・・は処理手順（ステップ）の番号を表している。各ステップにおける処理が行われることによって、本発明のデータ暗号化方法が具現化される。なお、各ステップの処理は、制御部３０によって、より詳細には制御部３０のＣＰＵがＲＡＭ５１内の暗号化プログラムを実行することにより行われる。ここで、前記暗号化処理におけるステップＳ１２〜Ｓ１４の各ステップが、本発明の暗号化ステップに相当する。ここで、以下のデータ暗号化処理は、暗号化復号サーバー２１において、制御部３０によって、クライアント端末装置１１からの前記入力データが取得されと判定され、更に、暗号に用いられる暗号鍵としての前記変換テーブル及び前記整列順序が換字テーブル記憶部４１及び整列順序記憶部４２に記憶されていると判定された場合に開始される。なお、クライアント端末装置１１から前記入力データが送信されると、暗号化復号サーバー２１の通信Ｉ／Ｆがそれを受け取り、ＲＡＭ５１に一時的に格納する。また、前記変換テーブル及び前記整列順序が記憶されていないと判定されると、制御部３０は、暗号化処理を行わないまま処理を終了するとともに、暗号鍵としてのデータが換字テーブル記憶部４１及び整列順序記憶部４２に格納されていない旨のメッセージを含むエラーメッセージを報知する。
【００６１】
まず、ステップＳ１１では、制御部３０は、前記入力データのデータ長に基づいて、当該データ長が予め定められた閾値以上であるかどうかを判定する。かかる処理は、前記入力データが、後述のステップＳ１２〜Ｓ１４における各処理によって十分なセキュリティ性を担保できるデータ長であるかどうかを判別するために行われる。前記閾値は、例えば、８桁以上の数字列からなる入力データに相当するデータ長に設定されている。もちろん、前記閾値は、任意の値を設定することができる。ここで、前記データ長が前記閾値未満であると判定されると、制御部３０は、暗号化処理を行わないまま処理を終了するとともに、暗号化処理を行っていない旨のメッセージをクライアント端末装置１１に報知する。前記データ長が前記閾値以上の場合は、次のステップＳ１２に進む。
【００６２】
次のステップＳ１３では、制御部３０は、換字テーブル記憶部４１から前記換字テーブルを読み出し、換字変換部３４によって、前記換字テーブルを用いて前記入力データの各構成要素を換字変換する。
【００６３】
その後、ステップＳ１４において、制御部３０は、整列順序記憶部４２から前記整列順序を読み出し、換字変換された後の入力データに対して、前記整列順序にしたがって各構成要素の順序を変換する。これにより、入力データの各構成要素の位置が入れ換えられる。
【００６４】
次のステップＳ１４では、制御部３０は、ステップＳ１２及びＳ１３それぞれの処理回数が予め定められた設定回数に達したかどうかを判定する。具体的は、制御部３０は、前記処理回数をカウントしてＲＡＭ５１に保存しておき、そのカウント値が前記設定回数に達したかどうかによって判定する。制御部３０は、前記処理回数が前記設定回数に達していないと判定した場合は、ステップＳ１４以降の処理を繰り返す。つまり、制御部３０は、ステップＳ１２による換字変換及びステップＳ１３による順序変換を設定回数繰り返す。一方、制御部３０は、前記処理回数が前記設定回数に達していると判定した場合は、前記入力データの暗号化が完了したと判断して、一連の処理を終了する。このような一連のデータ暗号化処理が行われることにより、前記入力データを暗号化した暗号データが生成される。生成された暗号データは、インターネット１５を介してアプリケーションサーバー２２に送られて、その記憶装置（不図示）に格納される。もちろん、前記暗号データが、データベース５３に格納されて保管されてもよい。
【００６５】
このように制御部３０によるデータ暗号処理が行われることによって前記入力データが暗号化されるため、前記入力データの基本情報（入力データの構成要素の種類や入力データのデータ長など）を暗号化後の暗号データに引き継ぐことができる。これにより、アプリケーションサーバー２２におけるアプリケーションプログラムやアプリケーションサーバー２２内の前記記憶装置のデータベース等におけるフィールドのデータ型が文字列型と定義されている場合でも、前記データ型に適合させるための変換を行うことなく、暗号データを前記フィールドに格納することが可能となる。
【００６６】
なお、上述の実施形態では、前記入力データを換字変換（Ｓ１２）してから、その変換後の入力データを順序変換（Ｓ１３）する例について説明したが、本発明はこれに限られない。例えば、前記入力データを順序変換（Ｓ１３）してから、その変換後の入力データを換字変換（Ｓ１２）するようにしてもよい。
【００６７】
また、上述の実施形態では、設定回数に達するまでステップＳ１２及びＳ１３の変換処理を繰り返す例について説明した。この設定回数は任意に定めることが可能である。
【００６８】
また、上述の実施形態では、前記入力データを暗号化する例について説明したが、本発明は、前述のデータ暗号化処理（図６参照）の各手順とは逆の手順で前記暗号データを元の入力データに復号するデータ復号方法と捉えることもできる。具体的には、前記整列順序を用いて前記暗号データを元の整列順序に戻し（変換し）、その後、前記換字テーブルを用いて換字変換前の入力データに戻すことにより、暗号データを元のオリジナルデータである前記入力データに復号することができる。また、この場合、上述の復号を実行可能な機能部としての復号部（不図示）が制御部３０に設けられている。
【００６９】
また、上述の実施形態では、主として数字や欧文字からなる入力データに適用されるデータ暗号化処理について説明したが、本発明はこれに限られない。例えば、日本語で使用される漢字、平仮名、片仮名などを構成要素に含む入力データにも前記データ暗号化処理は適用可能である。ここで、前記入力でデータが日本語を含むものであって、可変長の符号化方式の一例であるＵＴＦ−８またはＵＴＦ−１６で符号化（エンコーディング）されている場合は、所謂文字境界を示すビットの数値を判定して、１〜４バイト単位で位置交換することにより、当該単位で上述の換字変換及び順序変換による暗号化を行うことができる。
【００７０】
また、上述の実施形態では、制御部３０が前記換字テーブル及び前記整列順序を生成する例について説明したが、制御部３０において、前記換字テーブル及び前記整列順序を生成する機能は必須ではない。例えば、暗号化復号サーバー２１におけるデータ暗号化処理に用いられる前記換字テーブル及び前記整列順序を予め生成しておき、これらを換字変換部３４及び順序変換部３６が使用可能なようにデータベース５３や外部の他のサーバー装置に予め格納しておけばよい。この場合、制御部３０は、必要に応じて、データベース５３や他のサーバー装置から前記換字テーブル及び前記整列順序を読み出して、換字テーブル記憶部４１及び整列順序記憶部４２に格納して、暗号化に用いる。したがって、暗号化復号サーバー２１が前記換字テーブル及び前記整列順序を生成する機能を有しない場合は、パディング部３１、ＡＥＳ暗号化部３２、換字テーブル生成部３３、整列順序生成部３５は不要である。
【００７１】
また、上述の実施形態では、入力データをデータ暗号化処理する例について説明したが、例えば、入力データに予め定められた特定の文字や記号などが含まれている場合に、それらの特定の文字や記号を暗号化対象外とし、前記入力データからその特定の文字や記号を除いた文字に対して前記データ暗号化処理を行うようにしてもよい。
【符号の説明】
【００７２】
１０  ：暗号化復号システム
１１：クライアント端末装置
２０：アプリケーションシステム
２１：暗号化復号サーバー
２２：アプリケーションサーバー
３０：制御部
３４：換字変換部
３６：順序変換部
４１：換字テーブル記憶部
４２：整列順序記憶部
４３：共通鍵記憶部
【図１】
2016038557.tif 000005
【図２】
2016038557.tif 000006
【図３】
2016038557.tif 000007
【図４】
2016038557.tif 000008
【図５】
2016038557.tif 000009
【図６】
2016038557.tif 000010