(57)【要約】【課題】データをより安全に管理することができるデータ処理装置、プログラム、およびデータ処理システムを提供する。【解決手段】管理部２２（通信機能２２ｃ）は、サーバ３０と通信を行い、暗号化および復号に用いる鍵の生成に用いる情報をサーバ３０から受信する。処理部２３（鍵生成機能２３ｂ）は、サーバ３０から受信した情報と、自装置を識別する識別情報とに基づいて鍵を生成する。処理部２３（暗号化機能２３ｃ）は、鍵を用いてデータを暗号化して暗号化データを生成する。【選択図】図２
2012138729.tif 000002
【特許請求の範囲】
【請求項１】
サーバと通信を行い、暗号化および復号に用いる鍵の生成に用いる情報を前記サーバから受信する通信部と、
前記サーバから受信した情報と、自装置を識別する識別情報とに基づいて鍵を生成する鍵生成部と、
前記鍵を用いてデータを暗号化して暗号化データを生成する暗号化処理部と、
を備えたことを特徴とするデータ処理装置。
【請求項２】
前記鍵生成部によって生成された前記鍵を格納する自装置内のメモリをさらに備えたことを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記鍵を用いて前記暗号化データを復号する復号処理部をさらに備えたことを特徴とする請求項１または請求項２に記載のデータ処理装置。
【請求項４】
前記復号処理部は、第１の電子署名と、前記第１の電子署名の署名者を識別する第１の署名者情報とを有し、
第２の電子署名と、前記第２の電子署名の署名者を識別する第２の署名者情報とを有するアプリケーションから要求があった場合に、前記第１の署名者情報と前記第２の署名者情報を比較する比較部をさらに有し、
前記復号処理部は、前記第１の署名者情報と前記第２の署名者情報とが同一であった場合に、前記暗号化データを復号して復号後のデータを、前記要求を発生したアプリケーションに引き渡す
ことを特徴とする請求項３に記載のデータ処理装置。
【請求項５】
前記通信部は、第１の時点で第１の情報を前記サーバから受信し、前記第１の時点よりも後の第２の時点で第２の情報を前記サーバから受信し、
前記鍵生成部は、前記第１の情報と前記識別情報とに基づいて第１の鍵を生成し、前記第２の情報と前記識別情報とに基づいて第２の鍵を生成し、
前記暗号化処理部は、前記第１の鍵を用いてデータを暗号化して第１の暗号化データを生成した後、前記第１の鍵を用いて前記第１の暗号化データを復号したデータを、前記第２の鍵を用いて暗号化して第２の暗号化データを生成する
ことを特徴とする請求項１〜請求項４のいずれか一項に記載のデータ処理装置。
【請求項６】
前記通信部は、前記サーバを起点として確立された通信により前記第２の時点で前記第２の情報を前記サーバから受信することを特徴とする請求項５に記載のデータ処理装置。
【請求項７】
前記通信部は、前記サーバとの通信の際に暗号化通信を行うことを特徴とする請求項１〜請求項６のいずれか一項に記載のデータ処理装置。
【請求項８】
サーバと通信を行い、暗号化および復号に用いる鍵の生成に用いる情報を前記サーバから受信する通信部と、
前記サーバから受信した情報と、自装置を識別する識別情報とに基づいて鍵を生成する鍵生成部と、
前記鍵を用いてデータを暗号化して暗号化データを生成する暗号化処理部と、
としてコンピュータを機能させるためのプログラム。
【請求項９】
前記鍵生成部と前記暗号化処理部と、としてコンピュータを機能させるためのネイティブコードを含むことを特徴とする請求項８に記載のプログラム。
【請求項１０】
難読化が施されていることを特徴とする請求項９に記載のプログラム。
【請求項１１】
互いに通信を行うデータ処理装置とサーバとを備えたデータ処理システムであって、
前記データ処理装置は、
前記サーバと通信を行い、暗号化および復号に用いる鍵の生成に用いる情報を前記サーバから受信する第１の通信部と、
前記サーバから受信した情報と、自装置を識別する識別情報とに基づいて前記鍵を生成する鍵生成部と、
前記鍵を用いてデータを暗号化して暗号化データを生成する暗号化処理部と、
を有し、
前記サーバは、前記データ処理装置と通信を行い、前記鍵の生成に用いる情報を前記データ処理装置へ送信する第２の通信部を有する
ことを特徴とするデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化データを生成する処理を行うデータ処理装置およびデータ処理システムに関する。また、本発明は、本データ処理装置としてコンピュータを機能させるためのプログラムにも関する。
【背景技術】
【０００２】
昨今のスマートフォン等の携帯端末は、Android（登録商標）等のOS（Operating System）を採用し、オープンプラットフォームで開発可能な仕様となっている。また、携帯端末による電子決済の利用やメールの送受信など、端末側で管理する識別情報（IDやパスワード等）を用いてサーバ側が端末のクライアント認証を行う自動連携サービスが求められている。こうしたサービスを実現するには、サーバがクライアント認証を行うための識別情報を端末側で安全に管理する仕組みが求められている。これまで、耐タンパ性を有するTPM（Trusted Platform Module）やICカード等のセキュリティチップの内部で管理される秘密鍵による署名を用いてクライアント認証を行う仕組みが提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−２９０５０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、セキュリティチップを利用する場合には、セキュリティチップが端末に実装されている必要があり、セキュリティチップを持たない端末に安全なデータ管理の機構を設けることができない問題があった。
【０００５】
本発明は、上述した課題に鑑みてなされたものであって、データをより安全に管理することができるデータ処理装置、プログラム、およびデータ処理システムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するためになされたもので、サーバと通信を行い、暗号化および復号に用いる鍵の生成に用いる情報を前記サーバから受信する通信部と、前記サーバから受信した情報と、自装置を識別する識別情報とに基づいて鍵を生成する鍵生成部と、前記鍵を用いてデータを暗号化して暗号化データを生成する暗号化処理部と、を備えたことを特徴とするデータ処理装置である。
【０００７】
また、本発明のデータ処理装置は、前記鍵生成部によって生成された前記鍵を格納する自装置内のメモリをさらに備えたことを特徴とする。
【０００８】
また、本発明のデータ処理装置は、前記鍵を用いて前記暗号化データを復号する復号処理部をさらに備えたことを特徴とする。
【０００９】
また、本発明のデータ処理装置において、前記復号処理部は、第１の電子署名と、前記第１の電子署名の署名者を識別する第１の署名者情報とを有し、第２の電子署名と、前記第２の電子署名の署名者を識別する第２の署名者情報とを有するアプリケーションから要求があった場合に、前記第１の署名者情報と前記第２の署名者情報を比較する比較部をさらに有し、前記復号処理部は、前記第１の署名者情報と前記第２の署名者情報とが同一であった場合に、前記暗号化データを復号して復号後のデータを、前記要求を発生したアプリケーションに引き渡すことを特徴とする。
【００１０】
また、本発明のデータ処理装置において、前記通信部は、第１の時点で第１の情報を前記サーバから受信し、前記第１の時点よりも後の第２の時点で第２の情報を前記サーバから受信し、前記鍵生成部は、前記第１の情報と前記識別情報とに基づいて第１の鍵を生成し、前記第２の情報と前記識別情報とに基づいて第２の鍵を生成し、前記暗号化処理部は、前記第１の鍵を用いてデータを暗号化して第１の暗号化データを生成した後、前記第１の鍵を用いて前記第１の暗号化データを復号したデータを、前記第２の鍵を用いて暗号化して第２の暗号化データを生成することを特徴とする。
【００１１】
また、本発明のデータ処理装置において、前記通信部は、前記サーバを起点として確立された通信により前記第２の時点で前記第２の情報を前記サーバから受信することを特徴とする。
【００１２】
また、本発明のデータ処理装置において、前記通信部は、前記サーバとの通信の際に暗号化通信を行うことを特徴とする。
【００１３】
また、本発明は、サーバと通信を行い、暗号化および復号に用いる鍵の生成に用いる情報を前記サーバから受信する通信部と、前記サーバから受信した情報と、自装置を識別する識別情報とに基づいて鍵を生成する鍵生成部と、前記鍵を用いてデータを暗号化して暗号化データを生成する暗号化処理部と、としてコンピュータを機能させるためのプログラムである。
【００１４】
また、本発明のプログラムは、前記鍵生成部と前記暗号化処理部と、としてコンピュータを機能させるためのネイティブコードを含むことを特徴とする。
【００１５】
また、本発明のプログラムは、難読化が施されていることを特徴とする。
【００１６】
また、本発明は、互いに通信を行うデータ処理装置とサーバとを備えたデータ処理システムであって、前記データ処理装置は、前記サーバと通信を行い、暗号化および復号に用いる鍵の生成に用いる情報を前記サーバから受信する第１の通信部と、前記サーバから受信した情報と、自装置を識別する識別情報とに基づいて前記鍵を生成する鍵生成部と、前記鍵を用いてデータを暗号化して暗号化データを生成する暗号化処理部と、を有し、前記サーバは、前記データ処理装置と通信を行い、前記鍵の生成に用いる情報を前記データ処理装置へ送信する第２の通信部を有することを特徴とするデータ処理システムである。
【発明の効果】
【００１７】
本発明によれば、サーバから受信した情報と、データ処理装置を識別する識別情報とに基づいて鍵を生成することによって、データ処理装置に固有な、推定されにくい鍵を生成することが可能となる。したがって、この鍵を用いてデータを暗号化することによって、データをより安全に管理することができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の一実施形態によるデータ処理装置のハードウェア構成を示すブロック図である。
【図２】本発明の一実施形態によるデータ処理装置の機能構成を示すブロック図である。
【図３】本発明の一実施形態における乱数テーブルの内容を示す参考図である。
【図４】本発明の一実施形態における暗号化処理の手順を示すフローチャートである。
【図５】本発明の一実施形態におけるサーバ処理の手順を示すフローチャートである。
【図６】本発明の一実施形態における鍵生成・暗号化処理の手順を示すフローチャートである。
【図７】本発明の一実施形態におけるアプリケーション認証処理の手順を示すフローチャートである。
【図８】本発明の一実施形態における復号処理の手順を示すフローチャートである。
【図９】本発明の一実施形態における鍵生成・復号処理の手順を示すフローチャートである。
【発明を実施するための形態】
【００１９】
以下、図面を参照し、本発明の実施形態を説明する。図１は、本発明の一実施形態によるデータ処理装置のハードウェア構成を示している。本実施形態のデータ処理装置は、スマートフォン等の携帯端末として構成されている。図１に示すデータ処理装置は、CPU（Central Processing Unit）１、表示部２、操作部３、通信部４、メモリ５、フラッシュメモリ６、メモリインタフェース部７、UIM（User Identity Module Card）カード８、カードインタフェース部９を有する。
【００２０】
CPU１は、ROM５に格納されている各種のプログラムを読み出してメモリ５に読み込み、プログラムの各種命令に従って各種の演算を行い、データ処理装置内の各部を制御する。表示部２は各種の情報を表示する。操作部３は、ユーザが操作する各種操作部材を有する。通信部４は、外部の他の通信装置と通信を行う。メモリ５は、フラッシュメモリ６から読み込まれたプログラムや、CPU１が演算を行った結果等を一時的に記憶する媒体である。
【００２１】
フラッシュメモリ６は、CPU１の動作を規定する各種のプログラムや、データ処理装置内で処理される各種データを記憶する媒体である。フラッシュメモリ６において、ファイル操作が制限されているシステム領域には、データ処理装置のシステムの制御に必要な重要なプログラム等が格納され、システム領域以外の領域には一般の商用Webサイトからダウンロード可能なアプリケーションのプログラム等が格納される。メモリインタフェース部７は、CPU１とフラッシュメモリ６の間でデータの入出力を行う。UIMカード８は、通信を介して各種サービスを利用するのに必要な各種情報を記憶する媒体である。カードインタフェース部９は、CPU１とUIMカード８の間でデータの入出力を行う。
【００２２】
図２は、データ処理装置の機能構成を示している。図１に示すデータ処理装置は、本実施形態のデータ処理機能を実現する処理を行う機能構成として、アプリケーション２０ａ，２０ｂ，２０ｃ、セキュアデータマネージャ２１、認証部２４を有する。また、図１は、データ処理装置と通信を行うサーバ３０の機能構成も示している。データ処理装置とサーバ３０は、本実施形態のデータ処理システムを構成する。
【００２３】
アプリケーション２０ａ，２０ｂ，２０ｃ、セキュアデータマネージャ２１、認証部２４は、CPU１に各種処理を実行させるためのプログラムである。図２では、アプリケーション２０ａ，２０ｂ，２０ｃ、セキュアデータマネージャ２１、認証部２４のプログラムがフラッシュメモリ６からメモリ５に読み込まれて、メモリ５上でアプリケーション２０ａ，２０ｂ，２０ｃ、セキュアデータマネージャ２１、認証部２４が起動している状態が示されている。メモリ５上で起動したこれらのプログラムは、CPU１およびメモリ５の資源を利用して各種処理を行う。
【００２４】
アプリケーション２０ａ，２０ｂ，２０ｃは、アプリケーションの処理として規定された各種の処理を行う。図２では、３つのアプリケーションが起動しているが、データ処理装置で起動するアプリケーションの数は特に３つに限らない。
【００２５】
セキュアデータマネージャ２１は、データの暗号化および復号を行う。本実施形態のセキュアデータマネージャ２１は、アプリケーションによる常駐型のサービスであり、サービスが強制的に終了した場合には、自動的にサービスが再起動される。セキュアデータマネージャ２１は、本実施形態のデータ処理を行うため、管理部２２および処理部２３を有する。
【００２６】
本実施形態のデータ処理装置は、OSとしてAndroid（登録商標）を用いている。セキュアデータマネージャ２１のプログラムは、ファイルの拡張子が.apkであるアプリケーションファイルである。また、セキュアデータマネージャ２１のプログラムは、ファイルの拡張子が.dexであってデータ管理を統括する管理部２２のプログラムと、ファイルの拡張子が.soであって鍵の生成と暗号化および復号を行う処理部２３のプログラムとを有する。
【００２７】
管理部２２は、機能として、要求処理機能２２ａ、識別情報取得機能２２ｂ、通信機能２２ｃを有する。要求処理機能２２ａは、アプリケーション２０ａ，２０ｂ，２０ｃからの各種の要求を処理する機能である。識別情報取得機能２２ｂは、端末毎に固有な識別情報であるIMSI（International Mobile Subscriber Identity）、IMEI（International Mobile Equipment Identity）、Android（登録商標） ID（以下ではOS IDと称す）を取得する機能である。通信機能２２ｃは、図１の通信部４を介してサーバ３０と通信を行う機能である。サーバ３０との通信には暗号通信を用いることが望ましい。また、管理部２２の処理が解読されないようにするため、管理部２２のプログラムに難読化を施すことがより望ましい。
【００２８】
IMEIは、端末の製造元や、機種、シリアル番号等の情報を含む情報であり、フラッシュメモリ６に記録されている。IMSIは、契約者毎にユニークな識別子であり、UIMカード８に記録されている。OS IDは、端末においてOSが最初に起動するときにランダムに生成される64ビットの情報であり、フラッシュメモリ６に記録されている。IMSI、IMEI、OS IDについては、.so形式のプログラムである処理部２３が直接取得することができないため、管理部２２がこれらの識別情報を取得し、処理部２３に引き渡す。
【００２９】
処理部２３は、機能として、識別情報取得機能２３ａ、鍵生成機能２３ｂ、暗号化機能２３ｃ、復号機能２３ｄを有する。識別情報取得機能２３ａは、端末毎に固有な識別情報であるDevice IDを取得する機能である。本実施形態のDevice IDは、例えばMAC（Media Access Control address）アドレスであり、通信部４が保持している。鍵生成機能２３ｂは、データの暗号化および復号に用いる鍵（秘密鍵）を生成する機能である。暗号化機能２３ｃは、鍵生成機能２３ｂにより生成した鍵を用いてデータを暗号化し、暗号化データを生成する機能である。復号機能２３ｄは、鍵生成機能２３ｂにより生成した鍵を用いて暗号化データを復号する機能である。
【００３０】
処理部２３のプログラムは、逆コンパイルが困難なネイティブコード（機械語）で構成されている。処理部２３の処理が解読されないようにするため、処理部２３のプログラムをネイティブコードで構成するだけでなく、処理部２３のプログラムに難読化を施すことがより望ましい。JNI（Java（登録商標） Native Interface）には、.so形式のファイルを、それを利用する.apk形式のファイルからのみ呼び出せる仕組みが設けられている。このため、.apk形式の偽のファイルから処理部２３のプログラムを呼び出すことを防ぐことができる。
【００３１】
本実施形態の処理部２３は、端末固有の情報であるIMSI、IMEI、OS ID、Device IDと、サーバ３０が生成する乱数とを用いて鍵を生成し、生成した鍵を用いて暗号化および復号を行う。このように、端末固有の情報と乱数との組み合わせを用いて鍵を生成することによって、端末に固有な、推定されにくい鍵を生成することが可能となる。この鍵を用いてデータを暗号化することによって、データ処理装置がセキュリティチップを持たなくても、データを安全に管理することができる。
【００３２】
認証部２４は、アプリケーション２０ａ，２０ｂ，２０ｃからセキュアデータマネージャ２１に発行される要求を監視し、アプリケーション２０ａ，２０ｂ，２０ｃからセキュアデータマネージャ２１に対して暗号化データを復号する要求があったときに、信頼されたアプリケーションのみに復号後のデータを提供するため、アプリケーション２０ａ，２０ｂ，２０ｃの認証を行う。この認証には、Android（登録商標）フレームワークであるContent ProviderにおけるSignature認証を利用する。認証部２４は、OSの機能の一部として構成することが可能である。
【００３３】
サーバ３０は、通信部３１、制御部３２、記憶部３３を有する。通信部３１は、データ処理装置と通信を行う。制御部３２は、通信部３１が行う通信を制御するほか、データ処理装置が鍵の生成に用いる乱数を生成する。記憶部３３は、データ処理装置の識別情報と、そのデータ処理装置に提供する乱数とを関連付けた乱数テーブルのほか、制御部３２によって処理される各種のデータを記憶する。図３は乱数テーブルの内容の一例を示している。図３に示すように、データ処理装置の識別情報３００と、生成した乱数３１０と、乱数の生成日時３２０とが関連付けられて登録されている。
【００３４】
次に、データ処理装置の動作を説明する。本実施形態では、アプリケーション２０ａ，２０ｂ，２０ｃのいずれかがセキュアデータマネージャ２１に対して、データを暗号化する要求を行ったときの動作、および暗号化データを復号する要求を行ったときの動作を説明する。セキュアデータマネージャ２１が処理するデータは適宜メモリ５に格納され、処理の終了後、適宜メモリ５から消去されるが、以下ではメモリ５とのデータの入出力を省略して説明を行う場合がある。
【００３５】
まず、アプリケーションがセキュアデータマネージャ２１に対して、データを暗号化する要求を行ったときの動作を説明する。アプリケーションは、操作部３を介してユーザがパスワードやID等の秘密情報を入力したときなどのタイミングで、セキュアデータマネージャ２１に対して、データを暗号化する要求を行う。セキュアデータマネージャ２１の管理部２２は、この要求を受け付け、図４に示す暗号化処理を開始する。
【００３６】
管理部２２（要求処理機能２２ａ）は、要求を行ったアプリケーションから処理対象のデータを取得し、メモリ５に格納する（ステップＳ１００）。続いて、管理部２２（識別情報取得機能２２ｂ）は、識別情報（IMSI、IMEI、OS ID）を取得する（ステップＳ１０５）。識別情報の取得後、管理部２２（通信機能２２ｃ）は、サーバ３０と通信を行い、鍵の生成に使用する乱数をサーバ３０に要求する乱数要求をサーバ３０へ送信する（ステップＳ１１０）。この乱数要求には、データ処理装置の識別情報として、例えばIMEIが含まれる。なお、サーバ３０と通信を行うための情報（接続先情報等を含む）はフラッシュメモリ６に予め格納されているものとする。
【００３７】
図５は、サーバ３０が行う処理を示している。サーバ３０の制御部３２は、通信部３１を介してデータ処理装置から乱数要求を受信すると（ステップＳ２００）、記憶部３３から乱数テーブルを読み出し、乱数要求に含まれるデータ処理装置の識別情報と一致する識別情報を乱数テーブルから検索する（ステップＳ２０５）。制御部３２は、検索の結果、乱数要求に含まれるデータ処理装置の識別情報と一致する識別情報が乱数テーブルに存在したか否かを判定する（ステップＳ２１０）。
【００３８】
乱数要求に含まれるデータ処理装置の識別情報と一致する識別情報が乱数テーブルに存在している場合、処理はステップＳ２２０に進む。また、乱数要求に含まれるデータ処理装置の識別情報と一致する識別情報が乱数テーブルに存在しなかった場合、制御部３２は新たに乱数を生成し、乱数要求に含まれるデータ処理装置の識別情報と、生成した乱数と、乱数を生成した日時とを乱数テーブルに登録する（ステップＳ２１５）。
【００３９】
続いて、制御部３２は、乱数テーブルから、乱数要求に含まれるデータ処理装置の識別情報と一致する識別情報に関連付けられている乱数生成日時を取得し、その乱数生成日時から現時点までの時間が有効期限の範囲内であるか否かを判定する（ステップＳ２２０）。乱数生成日時から現時点までの時間が有効期限の範囲内である場合、制御部３２は、乱数テーブルから、乱数要求に含まれるデータ処理装置の識別情報と一致する識別情報に関連付けられている乱数を取得し、その乱数を含む応答を生成し、通信部３１を介して、乱数要求の送信元のデータ処理装置へ応答を送信する（ステップＳ２２５）。応答の送信後、サーバ３０の処理が終了する。
【００４０】
また、乱数生成日時から現時点までの時間が有効期限の範囲内でない場合、制御部３２は、新たな乱数を生成する（ステップＳ２３０）。続いて、制御部３２は、乱数テーブルから、乱数要求に含まれるデータ処理装置の識別情報と一致する識別情報に関連付けられている乱数（旧乱数）を取得し、その旧乱数と、新たに生成した乱数（新乱数）とを含む応答を生成し、通信部３１を介して、乱数要求の送信元のデータ処理装置へ応答を送信する（ステップＳ２３５）。応答を構成する通信フレームのデータ領域に新乱数と旧乱数のそれぞれに対応したフィールドを設けたり、新乱数と旧乱数のそれぞれに対して両者を区別するフラグを付加したりすることによって、データ処理装置は応答内の新乱数と旧乱数を識別することが可能となる。
【００４１】
応答の送信後、制御部３２は、乱数テーブルにおいて、旧乱数を削除し、ステップＳ２３０で生成した新乱数を登録する（ステップＳ２４０）。新乱数の登録の終了後、サーバ３０の処理が終了する。
【００４２】
本実施形態では、同じ乱数を使い続けるのではなく、乱数に有効期限を設け、有効期限を超過した乱数を変更する管理形態をとっている。つまり、本実施形態では、同じ鍵を使い続けるのではなく、乱数の変更に基づいて鍵を変更する管理形態をとっている。後述するが、データ処理装置は、旧乱数を用いて生成した鍵で暗号化した暗号化データを、旧乱数を用いて生成した鍵で復号し、新乱数を用いて生成した鍵で再度データを暗号化する。このように、乱数の更新に基づく鍵の更新および暗号化データの更新を行うことによって、鍵の推定をより困難にすることができる。
【００４３】
図４に示す暗号化処理の説明に戻る。セキュアデータマネージャ２１の管理部２２（通信機能２２ｃ）はサーバ３０から応答を受信する（ステップＳ１１５）。応答の受信後、管理部２２は処理部２３に処理を引き渡す。処理部２３（識別情報取得機能２３ａ）は、識別情報（Device ID）を取得する（ステップＳ１２０）。全ての識別情報を管理部２２が取得するのではなく、一部の識別情報については、ネイティブコードで構成されたプログラムによる処理部２３が取得することによって、鍵の推定をより困難にすることができる。続いて、処理部２３（鍵生成機能２３ｂ、暗号化機能２３ｃ）は鍵生成・暗号化処理を行う（ステップＳ１２５）。
【００４４】
図６は、鍵生成・暗号化処理を示している。処理部２３（鍵生成機能２３ｂ）は、サーバ３０から受信した応答に新乱数が含まれているか否かを判定する（ステップＳ３００）。サーバ３０からの応答に新乱数が含まれている場合、処理部２３（鍵生成機能２３ｂ）は、新乱数と、ステップＳ１０５およびステップＳ１２０で取得した識別情報とを用いて鍵を生成する（ステップＳ３０５）。
【００４５】
暗号化アルゴリズムには、例えばAES（Advanced Encryption Standard）を用いる。鍵長は、128ビット、192ビット、256ビットの中から選択することが可能である。鍵の生成に用いる識別情報は１つだけでもよいが、鍵の推定をより困難にするため、複数の識別情報を組み合わせて用いることがより望ましい。本実施形態では、複数の識別情報と乱数の排他的論理和を用いる。
【００４６】
サーバ３０からの応答に新乱数が含まれていない場合、処理部２３（鍵生成機能２３ｂ）は、応答に含まれている旧乱数と、ステップＳ１０５およびステップＳ１２０で取得した識別情報とを用いて鍵を生成する（ステップＳ３１０）。ステップＳ３０５またはステップＳ３１０における鍵の生成後、処理部２３（鍵生成機能２３ｂ）は、生成した鍵をメモリ５に格納する（ステップＳ３１５）。
【００４７】
続いて、処理部２３（暗号化機能２３ｃ）は、メモリ５に格納されている鍵を用いて、メモリ５に格納されている処理対象のデータ（ステップＳ１００で取得したデータ）を暗号化し、暗号化データを生成する（ステップＳ３２０）。暗号化の終了後、処理部２３（暗号化機能２３ｃ）はメモリ５から鍵を消去する（ステップＳ３２５）。鍵の消去後、鍵生成・暗号化処理が終了する。
【００４８】
鍵生成・暗号化処理の終了後、処理部２３（暗号化機能２３ｃ）は、ステップＳ３２０で生成した暗号化データをフラッシュメモリ６に保存する（ステップＳ１３０）。暗号化データの保存後、暗号化処理が終了する。
【００４９】
本実施形態では、暗号化処理時に生成された鍵はメモリ５上でのみ管理されるので、鍵の推定をより困難にすることができる。また、データの暗号化の終了直後に鍵をメモリ５から消去することによって、鍵がメモリ５に存在している時間を短くし、鍵の推定をより困難にすることができる。また、サーバ３０からの応答に新乱数が含まれる場合に新乱数を用いて鍵を生成することによって、鍵の推定をより困難にすることができる。
【００５０】
次に、アプリケーションがセキュアデータマネージャ２１に対して、暗号化データを復号する要求を行ったときの動作を説明する。アプリケーションは、サーバによるクライアント認証のための秘密情報を送信するための処理を行うなどのタイミングで、セキュアデータマネージャ２１に対して、暗号化データを復号する要求を行う。認証部２４は、アプリケーションからセキュアデータマネージャ２１への要求を監視しており、暗号化データを復号する要求に基づいて、図７に示すアプリケーション認証処理を開始する。
【００５１】
なお、以下の処理の前提として、各アプリケーションは、電子署名と、その電子署名への署名を行った署名者を識別する署名者情報との組をメモリ５に保持しているものとする。また、セキュアデータマネージャ２１の処理部２３も、電子署名と署名者情報との組をメモリ５に保持しているものとする。
【００５２】
認証部２４は、要求元のアプリケーションを識別し（ステップＳ４００）、要求元のアプリケーションから署名者情報を取得する（ステップＳ４０５）。同様に、認証部２４は、要求先のアプリケーションであるセキュアデータマネージャ２１を識別し（ステップＳ４１０）、要求先のアプリケーションであるセキュアデータマネージャ２１から署名者情報を取得する（ステップＳ４１５）。
【００５３】
続いて、認証部２４は、ステップＳ４０５で取得した署名者情報と、ステップＳ４１５で取得した署名者情報とを比較し、両者が同一であるか否かを判定する（ステップＳ４２０）。両者が同一である場合、認証部２４は、要求先のアプリケーションであるセキュアデータマネージャ２１に処理を引き渡し（ステップＳ４２５）、アプリケーション認証処理を終了する。また、両者が同一でない場合、認証部２４は、要求元のアプリケーションにエラーコードを返し（ステップＳ４３０）、アプリケーション認証処理を終了する。
【００５４】
認証部２４から処理が引き渡されたセキュアデータマネージャ２１の管理部２２は、図８に示す復号処理を開始する。管理部２２（識別情報取得機能２２ｂ）は、識別情報（IMSI、IMEI、OS ID）を取得する（ステップＳ５００）。識別情報の取得後、管理部２２（通信機能２２ｃ）は、サーバ３０と通信を行い、鍵の生成に使用する乱数をサーバ３０に要求する乱数要求をサーバ３０へ送信する（ステップＳ５０５）。この乱数要求には、データ処理装置の識別情報として、例えばIMEIが含まれる。ステップＳ５００〜Ｓ５０５の処理は図４のステップＳ１０５〜Ｓ１１０の処理と同様である。
【００５５】
続いて、サーバ３０において、図５に示した処理が行われ、乱数要求に対する応答が送信される。セキュアデータマネージャ２１の管理部２２（通信機能２２ｃ）はサーバ３０から応答を受信する（ステップＳ５１０）。応答の受信後、管理部２２は処理部２３に処理を引き渡す。処理部２３（識別情報取得機能２３ａ）は、識別情報（Device ID）を取得する（ステップＳ５１５）。ステップＳ５１０〜Ｓ５１５の処理は図４のステップＳ１１５〜Ｓ１２０の処理と同様である。続いて、処理部２３（鍵生成機能２３ｂ、復号機能２３ｄ）は鍵生成・復号処理を行う（ステップＳ５２０）。
【００５６】
図９は、鍵生成・復号処理を示している。処理部２３（鍵生成機能２３ｂ）は、サーバ３０から受信した応答に含まれる旧乱数と、ステップＳ５００およびステップＳ５１５で取得した識別情報とを用いて鍵を生成する（ステップＳ６００）。このとき、複数の識別情報と旧乱数の排他的論理和を用いて鍵が生成される。鍵の生成後、処理部２３（鍵生成機能２３ｂ）は、生成した鍵をメモリ５に格納する（ステップＳ６０５）。
【００５７】
続いて、処理部２３（暗号化機能２３ｃ）は、フラッシュメモリ６から暗号化データを読み出し、メモリ５に格納されている鍵を用いて暗号化データを復号する（ステップＳ６１０）。復号の終了後、処理部２３（暗号化機能２３ｃ）はメモリ５から鍵を消去する（ステップＳ６１５）。
【００５８】
鍵の消去後、処理部２３（鍵生成機能２３ｂ）は、サーバ３０から受信した応答に新乱数が含まれているか否かを判定する（ステップＳ６２０）。サーバ３０からの応答に新乱数が含まれている場合、処理部２３（鍵生成機能２３ｂ）は、新乱数と、ステップＳ５００およびステップＳ５１５で取得した識別情報とを用いて鍵を生成する（ステップＳ６２５）。このとき、複数の識別情報と新乱数の排他的論理和を用いて鍵が生成される。鍵の生成後、処理部２３（鍵生成機能２３ｂ）は、生成した鍵をメモリ５に格納する（ステップＳ６３０）。
【００５９】
続いて、処理部２３（暗号化機能２３ｃ）は、メモリ５に格納されている鍵を用いて、ステップＳ６１０で復号したデータを暗号化し、暗号化データを生成する（ステップＳ６３５）。暗号化の終了後、処理部２３（暗号化機能２３ｃ）はメモリ５から鍵を消去し（ステップＳ６４０）、フラッシュメモリ６に格納されている暗号化データを消去する（ステップＳ６４５）。
【００６０】
暗号化データの消去後、処理部２３（暗号化機能２３ｃ）は、ステップＳ６３５で生成した暗号化データをフラッシュメモリ６に保存する（ステップＳ６５０）。暗号化データの保存後、鍵生成・復号処理が終了する。また、サーバ３０からの応答に新乱数が含まれていない場合、鍵生成・復号処理が終了する。
【００６１】
鍵生成・復号処理の終了後、処理部２３は管理部２２に処理を引き渡す。管理部２２（要求処理機能２２ａ）は、暗号化データを復号する要求の要求元であるアプリケーションに復号後のデータを引き渡す（ステップＳ５２５）。復号後のデータがアプリケーションに引き渡された後、復号処理が終了する。
【００６２】
本実施形態では、復号処理時に生成された鍵はメモリ５上でのみ管理されるので、鍵の推定をより困難にすることができる。また、暗号化データの復号の終了直後に鍵をメモリ５から消去することによって、鍵がメモリ５に存在している時間を短くし、鍵の推定をより困難にすることができる。また、サーバ３０からの応答に新乱数が含まれる場合に、新乱数を用いて生成した鍵を用いて新たに暗号化データを生成し、古い暗号化データをフラッシュメモリ６から消去することによって、鍵の推定をより困難にすると共に、暗号化データをより安全に管理することができる。
【００６３】
ユーザがデータ処理装置を紛失した場合等には、サーバ３０の管理者に紛失等が通知される。この通知に基づいて、サーバ３０が管理する乱数テーブルにおいて、この通知に関係する情報に対して特定のフラグが付加される。サーバ３０は、図５に示した処理を行う際、乱数要求に含まれる識別情報と一致する識別情報にこのフラグが付加されていれば、以降の処理を中止する。これによって、データ処理装置に乱数が提供されなくなるため、データ処理装置は暗号化データを復号することができない。したがって、悪意のユーザがデータ処理装置を不正に利用して暗号化データを復号することによる重要情報の漏洩を防止することができる。
【００６４】
なお、図４〜図９に示した処理に関して、本発明の効果が得られる範囲内で、適宜ステップの順番を変更してもよい。
【００６５】
次に、本実施形態の変形例を説明する。上記の説明では、データ処理装置からの乱数要求に基づいてサーバ３０が乱数の有効期限の判定を行っているが、サーバ３０が、データ処理装置からの乱数要求とは独立に乱数の有効期限の判定を行い、有効期限の切れた乱数を更新するようにしてもよい。以下では、この場合の動作の一例を説明する。
【００６６】
ユーザがデータ処理装置を紛失した等によりサーバ３０の管理者に紛失等が通知されたタイミング、あるいは定期的な監視のタイミングでサーバ３０の制御部３２は以下の処理を行う。ユーザが紛失したデータ処理装置を特定可能な場合等には、乱数テーブル内の特定の識別情報に関して処理が行われる。また、全てのデータ処理装置を対象とする場合には、乱数テーブル内の全ての識別情報に関して個別に処理が行われる。まず、制御部３２は、乱数テーブルから、処理対象の識別情報に関連付けられた乱数生成日時を取得し、その乱数生成日時から現時点までの時間が有効期限の範囲内であるか否かを判定する。この処理は、図５のステップＳ２２０に対応している。
【００６７】
乱数生成日時から現時点までの時間が有効期限の範囲内である場合、制御部３２は、乱数の有効期限の判定に関する処理を再度行う。また、乱数生成日時から現時点までの時間が有効期限の範囲内でない場合、制御部３２は、新たな乱数を生成し、乱数テーブルから、処理対象の識別情報に関連付けられている乱数（旧乱数）を取得し、その旧乱数と、新たに生成した乱数（新乱数）とを含むメッセージを生成し、通信部３１を介して、処理対象の識別情報に対応するデータ処理装置へメッセージを送信する。メッセージの送信後、制御部３２は、乱数テーブルにおいて、旧乱数を削除し、新たに生成した新乱数を登録する。新乱数の登録の終了後、サーバ３０の処理が終了する、または乱数の有効期限の判定に関する処理が再度行われる。乱数生成日時から現時点までの時間が有効期限の範囲内でない場合の処理は、図５のステップＳ２３０〜Ｓ２４０に対応している。
【００６８】
データ処理装置が乱数要求を送信する場合には、データ処理装置が起点となってサーバ３０との通信セッション（接続）を確立し、サーバ３０から応答を受信するまで通信セッション（接続）を維持する。これに対して、上記の処理では、サーバ３０が起点となってデータ処理装置と通信セッション（接続）を確立する必要がある。このため、上記のメッセージの送信には、プッシュ型の通信が利用される。例えば、携帯電話サービスで提供されているSMS（Short Message Service）や、Android（登録商標）フレームワークで提供されているC2DM（Cloud to Device Messaging）を利用することが可能である。
【００６９】
サーバ３０から上記のメッセージを受信したデータ処理装置は、図８のステップＳ５００，Ｓ５１５，Ｓ５２０と同様の処理を行うことにより、新乱数と識別情報を用いて生成した鍵で新たに暗号化データを生成してフラッシュメモリ６に保存し、古い暗号化データをフラッシュメモリ６から消去する。上記の処理によって、乱数の更新に基づく鍵の更新および暗号化データの更新を行うタイミングをサーバ３０が管理することが可能となる。このため、鍵の更新および暗号化データの更新に対する即時性が増す。
【００７０】
本実施形態のデータ処理装置は、本実施形態のデータ処理を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませ、実行させることで実現することが可能である。
【００７１】
ここで、「コンピュータ」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【００７２】
また、上述したプログラムは、このプログラムを記憶装置等に格納したコンピュータから、伝送媒体を介して、あるいは伝送媒体中の伝送波により他のコンピュータに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように、情報を伝送する機能を有する媒体のことをいう。また、上述したプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能を、コンピュータに既に記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【００７３】
上述したように、本実施形態によれば、サーバから受信した情報（乱数）と、データ処理装置を識別する識別情報（IMSI、IMEI、OS ID、Device ID）とに基づいて鍵を生成することによって、サーバ３０単体もしくはデータ処理装置単体で鍵を生成することを防ぐことが可能となり、データ処理装置に固有な、推定されにくい鍵を生成することが可能となる。したがって、この鍵を用いてデータを暗号化することによって、セキュリティチップを持たなくても、データをより安全に管理することができる。また、複数の識別情報を組み合わせることによって、鍵の推定をより困難にすることができる。
【００７４】
また、鍵をメモリ５上でのみ管理することによって、鍵の推定を困難にすることができる。さらに、メモリ５に鍵を長時間格納せず、暗号化の終了後にメモリ５から鍵を消去することによって、鍵の推定をより困難にすることができる。さらに、暗号化データを復号する際も、鍵を生成し、生成した鍵で暗号化データを復号し、復号の終了後にメモリ５から鍵を消去することによって、鍵の推定をより困難にすることができる。
【００７５】
また、アプリケーションから暗号化データの復号の要求があった場合に、アプリケーションの認証を行うことによって、信頼されたアプリケーションのみに復号後のデータを提供することができる。
【００７６】
また、旧乱数を用いて生成した鍵で暗号化した暗号化データを、旧乱数を用いて生成した鍵で復号し、新乱数を用いて生成した鍵で再度データを暗号化することによって、同一の鍵が使用される期間をより短くし、鍵の推定をより困難にすると共に、暗号化データをより安全に管理することができる。さらに、サーバ３０からのプッシュ型の通信をトリガとして鍵の更新および暗号化データの更新を行うことによって、鍵の更新および暗号化データの更新に対する即時性を増すことができる。
【００７７】
上記のように、サーバ３０単体もしくはデータ処理装置単体では鍵を生成することが困難であるため、本実施形態のセキュアデータマネージャ２１を、一般の商用Webサイトからダウンロード可能なアプリケーションとして提供することができる。また、本実施形態のデータ処理装置は、電子決済やメールの送受信等のためにサーバがクライアントを自動認証するサービス等に適用することが可能である。
【００７８】
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【符号の説明】
【００７９】
１・・・CPU、２・・・表示部、３・・・操作部、４・・・通信部、５・・・メモリ、６・・・フラッシュメモリ、７・・・メモリインタフェース部、８・・・UIMカード、９・・・カードインタフェース部、２０ａ，２０ｂ，２０ｃ・・・アプリケーション、２１・・・セキュアデータマネージャ、２２・・・管理部、２２ａ・・・要求処理機能、２２ｂ・・・識別情報取得機能、２２ｃ・・・通信機能（通信部）、２３・・・処理部、２３ａ・・・識別情報取得機能、２３ｂ・・・鍵生成機能（鍵生成部）、２３ｃ・・・暗号化機能（暗号化処理部）、２３ｄ・・・復号機能（復号処理部）、２４・・・認証部（比較部）、３０・・・サーバ、３１・・・通信部、３２・・・制御部、３３・・・記憶部
【図１】
2012138729.tif 000003
【図２】
2012138729.tif 000004
【図３】
2012138729.tif 000005
【図４】
2012138729.tif 000006
【図５】
2012138729.tif 000007
【図６】
2012138729.tif 000008
【図７】
2012138729.tif 000009
【図８】
2012138729.tif 000010
【図９】
2012138729.tif 000011