(57)【要約】【課題】データを暗号化したまま携帯端末装置上で処理させることが可能なセキュアな仮想サーバを提供する。【解決手段】暗号化部１０１１は、第１のデータを暗号化して第２のデータを生成する。送信部１０１８は、第２のデータ、及び、第１のデータに対する第１の処理に対応する第２のデータに対する第２の処理の指示を携帯端末１０２に送信する。受信部１０１９は、第２のデータに対する第２の処理の結果を携帯端末１０２から受信する。逆変換部１０１３は、第２の処理の結果を、第１のデータに対する第１の処理の結果に変換する。【選択図】図１
2014232150.tif 000002
【特許請求の範囲】
【請求項１】
携帯端末装置と通信可能に接続され、第１のデータに対する第１の処理の結果を得るための情報処理装置であって、
前記第１のデータを暗号化して第２のデータを生成する暗号化手段と、
前記第２のデータ、及び、前記第１のデータに対する前記第１の処理に対応する前記第２のデータに対する第２の処理の指示を前記携帯通信端末に送信する送信手段と、
前記第２のデータに対する前記第２の処理の結果を前記携帯通信端末から受信する受信手段と、
前記第２の処理の結果を、前記第１のデータに対する前記第１の処理の結果に変換する変換手段とを有することを特徴とする情報処理装置。
【請求項２】
前記暗号化手段は、暗号化関数を用いて、前記第１のデータを暗号化して前記第２のデータを生成し、前記変換手段は、前記暗号化関数の逆関数を用いて、前記第２のデータに対する前記第２の処理である第２の演算処理の結果を、前記第１のデータに対する前記第１の処理である第１の演算処理の結果に変換することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記暗号化手段は、前記第１のデータにデータを追加して前記第２のデータを生成し、前記変換手段は、前記第１のデータに対する前記データの追加パターンに基づいて、前記第２のデータに対する前記第２の処理である第２の検索処理の結果を、前記第１のデータに対する前記第１の処理である第１の検索処理の結果に変換することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
携帯端末装置と通信可能に接続され、第１のデータに対する第１の処理の結果を得るための情報処理装置の制御方法であって、
前記第１のデータを暗号化して第２のデータを生成する暗号化ステップと、
前記第２のデータ、及び、前記第１のデータに対する前記第１の処理に対応する前記第２のデータに対する第２の処理の指示を前記携帯通信端末に送信する送信ステップと、
前記第２のデータに対する前記第２の処理の結果を前記携帯通信端末から受信する受信ステップと、
前記第２の処理の結果を、前記第１のデータに対する前記第１の処理の結果に変換する変換ステップとを有することを特徴とする情報処理装置の制御方法。
【請求項５】
携帯端末装置と通信可能に接続され、第１のデータに対する第１の処理の結果を得るための情報処理装置を制御するコンピュータに実行させるためのプログラムであって、
前記第１のデータを暗号化して第２のデータを生成する暗号化ステップと、
前記第２のデータ、及び、前記第１のデータに対する前記第１の処理に対応する前記第２のデータに対する第２の処理の指示を前記携帯通信端末に送信する送信ステップと、
前記第２のデータに対する前記第２の処理の結果を前記携帯通信端末から受信する受信ステップと、
前記第２の処理の結果を、前記第１のデータに対する前記第１の処理の結果に変換する変換ステップとを前記コンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、携帯端末装置を利用した仮想サーバを実現するための技術に関するものである。
【背景技術】
【０００２】
従来、データセンタにサーバを設置し、サーバの仮想化された領域を企業等に貸し出すデータセンタビジネスが展開されている。データセンタは高度なセキュリティや災害対策を備えており、安全にデータを保管することができる。しかし、データセンタを設置するには、データセンタ建設のための土地の用意、建物の建設、電源の確保、サーバ等の機器購入等、多大なコストが発生し、大きな負担となっていた。
【０００３】
また、世の中にある分散されたコンピュータのリソースをネットワークで接続し、空いているリソースを仮想的に１つの計算機システムのように利用する仮想化技術も普及している。
【０００４】
近年、急速に携帯端末が普及してきており、携帯端末も通信の高速化、ＣＰＵの高速化・マルチコア化、リソースの大容量化が進んできている。これらのリソースは必ずしも全て利用されているものではなく、携帯端末の所有者により利用率や頻度は異なり、また、同じ携帯端末の所有者であっても時間帯によって利用率は大きく異なったりもする。できれば、これらのリソースを有効に利用することが好ましい。特許文献１には、携帯端末を利用した仮想化技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−２３１７５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に開示された技術には、次のような問題がある。先ず、セキュリティ面について考慮されておらず、携帯端末からデータが漏洩する恐れがある。セキュリティ確保のため、データを暗号化することが考えられるが、一般的な暗号化技術を適用してしまうと、暗号化されたデータの演算又は検索処理を実行することができなくなる。
【０００７】
そこで、本発明の目的は、データを暗号化したまま携帯端末装置上で演算又は検索処理させることが可能なセキュアな仮想サーバを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の情報処理装置は、携帯端末装置と通信可能に接続され、第１のデータに対する第１の処理の結果を得るための情報処理装置であって、前記第１のデータを暗号化して第２のデータを生成する暗号化手段と、前記第２のデータ、及び、前記第１のデータに対する前記第１の処理に対応する前記第２のデータに対する第２の処理の指示を前記携帯通信端末に送信する送信手段と、前記第２のデータに対する前記第２の処理の結果を前記携帯通信端末から受信する受信手段と、前記第２の処理の結果を、前記第１のデータに対する前記第１の処理の結果に変換する変換手段とを有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、データを暗号化したまま携帯端末装置上で演算又は検索処理させることが可能なセキュアな仮想サーバを提供することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態に係る情報処理システムの構成を示す図である。
【図２】本発明の実施形態に係る管理サーバのハードウェア構成を示す図である。
【図３】処理対象が数値データである場合における、本発明の実施形態に係る情報処理システムの処理を示すフローチャートである。
【図４】処理対象が文字列データである場合における、本発明の実施形態に係る情報処理システムの処理を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明を適用した好適な実施形態を、添付図面を参照しながら詳細に説明する。
【００１２】
図１は、本発明の実施形態に係る情報処理システムの構成を示す図である。図１に示すように、本実施形態に係る情報処理システムは、本情報処理システムを管理及び制御するための管理サーバ１０１、例えば一般ユーザが所持する複数の携帯端末１０２（１０２ａ、１０２ｂ、・・・）、及び、データセンタ（ＤＣ）業者側に設置されるＤＣ業者サーバ１０３を備える。管理サーバ１０１とＤＣ業者サーバ１０３とは専用のネットワーク又はインターネット等を介して接続され、管理サーバ１０１と各携帯端末１０２とはインターネット及び無線通信回線を介して接続される。管理サーバ１０１は、ＤＣ業者サーバ１０３を介して受信した企業のデータ、又は、企業から直接受信したデータを、世の中に分散された複数の携帯端末１０２の記録媒体１０２１に保管させる。なお、携帯端末１０２の具体例としては、携帯電話、スマートフォン、タブレット端末、車載端末、及び、ノート型ＰＣ等が挙げられる。また、図１では、データの保管先として携帯端末１０２のみを示しているが、固定的に設置されたＰＣをデータの保管先として含めてもよい。
【００１３】
図１に示すように、管理サーバ１０１は、分割部１０１０、暗号化部１０１１、関数変換部１０１２、逆変換部１０１３、暗号化部１０１４、冗長化部１０１５、検索指示変換部１０１６、検索結果変換部１０１７、送信部１０１８及び受信部１０１９を備える。これらのうち、分割部１０１０、暗号化部１０１１、関数変換部１０１２、逆変換部１０１３、送信部１０１８及び受信部１０１９は、処理対象が数値データである場合に機能する構成である。また、暗号化部１０１４、冗長化部１０１５、検索指示変換部１０１６、検索結果変換部１０１７、送信部１０１８及び受信部１０１９は、処理対象が文字列データである場合に機能する構成である。
【００１４】
先ず、処理対象が数値データである場合に機能する構成について説明する。分割部１０１０は、処理対象の数値データ（原データ）を複数のデータユニット（第１の数値データ）に分割する。暗号化部１０１１は、分割部１０１０により分割された第１の数値データを、暗号化関数を用いて暗号化する。これにより、暗号化された複数の第２の数値データが生成される。関数変換部１０１２は、第１の数値データの演算関数（第１の演算関数）を、第２の数値データの演算関数（第２の演算関数）に変換する。送信部１０１８は、暗号化された第２の数値データと、第２の数値データを第２の演算関数で演算する旨の演算指示とを携帯端末１０２に送信する。受信部１０１９は、第２の演算関数で第２の数値データを演算した結果を携帯端末１０２から受信する。逆変換部１０１３は、暗号化関数の逆関数を用いて演算結果を逆変換することにより、第１の数値データを第１の演算関数で演算した結果を得る。
【００１５】
次に、処理対象が文字列データである場合に機能する構成について説明する。暗号化部１０１４は、処理対象の文字列データ（第１の文字列データ（原データ））を１文字単位に暗号化する。これにより、暗号化された第２の文字列データが生成される。冗長化部１０１５は、第２の文字列データの特定の位置に文字データを追加することにより、第３の文字列データを生成する。追加された文字データは、第３の文字データから出現頻度分析により第１の文字データを推測することを困難とするような文字の出現頻度をもった文字集合から作成することが好ましい。検索指示変換部１０１６は、第１の文字列データに対する検索指示を、第２の文字列データに対する検索指示に変換し、さらに、第２の文字列データに対する検索指示を、第３の文字列データに対する検索指示に変換する。送信部１０１８は、第３の文字列データと、第３の文字列データに対する検索指示とを携帯端末１０２に送信する。受信部１０１９は、第３の文字列データに対する検索結果を携帯端末１０２から受信する。検索結果変換部１０１７は、第３の文字列データに対する検索結果から冗長部分の文字に起因する検索結果を排除することにより、第１の文字列データに対する第１の検索文字列の検索結果を得る。
【００１６】
図２は、本実施形態に係る管理サーバ１０１のハードウェア構成を示す図である。図２において、ＣＰＵ２０１は、システムバスに接続される各デバイスやコントローラを統括的に制御する。ＲＯＭ２０３又はＨＤ（ハードディスク）２０９には、ＣＰＵ２０１の制御プログラムであるＢＩＯＳ（Basic Input / Output System）やオペレーティングシステムプログラム、管理サーバ１０１が実行する例えば図３のステップＳ１０１〜Ｓ１０６及び図４のステップＳ１１１〜Ｓ１１８に示す処理のプログラム等が記憶されている。
【００１７】
なお、図２の例では、ＨＤ２０９は、管理サーバ１０１の内部に配置された構成としているが、他の実施形態としてＨＤ２０９に相当する構成（例えば、ＤＢサーバや外部ストレージ装置）が管理サーバ１０１の外部に配置された構成としてもよい。また、本実施形態に係る例えば図３のステップＳ１０１〜Ｓ１０６及び図４のステップＳ１１１〜Ｓ１１８に示す処理を行うためのプログラムは、ＣＤ−ＲＯＭ等のコンピュータ読み取り可能な記録媒体に記録され、それらの記録媒体から供給される構成としてもよいし、インターネット等の通信媒体を介して供給される構成としてもよい。
【００１８】
ＲＡＭ２０２は、ＣＰＵ２０１の主メモリ、ワークメモリ等として機能する。ＣＰＵ２０１は処理の実行に際して必要なプログラム等をＲＡＭ２０２にロードして、プログラムを実行することで各種動作を実現するものである。
【００１９】
ＨＤ２０９は、外部メモリとして機能する。ＣＰＵ２０１は、処理の実行に際して必要なプログラム等をＲＡＭ２０２にロードして、プログラムを実行することで各種動作を実現するものである。
【００２０】
ディスクコントローラ２０７は、ＨＤ２０９等の外部メモリへのアクセスを制御する。通信Ｉ／Ｆコントローラ２０６は、インターネットやＷＡＮ、ＬＡＮと接続し、例えばＴＣＰ／ＩＰによって外部との通信を制御するものである。
【００２１】
ディスプレイコントローラ２１０は、ディスプレイ２１１における画像表示を制御する。ＫＢコントローラ２０４は、ＫＢ（キーボード）２０５からの操作入力を受け付け、ＣＰＵ２０１に対して送信する。なお、図示していないが、ＫＢ２０５の他に、マウス等のポインティングデバイスもユーザの操作手段として管理サーバ１０１に適用可能である。
【００２２】
なお、図１における１０１０〜１０１９の構成は、例えばＨＤ２０９内に記憶され、必要に応じてＲＡＭ２０２にロードされるプログラム及びそれを実行するＣＰＵ２０１によって実現される構成である。
【００２３】
次に、図３を参照しながら、処理対象が数値データである場合における、本実施形態に係る情報処理システムの処理について説明する。
【００２４】
ステップＳ１０１において、分割部１０１０は、処理対象の数値データ（原データ）を複数のデータユニットに分割する。ステップＳ１０２において、暗号化部１０１１は、ステップＳ１０１で生成したデータユニットである複数の第１の数値データを暗号化関数で暗号化することにより、複数の第２の数値データを生成する。
【００２５】
ステップＳ１０３において、関数変換部１０１２は、第１の数値データの演算関数（第１の演算関数）を、第２の数値データの演算関数（第２の演算関数）に変換する。ステップＳ１０４において、送信部１０１８は、第２の数値データとともに、第２の数値データを第２の演算関数で演算する旨の演算指示を携帯端末１０２に対して送信する。
【００２６】
ステップＳ２０１において、携帯端末１０２は、第２の数値データ及び演算指示を管理サーバ１０１から受信する。ステップＳ２０２において、携帯端末１０２は、管理サーバ１０１からの演算指示に従って、第２の数値データを第２の演算関数で演算することにより演算結果を得る。ステップＳ２０３において、携帯端末１０２は、演算結果を管理サーバ１０１に対して送信する。
【００２７】
ステップＳ１０５において、受信部１０１９は、携帯端末１０２から演算結果を受信する。ステップＳ１０６において、逆変換部１０１３は、ステップＳ１０２で用いた暗号化関数の逆関数を用いて演算結果を逆変換することにより、第１の数値データを第１の演算関数で演算した結果を得る。
【００２８】
以下、図３に示した処理について、第１〜第３の具体例を挙げて説明を行う。先ず、第１の具体例について説明する。第１の具体例では、次のように、暗号化処理の前後で四則演算が保たれる暗号化関数ｆ（）を使用するものとする。
ｆ（ａ＊ｘ＋ｂ＊ｙ）＝ａ＊ｆ（ｘ）＋ｂ＊ｆ（ｙ）
【００２９】
第１の数値データ、及び、第１の数値データを暗号化関数により暗号化した第２の数値データを次のように定義する。
第１の数値データ：ａ、ｂ、ｘ、ｙ
第２の数値データ：ａ、ｂ、ｆ（ｘ）、ｆ（ｙ）
【００３０】
第１の数値データの第１の演算関数、及び、第１の演算関数から変換された、第２の数値データの第２の演算関数を次のように定義する。
第１の演算関数：ａ＊ｘ＋ｂ＊ｙ
第２の演算関数：ａ＊ｆ（ｘ）＋ｂ＊ｆ（ｙ）
【００３１】
即ち、ステップＳ１０４では、第２の数値データ（ａ、ｂ、ｆ（ｘ）、ｆ（ｙ））とともに、第２の数値データを第２の演算関数（ａ＊ｆ（ｘ）＋ｂ＊ｆ（ｙ））で演算する旨の演算指示が管理サーバ１０１から携帯端末１０２に対して送信される。
【００３２】
ステップＳ１０６では、次のように、暗号化関数ｆ（）の逆関数ｆ-1（）を用いて第１の演算結果（ａ＊ｆ（ｘ）＋ｂ＊ｆ（ｙ））が逆変換される。
ｆ-1（ａ＊ｆ（ｘ）＋ｂ＊ｆ（ｙ））＝ｆ-1（ｆ（ａ＊ｘ＋ｂ＊ｙ））＝ａ＊ｘ＋ｂ＊ｙ
これにより、第１の数値データ（ａ、ｂ、ｘ、ｙ）を第１の演算関数（ａ＊ｘ＋ｂ＊ｙ）で演算した結果を得ることができる。
【００３３】
次に、第２の具体例について説明する。第２の具体例では、或る第１の数値データに対し、９９個のランダムな数値データを用意し、それらを成分とする暗号化関数ｆ（）を用いるものとする。例えば、第１の数値データｘに対し、９９個のランダムな数値ｓ１〜ｓ９９を用意して、（ｘ，ｓ１，・・・，ｓ９９）というベクトルを出力ｖとする暗号化関数ｆ（ｘ）を用いるものとする。ｆ（ｘ）の四則演算を各成分の四則演算と定義すれば、暗号化関数ｆ（ｘ）は、明らかに暗号化処理の前後で四則演算を保つ。この例において、暗号化関数ｆ（ｘ）の逆関数ｆ-1（ｖ）は、第２の演算結果の１番目の成分を取り出す関数となる。なお、携帯端末１０２において元の数値データ（第１の数値データ）を見せたくない場合には、例えば、ステップＳ１０２において、ベクトル（ｘ，ｓ１，・・・，ｓ９９）の１番目の成分を定数倍する暗号化関数ｆ（ｘ）を用いて暗号化処理を行い、ステップＳ１０６において、ベクトルの１番目の成分をその定数で割る逆関数ｆ-1（ｖ）を用いて演算結果を逆変換すればよい。
【００３４】
次に、第３の具体例について説明する。第３の具体例では、暗号化関数ｆ（）＝ｅｘｐ（）を用いるものとする。
第１の数値データ、及び、第１の数値データを暗号化関数により暗号化した第２の数値データを次のように定義する。
第１の数値データ：ａ、ｂ、ｘ、ｙ
第２の数値データ：ａ、ｂ、ｆ（ｘ）＝ｅｘｐ（ｘ）、ｆ（ｙ）＝ｅｘｐ（ｙ）
【００３５】
第１の数値データの第１の演算関数、及び、第１の演算関数から変換された、第２の数値データの第２の演算関数を次のように定義する。
第１の演算関数：ａ＊ｘ＋ｂ＊ｙ
第２の演算関数：（ｆ（ｘ）＾ａ）＊（ｆ（ｙ）＾ｂ）
【００３６】
即ち、ステップＳ１０４では、第２の数値データ（ａ、ｂ、ｆ（ｘ）＝ｅｘｐ（ｘ）、ｆ（ｙ）＝ｅｘｐ（ｙ））とともに、第２の数値データを第２の関数（（ｆ（ｘ）＾ａ）＊（ｆ（ｙ）＾ｂ））で演算する旨の演算指示が管理サーバ１０１から携帯端末１０２に対して送信される。
【００３７】
ステップＳ１０６では、次のように、暗号化関数ｆ（）の逆関数ｆ-1（）＝ｌｏｇ（）を用いて、第１の演算結果（（ｆ（ｘ）＾ａ）＊（ｆ（ｙ）＾ｂ））が逆変換される。
ｆ-1（（ｆ（ｘ）＾ａ）＊（ｆ（ｙ）＾ｂ））＝ｌｏｇ（（ｅｘｐ（ｘ）＾ａ）＊（ｅｘｐ（ｙ）＾ｂ））＝ｌｏｇ（ｅｘｐ（ａ＊ｘ＋ｂ＊ｙ））＝ａ＊ｘ＋ｂ＊ｙ
これにより、第１の数値データ（ａ、ｂ、ｘ、ｙ）を第１の演算関数（ａ＊ｘ＋ｂ＊ｙ）で演算した結果を得ることができる。
【００３８】
次に、図４を参照しながら、処理対象が文字列データである場合における、本実施形態に係る情報処理システムの処理について説明する。
【００３９】
ステップＳ１１１において、暗号化部１０１４は、処理対象のデータユニットである第１の文字列データ（原データ）を１文字単位に暗号化して第２の文字列データに変換する。ステップＳ１１２において、冗長化部１０１５は、冗長化文字位置テーブルを用いて、ステップＳ１１１で生成した第２の文字列データの特定の位置に文字データを追加することにより、第３の文字列データを生成する。
【００４０】
ステップＳ１１３において、検索指示変換部１０１６は、検索対象の文字列である第１の検索文字列を１文字単位に暗号化して第２の検索文字列に変換する。ステップＳ１１４において、検索指示変換部１０１６は、第１の文字列に対する第１の検索文字列の検索指示（第１の検索指示）を、第２の文字列に対する第２の検索文字列の検索指示（第２の検索指示）に変換する。
【００４１】
ステップＳ１１５において、検索指示変換部１０１６は、冗長化文字位置テーブルを用いて、第２の検索指示を、第３の文字列に対する第２の検索文字列相当部分の検索指示（第３の検索指示）に変換する。ステップＳ１１６において、送信部１０１８は、第３の文字列と第３の検索指示とを携帯端末１０２に対して送信する。
【００４２】
ステップＳ２１１において、携帯端末１０２は、第３の文字列と第３の検索指示とを管理サーバ１０１から受信する。ステップＳ２１２において、携帯端末１０２は、第３の検索指示に従って、第３の文字列から第２の検索文字列相当部分を検索する。ステップＳ２１３において、携帯端末１０２は、ステップＳ２１２の検索結果を管理サーバ１０１に対して送信する。
【００４３】
ステップＳ１１７において、受信部１０１９は、携帯端末１０２から検索結果を受信する。ステップＳ１１８において、検索結果変換部１０１７は、検索結果と冗長文字列位置テーブルとを比較し、冗長部分の文字に起因する検索結果を排除することにより、第１の文字列に対する第１の検索文字列の検索結果を得る。
【００４４】
以下、図４に示した処理について、第１〜第２の具体例を挙げて説明を行う。ここでは、ステップＳ１１１において、暗号化部１０１４は、あ行→か行、か行→さ行、・・・のように、五十音の子音を１つ移動させて第１の文字列データを１文字単位に暗号化することにより、第２の文字列データを生成する。そして、ステップＳ１１２において、冗長化部１０１３は、冗長化文字位置テーブルを用いて、第２の文字列データに対して１文字毎に偽文字を挿入することにより、第３の文字列データを生成する。これにより、第３の文字列データは、奇数位置が正文字、偶数位置が偽文字となる。例えば、第１の文字列データが「あいうえお」である場合、第２の文字列データは「かきくけこ」となる。また、第１の検索文字列データが「うえ」である場合、第２の検索文字列データは「くけ」となる。そして、冗長化文字位置テーブルにより、第２の文字列データに対して１文字毎に偽文字が挿入されることにより得られる第３の文字列データは、例えば「かくきけくすけせこそ」となる。
【００４５】
なお、第１の検索指示は、「第１の文字列データから１文字目が「う」で２文字目が「え」で始まる文字列の開始位置を検索する」となる。従って、第２の検索指示は、「第２の文字列データから１文字目が「く」で２文字目が「け」で始まる文字列の開始位置を検索する」となり、第３の検索指示は、「第３の文字列データから１文字目が「く」で３文字目が「け」で始まる文字列の開始位置を検索する」となる。ステップＳ２１２における第３の文字列データ「かくきけくすけせこそ」を対象に得られる検索結果は、２文字目及び５文字目となる。但し、第３の文字列データ「かくきけくすけせこそ」の偶数位置は偽文字であるため、ステップＳ１１８において２文字目という検索結果は排除され、５文字目という検索結果だけが採用される。従って、第１の文字列データに対する第１の検索文字列の検索結果は、（５＋１）／２＝３文字目となる。
【００４６】
次に、第２の具体例について説明する。第２の具体例においても、ステップＳ１１１において、暗号化部１０１４は、あ行→か行、か行→さ行、・・・のように、五十音の子音を１つ移動させて第１の文字列データを１文字単位に暗号化することにより、第２の文字列データを生成する。そして、ステップＳ１１２において、冗長化部１０１３は、冗長化文字位置テーブルとして、２文字を４文字に増やすテーブルを使用する。正文字を（１）及び（２）とし、偽文字を●とすると、２文字から４文字に増やすパターンは、以下のように６種類のパターンがある。
第１のパターン：（１）、（２）、●、●
第２のパターン：●、●、（１）、（２）
第３のパターン：●、（１）、（２）、●
第４のパターン：（１）、●、●、（２）
第５のパターン：（１）、●、（２）、●
第６のパターン：●、（１）、●、（２）
ここでは、第１、第３及び第５のパターンを使用して、２文字から４文字に増やすものとする。従って、第２の文字列データは、冗長部１０１３により次のように冗長化される。
（１）、（２）、●、●、●、（３）、（４）、●、（５）、●、（６）、●
【００４７】
例えば、第１の文字列データが「あいうえお」である場合、第２の文字列データは「かきくけこ」になる。また、第１の検索文字列データが「うえ」である場合、第２の検索文字列データは「くけ」になる。そして、冗長化文字位置テーブルにより第２の文字列データを冗長化することにより得られる第３の文字列データは、例えば「かきくくけくけひこふ」となる。なお、ここでは第２の文字列データが５文字であるため、冗長化部１０１３による冗長化パターンのうちの「（６）、●」は削除される。
【００４８】
第１の検索指示は、「第１の文字列データから１文字目が「う」で２文字目が「え」で始まる文字列の開始位置を検索する」となる。従って、第２の検索指示は、「第２の文字列データから１文字目が「く」で２文字目が「け」で始まる文字列の開始位置を検索する」となる。そして、第３の検索指示は、次の（ａ）〜（ｃ）となる。
（ａ）：「第３の文字列データから、１文字目が「く」で２文字目が「け」で始まる文字列の開始位置を検索する」
（ｂ）：「第３の文字列データから、１文字目が「く」で３文字目が「け」で始まる文字列の開始位置を検索する」
（ｃ）：「第３の文字列データから、１文字目が「く」で５文字目が「け」で始まる文字列の開始位置を検索する」
【００４９】
上記第３の検索指示（ａ）〜（ｃ）夫々に対し、ステップＳ２１２では、次の検索結果（ａ）〜（ｃ）が得られる。
（ａ）：４文字目、６文字目
（ｂ）：３文字目
（ｃ）：３文字目
ここで、今回の冗長化パターンは、「（１）、（２）、●、●、●、（３）、（４）、●、（５）、●」であるため、３文字目、４文字目は偽文字として排除され、６文字目が正文字として採用される。そして、ステップＳ１１８において、検索結果変換部１０１７は、上記冗長化パターンを参照することにより、第３の文字列データの６文字目は、第１の文字列データの３文字目であると判定する。
【００５０】
以上のように、本実施形態においては、数値データ又は文字列データを暗号化したまま携帯端末１０２上で処理させることができる。従って、本実施形態によれば、携帯端末１０２からデータが漏洩することなく、セキュアな仮想ストレージを提供することが可能となる。
【００５１】
また、本実施形態では、サービスにおいて予め指定された原データ（第１の数値データ、第１の文字列データ）のセキュリティーレベル及び携帯端末１０２の信頼度に応じて、同一の第２の数値データ又は第３の文字列データを同一の携帯端末１０２に置く期間として、１時間以内、１日以内、１週間以内等と定めてもよい。そして、その期間を超過すると、携帯端末１０２において第２の数値データ又は第３の文字列データを消去し、携帯端末１０２から管理サーバ１０１に対して第２の数値データ又は第３の文字列データを消去した旨を通知するようにしてもよい。なお、上述した携帯端末１０２の信頼度とは、携帯端末１０２と管理サーバ１０１間における１日あたりのネットワーク接続時間、携帯端末１０２の通信速度、及び、携帯端末１０２の充電状況等の携帯端末１０２の稼働状況に応じて定められる値である。
【００５２】
また、本実施形態では、サービスにおいて予め指定された原データ（第１の数値データ、第１の文字列データ）のセキュリティーレベル及び携帯端末１０２の信頼度に応じて、同一の第２の数値データ又は第３の文字列データに対する演算指示の回数として、１回以内、１０回以内、１００回以内等と定めてもよい。そして、その回数を超過すると、管理サーバ１０１から携帯端末１０２に対して演算指示を送信しないようにしてもよい。さらに、同一の第２の数値データ又は第３の文字列データに対する演算指示の回数が例えば３回以上許可されている場合、予め指定された原データ（第１の数値データ、又は、第１の文字列データ）のセキュリティーレベルに応じて、偽の演算指示を１回毎、４回毎、８回毎等、ランダムな間隔で挿入するようにしてもよい。
【００５３】
本実施形態においては、暗号化されたデータ（第２の数値データ、第３の文字列データ）を演算又は検索するため、処理量の増加は避けられないが、複数の携帯端末１０２において分散的に同時に演算させるため、処理時間が増加することはなく、暗号化処理前のデータ（第１の数値データ、第１の文字列データ）を対象とした処理に近い処理速度を得ることができる。即ち、文字列データが処理対象であれば、検索対象となる第１の文字列データを分割した後に暗号化して検索するため、複数の携帯端末１０２における処理の並列性を利用することができる。また、暗号化処理により検索しなければならない文字列のパターンが増えても、複数の携帯端末１０２を用いて処理を並列化すれば問題とならない。また、数値データが処理対象であれば、暗号化処理により演算対象の数値データが増えても、複数の携帯端末１０２における処理の並列性を利用することができる。さらに、真の演算に加えて、偽の演算を不定期に携帯端末１０２に行わせることも、複数の携帯端末１０２における処理の並列性を利用すれば、問題とならない。
【００５４】
例えば、数値データを処理対象とした場合の第２の具体例において、１個の第１の数値データに対し、９９個のランダムな数値データを用意しているため、暗号化処理後の第２の数値データは、第１の数値データの１００倍のデータ量に増加している。しかし、ベクトルの各成分に対する個々の演算は複雑になっておらず、第１の数値データに対する処理時間と同程度となる。１００万個の第１の数値データの和を求める場合、１台の携帯端末１０２で暗号化後の第２の数値データの処理を行うと、１億回の演算となるが、１００台の携帯端末１０２で分散処理を行い、１台の携帯端末１０２では１万個分の暗号化後の第２の数値データの和を求めることとする。これにより、１台の携帯端末１０２での演算回数は１００万回となり、第１の数値データを直接合計する場合と同程度の時間で済むことになる。
【００５５】
また、数値データを処理対象とした場合の第３の具体例において、第１の数値データの暗号化処理に指数関数を用い、暗号化された第２の数値データの演算も指数演算となるため、暗号化された第２の数値データに対する処理の複雑度は増加している。しかし、暗号化により演算すべき第２の数値データの数や演算回数は増えていない。暗号化された第２の数値データに対する処理の複雑度の増加により、携帯端末１０２で１回の演算に１００倍の時間がかかるとし、１００万個の第１の数値データの和を求める場合を考える。１台の携帯端末１０２で暗号化された第２の数値データの処理を行うと、１００倍の時間がかかるが、１００台の携帯端末１０２で分散処理を行い、１台の携帯端末１０２では１万個分の暗号化された第２の数値データの和を求めることとすると、１台の携帯端末１０２におけるデータ処理時間は１倍となり、第１の数値データを直接合計する場合と同程度の時間で済む。
【００５６】
次に、文字列データを処理対象とした場合の第１及び第２の具体例において、第１の文字列データの暗号化処理時に冗長化文字位置テーブルを用いて偽文字を加えているために、第１の文字列データに対する１つの検索条件が、暗号化後の第３の文字列データに対しては複数の検索条件に変換される場合がある。第１の具体例では、変換後も１つの検索条件で済んでいるが、第２の具体例では、３つの検索条件に変換される。一方、検索結果についても冗長化文字位置テーブルにより挿入された偽文字を検索する場合があるため、携帯端末１０２で実行した検索結果から偽文字の検索を排除しなければならない。第１の具体例では１個、第２の具体例では２個を排除している。この排除に関しては、検索結果に対する処理であり、大きな文字列データに対する検索処理に比較して大幅に負荷が軽いため無視できる。暗号化により文字列データの文字数が２倍となり、検査条件が１００倍に変換されるとして、１００万文字の第１の文字列データに対して１回の検索を行う場合を考える。１台の携帯端末１０２で暗号化データの処理を行うと、約２００倍の時間がかかるが、２００台の携帯端末１０２で分散処理を行い、１台の携帯端末１０２では暗号化された２００万文字のうちの１００万文字分に対する１つの検索条件を求めることとすると、１台の携帯端末１０２でのデータ処理時間は１倍となり、第１の文字列データを直接検索する場合と同程度の時間で済む。
【符号の説明】
【００５７】
１０１：管理サーバ、１０２：携帯端末、１０３：ＤＣ業者サーバ、１０１０：分割部、１０１１：暗号化部、１０１２：関数変換部、１０１３：逆変換部、１０１４：暗号化部、１０１５：冗長化部、１０１６：検索指示変換部、１０１７：検索結果変換部、１０１８：送信部、１０１９：受信部
【図１】
2014232150.tif 000003
【図２】
2014232150.tif 000004
【図３】
2014232150.tif 000005
【図４】
2014232150.tif 000006