(57)【特許請求の範囲】
【請求項１】
情報処理装置が、
複数種類のコンテンツを含むパッケージ化されたウェブアプリケーションを暗号化して配信する際、配信先の端末装置の性能情報を取得し、
取得した前記性能情報に基づいて、パッケージ内のコンテンツ毎に暗号アルゴリズムを選択し、
前記コンテンツ毎に選択した暗号アルゴリズムを用いて暗号化処理を実行し、
前記コンテンツを暗号化するのに用いた暗号アルゴリズムに関する情報を端末装置のウェブブラウザと関連づけられている復号部が指定するパッケージ内の場所に暗号処理して記憶する、ことを特徴とする暗号化方法。
【請求項２】
前記性能情報は、
前記ウェブブラウザの性能情報及び前記端末装置のハードウェアの性能情報のうち、少なくとも１つを含むことを特徴とする請求項１に記載の暗号化方法。
【請求項３】
取得した前記性能情報に基づいて、パッケージ内のコンテンツ毎に圧縮アルゴリズムを選択し、
前記コンテンツ毎に選択した圧縮アルゴリズムを用いて圧縮処理を実行することを特徴とする請求項１又は２に記載の暗号化方法。
【請求項４】
前記端末装置から得られた前記性能情報に対応させた暗号アルゴリズムの種別毎に前記コンテンツを分割し、分割したそれぞれのコンテンツを暗号化処理することを特徴とする請求項１乃至３の何れか１項に記載の暗号化方法。
【請求項５】
前記分割したそれぞれのコンテンツの暗号処理負荷を算出し、算出結果に対応した所定の順序で前記暗号化処理を行うことを特徴とする請求項４に記載の暗号化方法。
【請求項６】
複数種類のコンテンツを含むパッケージ化されたウェブアプリケーションを暗号化して配信する際、配信先の端末装置の性能情報を取得し、
取得した前記性能情報に基づいて、パッケージ内のコンテンツ毎に暗号アルゴリズムを選択し、
前記コンテンツ毎に選択した暗号アルゴリズムを用いて暗号化処理を実行し、
前記コンテンツを暗号化するのに用いた暗号アルゴリズムに関する情報を端末装置のウェブブラウザと関連づけられている復号部が指定するパッケージ内の場所に暗号処理して記憶する、処理をコンピュータに実行させる情報処理プログラム。
【請求項７】
複数種類のコンテンツを含むパッケージ化されたウェブアプリケーションを暗号化して配信する際、配信先の端末装置の性能情報を受け付ける受付部と、
受付部から取得した前記性能情報に基づいて、パッケージ内のコンテンツ毎に暗号アルゴリズムを選択し、前記コンテンツ毎に選択した暗号アルゴリズムを用いて暗号化処理を実行し、前記コンテンツを暗号化するのに用いた暗号アルゴリズムに関する情報を端末装置のウェブブラウザと関連づけられている復号部が指定するパッケージ内の場所に暗号処理して記憶するパッケージ部とを有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化方法、情報処理プログラム、及び情報処理装置に関する。
【背景技術】
【０００２】
各種のアプリケーションを実行する端末（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ（ＯＳ））の種類は、年々増加しており、各種端末に対応したアプリケーション（以下、「アプリケーション」を必要に応じて「アプリ」という）開発を効率的に行う必要性がある。そこで、従来では、ウェブ（Ｗｅｂ）技術を用いたアプリケーション開発が注目されている。
【０００３】
ウェブ技術でアプリを開発する場合、ビジネス分野等におけるアプリの配信では、情報漏洩対策として、アプリに含まれる複数種類のコンテンツをパッケージ化する暗号化処理（例えば、暗号ラッピング等）が行われている。従来の暗号ラッピングでは、暗号化ＺＩＰ方式を用いており、１つのパスワードと初期化ベクタから生成された暗号鍵とを用いて、それぞれのコンテンツを暗号化している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０―１０５４４９号公報
【特許文献２】特表２００４−５２４６３４号公報
【特許文献３】特開２００５−１５７８９３号公報
【特許文献４】特表２００２−５１２４１２号公報
【特許文献５】特開２００４−１９９３００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、パッケージの暗号アルゴリズムの鍵長は、パッケージ内に入っている重要データに応じて決定される。その結果、重要度の高いデータが入っているパッケージほど、コンテンツ読み出し速度等のパフォーマンスが低下し、ユーザにとって利便性が悪い。
【０００６】
一つの側面では、本発明は、コンテンツ読み出し速度を向上させることを目的とする。
【課題を解決するための手段】
【０００７】
一つの態様では、暗号化方法において、情報処理装置が、複数種類のコンテンツを含むパッケージ化されたウェブアプリケーションを暗号化して配信する際、配信先の端末装置の性能情報を取得し、取得した前記性能情報に基づいて、パッケージ内のコンテンツ毎に暗号アルゴリズムを選択し、前記コンテンツ毎に選択した暗号アルゴリズムを用いて暗号化処理を実行し、前記コンテンツを暗号化するのに用いた暗号アルゴリズムに関する情報を端末装置のウェブブラウザと関連づけられている復号部が指定するパッケージ内の場所に暗号処理して記憶する。
【発明の効果】
【０００８】
一つの側面として、コンテンツ読み出し速度を向上させることができる。
【図面の簡単な説明】
【０００９】
【図１】情報処理システムの概略構成の一例を示す図である。
【図２】ハードウェア構成の一例を示す図である。
【図３】本実施形態の概要について説明するための図である。
【図４】パッケージ配信の第１実施形態を示す図である。
【図５】端末装置から取得する情報の一例を示す図である。
【図６】登録処理の一例を示すシーケンス図である。
【図７】コンテンツ要求処理の一例を示すフローチャートである。
【図８】パッケージ取得処理の一例を示すシーケンス図である。
【図９】設計情報生成処理の一例を示すフローチャートである。
【図１０】設計情報の一例を示す図である。
【図１１】パッケージ処理の一例を示すフローチャートである。
【図１２】従来手法でのパッケージ化データ例を示す。
【図１３】第１実施形態でのパッケージ化データ例を示す。
【図１４】コンテンツ再生用のＵＲＬの生成例を示すシーケンス図である。
【図１５】端末装置における復号処理の一例を示すシーケンス図である。
【図１６】ダウンロード状況の一例を示す図である。
【図１７】パッケージ配信の第２実施形態を示す図である。
【図１８】第２実施形態におけるパッケージ処理の一例を示すフローチャートである。
【図１９】第２実施形態におけるデータ例を示す図である。
【図２０】第２実施形態におけるパッケージ後の送信処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、図面に基づいて実施形態を説明する。
【００１１】
＜情報処理システムの概略構成例＞
図１は、情報処理システムの概略構成の一例を示す図である。図１に示す情報処理システム１０は、情報処理装置の一例としてのサーバ１１と、端末装置１２とを有する。サーバ１１及び端末装置１２は、例えばインターネットやＬｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＬＡＮ）等に代表される通信ネットワーク１３によりデータの送受信が可能な状態で接続されている。また、図１に示す情報処理システム１０では、サーバ１１と端末装置１２とが通信ネットワーク１３に１対１の関係で接続されているが、これに限定されるものではなく、ｍ対ｎ（ｍ，ｎ≧１）の関係で接続されていてもよい。
【００１２】
サーバ１１は、パッケージ化されたウェブ（Ｗｅｂ）アプリを端末装置１２に提供する場合に、情報漏洩防止等のセキュリティ対策として暗号化処理（暗号ラッピング）を行う。パッケージ化されたウェブアプリとは、例えば動画、画像、テキスト等からなる複数種類のコンテンツをパッケージングしたアプリケーションである。
【００１３】
ここで、従来の暗号処理では、１つのパスワードと、初期化ベクタから生成された暗号鍵とを用いて、パッケージ化されたウェブアプリ内の各コンテンツを暗号化し、パッケージの暗号アルゴリズム（鍵長）は、パッケージ内に入っているコンテンツの重要度に応じて決定される。その結果、重要度の高いコンテンツが入っている場合には、一律にその重要度に合わせてパッケージ内のコンテンツを暗号化するため、端末装置１２側でのデコーダ（復号処理）にも時間がかかる。そのため、コンテンツ読み出しパフォーマンスが低下し、ユーザにとって利便性が悪かった。そこで、本実施形態では、ウェブブラウザに対応するデコーダが指定する場所に各コンテンツに対して暗号化した暗号アルゴリズムの種別（例えば、アルゴリズム名）に関する情報をまとめて暗号化して格納させる。
【００１４】
サーバ１１は、パッケージ化されたウェブアプリを端末装置１２に提供する場合に、情報漏洩対策として暗号化処理（暗号ラッピング）を行う。その際、パッケージ内に入っているコンテンツ毎に、端末装置１２側とネゴシエーションした最適な暗号アルゴリズムや圧縮アルゴリズム等を選択し、それらをパッケージングすることで、コンテンツ読み出しパフォーマンスを向上させる。
【００１５】
例えば、サーバ１１は、端末装置１２毎にウェブ性能やハードウェア性能等の性能情報を取得し、取得した性能情報に対応させてコンテンツを暗号・圧縮処理する。暗号・圧縮処理とは、例えば暗号アルゴリズムを用いた暗号化処理及び圧縮アルゴリズムを用いた圧縮処理のうち、少なくとも１つの処理を含む。また、サーバ１１は、選択した暗号・圧縮アルゴリズムに関する情報（例えば、アルゴリズム名等）を端末装置１２のウェブブラウザと関連づけられている復号部（デコーダ）が指定するパッケージ内の場所に、サーバ１１側で暗号処理して記憶する。
【００１６】
また、サーバ１１は、端末装置１２側とネゴシエーションして得られた性能情報に対応させた暗号アルゴリズムの種別（例えば、暗号アルゴリズム名）毎にコンテンツを分割し、分割したそれぞれをコンテンツに応じた暗号アルゴリズムで暗号処理を行ってもよい。また、暗号・圧縮処理する際には、暗号処理負荷等を算出し、負荷が少ないコンテンツから暗号ラッピングして端末装置１２に配信してもよい。なお、負荷の算出の例としては、例えば「コンテンツサイズ×暗号処理時間／ＭＢ（所定データサイズ（例えば１ＭＢ）における暗号処理時間）」として算出することができるが、これに限定されるものではない。これにより、配信遅延を短縮し、コンテンツ読み出しパフォーマンスを向上させることができる。
【００１７】
サーバ１１は、例えばＰｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ（ＰＣ）等でもよく、一以上の情報処理装置を有するクラウドコンピューティングにより構成されたクラウドサーバであってもよい。
【００１８】
端末装置１２は、サーバ１１から送信されるパッケージ化されたウェブアプリを取得し、取得したウェブアプリに対して復号処理やアンパッケージ処理を行い、ウェブアプリをウェブブラウザ上で実行させる。
【００１９】
端末装置１２は、例えばＰＣやノート型ＰＣ、タブレット端末、スマートフォン、ゲーム機器、音楽再生装置、ウェアラブル端末等であるが、これに限定されるものではない。
【００２０】
本実施形態によれば、１つの暗号ラッピングの中に、データの重要度に応じて、暗号アルゴリズムを選択できる。つまり、コンテンツ毎に、端末装置１２の性能と情報漏洩リスクとを考慮した保護レベルを選択できるようになり、セキュリティ性能を保持したまま、コンテンツ読み出し速度（ウェブアプリの体感速度）を向上することができる。
【００２１】
次に、上述したサーバ１１及び端末装置１２の機能構成例について説明する。
【００２２】
＜サーバ１１の機能構成例＞
図１に示すサーバ１１は、処理受付部（受付部）２１と、コンテンツ取得部２２と、設計情報生成部２３と、鍵管理部２４と、コンテンツ保存部２５と、パッケージ部２６と、パッケージ送信部２７とを有する。
【００２３】
処理受付部２１は、端末装置１２からのウェブアプリのリクエストを受け付ける。処理受付部２１は、受け付けたリクエストの中に入っている端末装置の識別情報（例えば、端末ＩＤ）が登録済みのものであるか否かをチェックし、登録済みであれば、リクエストを受け付ける。
【００２４】
また、処理受付部２１は、登録済みの端末装置１２である場合に、端末装置１２とのネゴシエーションにより、端末装置１２のウェブ性能やハードウェア性能等に関する情報（性能情報）を取得する。ウェブ性能とは、例えばウェブエンジンのバーションやウェブブラウザに関連づけられているデコーダの性能、ストリーム読み出し性能、ＡＥＳ１２８処理能力等であるが、これに限定されるものではない。また、ハードウェア性能とは、例えば暗号アクセラレーションハードウェアの有無等であるが、これに限定されるものではない。
【００２５】
コンテンツ取得部２２は、上述したウェブアプリのリクエストに対応する１又は複数のコンテンツをコンテンツ保存部２５から取得する。また、コンテンツ取得部２２は、そのコンテンツの情報漏洩対策情報が含まれる設定ファイル等もコンテンツ保存部２５から取得する。なお、コンテンツ取得部２２が取得するコンテンツや設定ファイルは、サーバ１１内に設けられていなくてもよく、通信ネットワーク１３を介して接続される外部装置等から取得してもよい。
【００２６】
設計情報生成部２３は、コンテンツ取得部２２が取得した設定ファイル等から、端末装置１２の性能情報に合わせて、実際にどのような暗号・圧縮アルゴリズムを適用すればいいかを決定する。設計情報生成部２３は、例えばコンテンツのデータ特性（例えば、ファイル種別や予め設定されたコンテンツ毎の重要度等）に応じて性能情報に対応する暗号アルゴリズムを選択する。また、設計情報生成部２３は、性能情報等から圧縮アルゴリズムを選択する。設計情報生成部２３は、上述した暗号アルゴリズムや圧縮アルゴリズムの選択結果等を設計情報として生成する。
【００２７】
鍵管理部２４は、ユーザ毎やブラウザ毎、コンテンツ毎等に応じて設定される鍵情報を管理する。例えば、鍵管理部２４は、端末ＩＤと関連づけて暗号鍵を記憶してもよい。鍵情報は、サーバ１１の管理者等により事前に設定されるが，これに限定されるものではない。
【００２８】
コンテンツ保存部２５は、１又は複数のウェブアプリ等のコンテンツを保持する。コンテンツ取得部２２からのリクエストに応じて対応するコンテンツや、コンテンツに対応する設定ファイルを抽出し、抽出した情報をコンテンツ取得部２２に出力する。
【００２９】
パッケージ部２６は、例えば端末ＩＤと関連づけて記憶されている暗号鍵等を用いて、コンテンツを暗号・圧縮処理する暗号部（エンコーダ）である。また、パッケージ部２６は、端末装置１２から得られた性能情報に対応させた暗号アルゴリズムの種別毎にコンテンツを分割し、分割したそれぞれのコンテンツを暗号化処理してもよい。また、パッケージ部２６は、分割したそれぞれのコンテンツの暗号処理負荷を算出し、算出結果に対応した所定の順序で暗号化処理を行ってもよい。例えば、パッケージ部２６は、暗号処理の負荷に応じて、負荷の少ないコンテンツから分割して暗号ラッピングし、パッケージを分割してもよい。
【００３０】
パッケージ部２６は、例えばウェブアプリのデータ特性を解析する解析部としての機能を有する。例えばブラウザを用いてパッケージからデータを読み出す際、そのデータ特性によって、読み出し方が異なる。例えば、動画データであれば、ブラウザはデータをストリームで読み出しながら表示するのに対して、ＰＤＦ等のドキュメント類では、全てのデータを読み出し終えてから表示する。そのため、パッケージ部２６は、例えばコンテンツが動画データの場合に、ランダムアクセス性能が最適になるようにパッケージングを行う。また、パッケージ部２６は、ＰＤＦ等のドキュメントの場合に、シーケンシャル性能が最適になるようにパッケージングを行う。これにより、読み出し性能を向上させることができる。
【００３１】
また、例えばＨＴＭＬ５等のウェブアプリには、多くのオープンソースのライブラリが使用されている。したがって、パッケージ部２６は、オープンソースのデータと、開発者が作成したプログラムやビジネスデータとで暗号アルゴリズムを分けることで、読み出し性能を向上させることができる。例えば、パッケージ部２６は、復号部（デコーダ）の能力と、ウェブアプリ内に含まれているデータのファイル名と拡張子を分析し、それに応じて、読み出しが最適になる暗号圧縮レベルをファイルとして出力してもよい。
【００３２】
パッケージ送信部２７は、パッケージ化されたコンテンツを、ウェブアプリのリクエストのあった端末装置１２に送信（配信）する。なお、パッケージが予め設定された条件で分割されている場合、パッケージ送信部２７は、その分割数分のファイル送信を行う。
【００３３】
＜端末装置１２の機能構成例＞
図１に示す端末装置１２は、起動制御部３１と、サービス部３２と、アンパッケージ部３３と、ダウンロード部３４と、鍵管理部３５と、ブラウザ部３６と、記憶部３７とを有する。
【００３４】
起動制御部３１は、記憶部３７に保存しているコンテンツを、Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ（ＨＴＴＰ）プロトコルでアクセスできるようにするためのサービス部３２を起動する。また、起動制御部３１は、起動が完了した時点で、そのサービス部３２にアクセスするブラウザを起動し、ユーザにサービスを提供する。
【００３５】
サービス部３２は、ＨＴＴＰプロトコルでアクセスしてきたブラウザに対して、そのプロトコル内容を解析し、指定の記憶部３７のストレージからデータを読み出して、ブラウザ側に応答する。サービス部３２は、例えばローカルサーバとしての機能を有していてもよく、ウェブエンジンとしての機能を有していてもよい。
【００３６】
アンパッケージ部３３は、例えば記憶部３７に保存されている暗号化されたデータを復号処理する復号部（デコーダ）である。また、アンパッケージ部３３は、記憶部３７にまだ保存されていないデータに関しては、ダウンロード部３４に催促を出す。
【００３７】
ダウンロード部３４は、サービス部３２からパッケージ化されたデータ（暗号化されたデータ）を取得し、記憶部３７に記憶する。また、ダウンロード部３４は、パッケージが分割されている場合に、その分割数をサーバ１１から取得し、取得した分割数分のパッケージを、例えば端末装置１２の負荷等が少ない時間（空き時間）等に対応させてダウンロードを繰り返して取得してもよい。
【００３８】
鍵管理部３５は、サーバ１１側でパッケージングに使用した暗号鍵の管理、特定のブラウザしかサービス部３２にアクセスできないようにするため、起動制御部３１が生成したＣｏｏｋｉｅと、コンテンツの関連性とを管理する。
【００３９】
ブラウザ部３６は、ＨＴＴＰで取得したコンテンツを再生し、端末装置１２の画面（表示部等）に表示する。
【００４０】
記憶部３７は、上述したようにサーバ１１から通信ネットワーク１３を介して提供されるパッケージ化されたコンテンツ（例えば、ウェブアプリや暗号鍵のアドレス情報等）を記憶する。また、記憶部３７は、本実施形態の実行に必要な各種情報や実行により得られる各種情報（例えば、サーバ１１のアドレス情報、実行時ログ情報）等を記憶する。
【００４１】
＜サーバ１１、端末装置１２のハードウェア構成例＞
次に、サーバ１１、端末装置１２等のコンピュータのハードウェア構成例について、図を用いて説明する。図２は、ハードウェア構成の一例を示す図である。図２の例において、サーバ１１や端末装置１２は、入力装置４１と、出力装置４２と、ドライブ装置４３と、補助記憶装置４４と、主記憶装置４５と、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）４６と、ネットワーク接続装置４７とを有し、これらはシステムバスＢで相互に接続されている。
【００４２】
入力装置４１は、ユーザ等が操作するキーボード及びマウス等のポインティングデバイスやマイクロフォン等の音声入力デバイスを有しており、ユーザ等からのプログラムの実行指示、各種操作情報、ソフトウェア等を起動するための情報等の入力を受け付ける。
【００４３】
出力装置４２は、本実施形態における処理を行うためのコンピュータ本体（サーバ１１、端末装置１２）を操作するのに必要な各種ウィンドウやデータ等を表示するディスプレイ等を有する。出力装置４２は、ＣＰＵ４６が有する制御プログラムによりプログラムの実行経過や結果等を表示することができる。
【００４４】
ここで、本実施形態において、例えばサーバ１１や端末装置１２等のコンピュータ本体にインストールされる実行プログラムは、記録媒体４８等により提供される。記録媒体４８は、ドライブ装置４３にセット可能である。ＣＰＵ４６からの制御信号に基づき、記録媒体４８に格納された実行プログラムが、記録媒体４８からドライブ装置４３を介して補助記憶装置４４にインストールされる。
【００４５】
補助記憶装置４４は、例えばＨａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ（ＨＤＤ）やＳｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ（ＳＳＤ）等のストレージ手段等である。補助記憶装置４４は、ＣＰＵ４６からの制御信号に基づき、本実施形態における実行プログラム（情報処理プログラム）や、コンピュータに設けられた制御プログラム等を記憶し、必要に応じて入出力を行う。補助記憶装置４４は、ＣＰＵ４６からの制御信号等に基づいて、記憶された各情報から必要な情報を読み出したり、書き込むことができる。
【００４６】
主記憶装置４５は、ＣＰＵ４６により補助記憶装置４４から読み出された実行プログラム等を格納する。主記憶装置４５は、Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＲＯＭ）やＲａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲＡＭ）等である。
【００４７】
ＣＰＵ４６は、Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ（ＯＳ）等の制御プログラム、及び主記憶装置４５に格納されている実行プログラムに基づいて、各種演算や各ハードウェア構成部とのデータの入出力等、コンピュータ全体の処理を制御して各処理を実現する。プログラムの実行中に必要な各種情報等は、補助記憶装置４４から取得することができ、また実行結果等を格納することもできる。
【００４８】
具体的には、ＣＰＵ４６は、例えば入力装置４１から得られるプログラムの実行指示等に基づき、補助記憶装置４４にインストールされたプログラムを実行させることにより、主記憶装置４５上でプログラムに対応する処理を行う。
【００４９】
例えば、ＣＰＵ４６は、サーバ１１であれば、情報処理プログラムを実行させることで、上述した処理受付部２１により各端末装置１２からのリクエスト等の受け付け、コンテンツ取得部２２によるコンテンツの取得、設計情報生成部２３による設計情報の生成、鍵管理部２４による鍵の管理、パッケージ部２６によるパッケージ等の処理を行う。
【００５０】
例えば、ＣＰＵ４６は、端末装置１２であれば、プログラムを実行させることで、起動制御部３１による起動制御、サービス部３２によるウェブサービス制御、アンパッケージ部３３によるパッケージ化されたコンテンツのアンパッケージ、ダウンロード部３４によるダウンロード、鍵管理部３５による復号鍵の管理、ブラウザ部３６によるブラウジング等の処理を行う。ＣＰＵ４６における処理内容は、上述した内容に限定されるものではない。ＣＰＵ４６により実行された内容は、必要に応じて補助記憶装置４４等に記憶される。
【００５１】
ネットワーク接続装置４７は、上述した通信ネットワーク１３を介して、端末装置１２や他の外部装置との通信を行う。ネットワーク接続装置４７は、ＣＰＵ４６からの制御信号に基づき、通信ネットワーク１３等と接続することにより、実行プログラムやソフトウェア、設定情報等を外部装置等から取得する。また、ネットワーク接続装置４７は、プログラムを実行することで得られた実行結果を端末装置１２等に提供したり、本実施形態における実行プログラム自体を外部装置等に提供してもよい。
【００５２】
記録媒体４８は、上述したように実行プログラム等が格納されたコンピュータで読み取り可能な記録媒体である。記録媒体４８は、例えばフラッシュメモリ等の半導体メモリやＣＤ−ＲＯＭ、ＤＶＤ等の可搬型の記録媒体であるが、これに限定されるものではない。
【００５３】
図４に示すハードウェア構成に実行プログラム（例えば、情報処理プログラム等）をインストールすることで、ハードウェア資源とソフトウェアとが協働して本実施形態における表示制御処理等を実現することができる。
【００５４】
＜本実施形態の概要について＞
図３は、本実施形態の概要について説明するための図である。図３の例では、Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ（ＯＳ）の異なる２つの端末装置１２−１、１２−２が示されている。ＯＳとは、例えばＡｎｄｒｏｉｄ（登録商標）やｉＯＳ（登録商標）、Ｗｉｎｄｏｗｓ（登録商標）等であるが、これに限定されるものではない。
【００５５】
本実施形態では、サーバ１１から所定の形式（例えば、ＨＴＭＬ５、ＣＳＳ、Ｊａｖａｓｃｒｉｐｔ（登録商標）、ｐｄｆやｍｐ４等のファイル種別）で作成されたアプリケーション等のコンテンツ（データ）を、プラグインモジュールやアプリケーション制作プラットフォーム、コード（Ｙｏｕｒ  Ｃｏｄｅ）等と共にパッケージ化する。また、本実施形態では、パッケージ化と共に暗号処理（暗号・圧縮）を行い、それぞれの端末装置１２−１，１２−２に対してコンテンツを配信（送信）する。
【００５６】
＜ウェブアプリのパッケージ配信処理の例＞
次に、本実施形態における情報処理の一例であるウェブアプリケーションのパッケージ配信処理の例について図を用いて説明する。
【００５７】
図４は、パッケージ配信の第１実施形態を示す図である。図４の例では、サーバ１１がウェブアプリをパッケージする場合に、パッケージ部２６は、端末装置１２のアンパッケージ部３３から端末装置１２側の性能情報（例えば、ウェブ性能、ハードウェア性能）を取得する。ここで、取得する性能情報の一例としては、例えばウェブエンジンのバージョン、暗号アクセラレーションハードウェアの有無等であるが、これに限定されるものではない。例えば、サーバ１１は、端末装置１２に搭載されたＯＳの情報を取得し、取得したＯＳの情報に基づいて予め設定されたウェブ性能、ハードウェア性能を取得してもよい。
【００５８】
また、このとき端末装置１２のアンパッケージ部３３からは、ヘッダの書き込み位置に関する情報を取得し、取得した情報をパッケージ部２６に出力する。
【００５９】
パッケージ部２６は、端末装置１２から得られた性能情報に対応させて、ウェブアプリのコンテンツ毎に暗号化処理及び圧縮処理によるパッケージを行う。図４の例では、「暗号化ＨＴＭＬ５」、暗号化ｐｄｆ、暗号化ｍｐ４等が生成される。この場合、パッケージ化したアプリに対する暗号ヘッダ情報を生成し、アンパッケージ部３３（復号部）が指定するパッケージ内の場所（例えば、指定されたヘッダ書き込み位置）に書き込む。これにより、端末装置１２は、指定した場所からヘッダ情報を読み出し、各コンテンツを復号して、ウェブエンジン等によりウェブアプリを実行することができる。なお、暗号ヘッダ情報の内容としては、例えば各コンテンツの暗号アルゴリズム名、初期化ベクタ等であるが、これに限定されるものではない。
【００６０】
＜サーバ１１が端末装置１２から取得する情報の一例＞
次に、上述したサーバ１１が端末装置１２から取得する情報の一例について、図を用いて説明する。図５は、端末装置から取得する情報の一例を示す図である。
【００６１】
本実施形態では、端末装置１２から取得する情報（端末情報）として、例えば図５（Ａ）、（Ｂ）に示すように、搭載ＯＳ、性能情報、ヘッダ書き込み位置を端末毎（例えば、端末１，２）に取得する。図５（Ａ）、（Ｂ）とは、ヘッダの書き込みの情報が異なる。
【００６２】
搭載ＯＳとは、例えばＯＳバージョン、型名、アプリケーション実行エンジン名等であるが、これに限定されるものではない。また、性能情報としては、例えばＡＥＳ（１２８、２５６、標準）処理速度（ＭＢ／ｓｅｃ）とアンパッケージの動作モード、平文の処理速度等であるが、これに限定されるものではない。
【００６３】
また、アンパッケージの動作モードは、端末装置１２のアンパッケージ部３３をどの動作モードで動かしたときの数値であるかを示している。例えば、動作モード「１」は、例えば仮想マシン（Ｄａｌｖｉｃ）上のみで暗号エンジンを実装した場合である。また、動作モード「２」は、例えばＤａｌｖｉｃからＪａｖａ（登録商標）  Ｎａｔｉｖｅ  Ｉｎｔｅｒｆａｃｅ（ＪＮＩ）経由で、ＯＳ上に実装されたＯｐｅｎＳＳＬライブラリを使用する場合である。なお、図５（Ａ）には、示されていないが、動作モード「３」は、例えばＤａｌｖｉｃからＪＮＩ経由で、ＡＥＳのハードウェア機能を利用する場合という定義である。
【００６４】
性能情報は、端末装置１２側でアンパッケージの動作モードを変えながら、１台１台初期インストール時に測定して、サーバ１１側にその最高値を送信するパターンもあるが、搭載ＯＳの内容を取得することで、おおよその値はサーバ１１で把握できる場合が多い。したがって、搭載ＯＳを取得できた場合には、性能情報は取得しなくてもよい。
【００６５】
サーバ１１の設計情報生成部２３は、取得した情報から、例えばＡＥＳ１２８処理能力があるか否かを判断する。例えば、設計情報生成部２３は、ウェブブラウザ上で、所定時間内（例えば、５秒等）で表示すると設定し、ファイルサイズ／ＡＥＳ１２８処理速度を算出して、その算出結果が５秒以内であれば処理能力があると判断し、なければ処理能力がないと判断する。
【００６６】
また、設計情報生成部２３は、ストリーム読み出し性能があるか否かを判断してもよい。設計情報生成部２３は、例えばファイルそのものに平均ビットレート（例えば、８ＭＢ／ｓｅｃ）が記載されている場合には、その値を基準に性能を判断することができる。例えば、その平均ビットレートの２倍値と、そのファイルの暗号アルゴリズムの処理速度とを比較し、例えばファイルがＡＥＳ２５６で暗号化されることが決定されていれば、ある端末装置（例えば、端末１）の場合には、８ＭＢ／ｓｅｃで、平均ビットレートの２倍である１６ＭＢ／ｓｅｃよりも小さいため、ストリーム読み出し性能がないと判断することができる。なお、性能情報の取得方法は、これに限定されるものではなく、他の性能情報（例えば、ＣＰＵ稼働率やＣＰＵ負荷率、伝送速度）等を取得してもよい。
【００６７】
また、本実施形態では、図５（Ａ）の例に示すように、ヘッダ書き込み情報として、ヘッダ書き込み位置を、パッケージやバイト数を基準に設定している。また、本実施形態では、図５（Ｂ）の例に示すように、ヘッダ書き込みパッケージとして、拡張子やファイル名を基準に設定してもよい。
【００６８】
次に、サーバ１１及び端末装置１２で本実施形態として実行される各処理について説明する。
【００６９】
＜端末装置１２の登録処理＞
まず、本実施形態を実現するためのサーバ１１における端末装置１２の登録処理についてシーケンス図を用いて説明する。図６は、登録処理の一例を示すシーケンス図である。図６の例では、端末装置１２側の起動制御部３１と、鍵管理部３５と、サーバ１１側の鍵管理部２４とを有するがこれに限定されるものではない。
【００７０】
起動制御部３１は、アプリケーションを起動し（Ｓ０１）、起動要求の中にサーバ１１の名称（アドレス情報等）が入っているか否かを判断する（Ｓ０２）。起動要求の中にサーバ名が入っている場合（Ｓ０２において、ＹＥＳ）、鍵管理部３５は、すでにサーバ１１と情報交換済みか否かを判断する（Ｓ０３）。
【００７１】
サーバ１１と情報交換済みでない場合（Ｓ０３において、ＮＯ）、鍵管理部３５は、端末情報を取得し（Ｓ０４）、登録依頼をサーバ１１に送信する（Ｓ０５）。なお、端末情報とは、上述した性能情報やヘッダの書き込み位置等であるが、これに限定されるものではない。
【００７２】
サーバ１１側の鍵管理部２４は、端末装置１２からの登録依頼を受け付けて、端末ＩＤ、暗号鍵を生成し、端末ＩＤ、暗号鍵、性能を含むデータを記憶する等の登録処理を行う（Ｓ０６）。登録後、鍵管理部２４は、完了情報を発行し、端末ＩＤ及び暗号鍵を端末装置１２に送信する（Ｓ０７）。
【００７３】
端末装置１２の鍵管理部３５は、登録完了処理として、サーバ名、端末ＩＤ、鍵情報、ヘッダ書き込み位置を含むデータを記憶部３７等に記憶する（Ｓ０８）。
【００７４】
なお、Ｓ０２の処理において、起動要求の中にサーバ名が入っていない場合（Ｓ０２において、ＮＯ）、又はＳ０３の処理において、すでに情報交換済みである場合（Ｓ０３において、ＹＥＳ）、そのまま登録処理を終了する。
【００７５】
＜コンテンツ要求処理＞
図７は、コンテンツ要求処理の一例を示すフローチャートである。図７の例において、起動制御部３１は、ユーザの指示等によりコンテンツ（例えば、サービス名等）が選択されると（Ｓ１１）、端末装置１２内にあるコンテンツであるか否かを記憶部３７に検索する（Ｓ１２）。記憶部３７には、サーバ名（例えば、１２８．１０．２７．１）、コンテンツ名（例えば、Ｓｅｒｖｉｃｅ名／ｉｎｄｅｘ．ｈｔｍｌ）、パッケージ名（ａｂｃ．ｅｐｋｇ１）等が管理されている。この中から該当するコンテンツがあるか否かを選択する。
【００７６】
ここで、起動制御部３１は、サーバ１１が登録済みであるか否かを判断し（Ｓ１３）、登録済みでない場合（Ｓ１３において、ＮＯ）、上述した登録処理を行う（Ｓ１４）。また、起動制御部３１は、サーバ１１が登録済みである場合（Ｓ１３において、ＹＥＳ）、コンテンツ名が存在するか否かを判断する（Ｓ１５）。コンテンツ名が存在しない場合（Ｓ１５において、ＮＯ）、サーバ１１にコンテンツ要求を行う（Ｓ１６）。また、コンテンツ名が存在する場合（Ｓ１５において、ＹＥＳ）、又はＳ１６の処理後、起動制御部３１は、コンテンツを起動する（Ｓ１７）。
【００７７】
＜パッケージ取得処理＞
図８は、パッケージ取得処理の一例を示すシーケンス図である。図８の例では、端末装置１２の起動制御部３１、ダウンロード部３４と、サーバ１１の処理受付部２１、設計情報生成部２３、パッケージ部２６、パッケージ送信部２７を示している。
【００７８】
図８の例において、起動制御部３１は、コンテンツ要求を行うと（Ｓ２１）、ダウンロード部３４は、要求タスクを生成し（Ｓ２２）、サーバ１１へ依頼（リクエスト）を行う（Ｓ２３）。この場合、サーバ１１に端末ＩＤ及びコンテンツ名等を送信するが、これに限定されるものではない。
【００７９】
次に、サーバ１１の処理受付部２１は、依頼内容に基づいてパッケージタスクを生成する（Ｓ２４）。設計情報生成部２３は、端末ＩＤに対応する性能情報を取得して設計情報を生成する（Ｓ２５）。次に、パッケージ部２６は、生成された設計情報に基づいてコンテンツを取得し（Ｓ２６）、暗号鍵やヘッダ書き込み位置等に基づいて暗号処理を行う（Ｓ２７）。
【００８０】
次に、パッケージ部２６は、パッケージングを行う（Ｓ２８）。パッケージ送信部２７は、Ｓ２８の処理により得られたパッケージを端末装置１２に送信する（Ｓ２９）。
【００８１】
端末装置１２のダウンロード部３４は、データチェックを行い、データがサーバ１１から届いているか（Ｒｅａｄｙ状態か）否かを判断し（Ｓ３１）。Ｒｅａｄｙ状態になるまで待機する。また、Ｒｅａｄｙ状態になった場合（Ｓ３１において、ＹＥＳ）、データを受信する（Ｓ３２）。次に、ダウンロード部３４は、受信完了か否かを判断し（Ｓ３３）、受信完了でない場合（Ｓ３３において、ＮＯ）、受信が完了するまで繰り返し受信を行う。また、ダウンロード部３４は、受信が完了した場合（Ｓ３３において、ＹＥＳ）、パッケージを保存して受信を完了し（Ｓ３４）。起動制御部３１に受信完了を通知する。
【００８２】
＜設計情報生成処理の一例＞
図９は、設計情報生成処理の一例を示すフローチャートである。図９の例は、上述したＳ２５の処理に対応する。図９の例において、設計情報生成部２３は、ファイルを読み出し（Ｓ４１）、読み出したファイルが情報漏洩対策対象か否かを判断する（Ｓ４２）。
【００８３】
Ｓ４２の処理では、例えばコンテンツ名（ファイル種別）毎に情報漏洩対策対象か否かが予め設定情報として記憶されており、例えばｈｔｍｌファイルであれば、システム側で設定することができ、ｐｄｆファイルやｍｐ４ファイルであれば、情報漏洩対策対象であると設定することができ、ｊｓファイルやｃｓｓファイルであれば、情報漏洩対策対象でない（ｏｐｅｎである）と判断することができる。なお、これに限定されるものではなく、例えば、ｐｄｆファイルであってもそのファイル名毎に情報漏洩対策対象か否かを設定することができる。例えば「Ａ．ｐｄｆ」は情報漏洩対策対象であり、「Ｂ．ｐｄｆ」は情報漏洩対策対象でない等である。
【００８４】
Ｓ４２の処理において、読み出したファイルが情報漏洩対策対象である場合（Ｓ４２において、ＹＥＳ）、設計情報生成部２３は、例えば暗号アルゴリズム（ＡＥＳ２５６）を適用（選択）する（Ｓ４３）。また、読み出したファイルが情報漏洩対策対象でない場合（Ｓ４２において、ＮＯ）、システムに任せる設定であるか否かを判断する（Ｓ４４）。システムに任せる判断である場合（Ｓ４４において、ＹＥＳ）、設計情報生成部２３は、暗号アルゴリズム（ＡＥＳ１２８）の処理能力があるか否かを判断し（Ｓ４５）、処理能力がある場合（Ｓ４５において、ＹＥＳ）、ＡＥＳ１２８を適用する（Ｓ４６）。また、設計情報生成部２３は、ＡＥＳ１２８の処理能力がない場合（Ｓ４５において、ＮＯ）、ＡＥＳ２５６やＡＥＳ１２８のような高暗号化ではない暗号アルゴリズム（標準暗号）を適用する（Ｓ４７）。また、設計情報生成部２３は、Ｓ４４の処理において、システムに任せる設定でない場合（Ｓ４４において、ＮＯ）、暗号なしを適用する。
【００８５】
これにより、設計情報生成部２３は、暗号アルゴリズムを決定する（Ｓ４９）。次に、設計情報生成部２３は、ストリーム読み出しが行われる可能性があるフォーマットか否かを判断し（Ｓ５０）、ストリーム読み出しが行われる可能性があるフォーマットである場合（Ｓ５０において、ＹＥＳ）、ストリーム読み出し性能があるか否かを判断する（Ｓ５１）。
【００８６】
設計情報生成部２３は、ストリーム読み出し性能がある場合（Ｓ５１において、ＹＥＳ）、無圧縮とする（Ｓ５２）。また、設計情報生成部２３は、ストリーム読み出し性能がない場合（Ｓ５１において、ＮＯ）、又はＳ５０の処理において、ストリーム読み出しが行われる可能性があるフォーマットでない場合（Ｓ５０において、ＮＯ）、圧縮を行う（Ｓ５３）。これにより、設計情報生成部２３は、圧縮アルゴリズムを決定し（Ｓ５４）、決定した暗号アルゴリズム及び圧縮アルゴリズムを用いて設計情報（Ｅｎｃｔｙｐｅ.ｘｍｌ）を生成する（Ｓ５５）。
【００８７】
ここで、図１０は、設計情報の一例を示す図である。図１０の例に示す設計情報（Ｅｎｃｔｙｐｅ.ｘｍｌ）には、コンテンツ毎にアンパッケージの動作モードが設定されている。したがって、この設計情報を用いることで、パッケージ処理を行うことができる。なお、図１０の例に示すファイルは一例であり、これに限定されるものではない。
【００８８】
＜パッケージ部２６におけるパッケージ処理例＞
図１１は、パッケージ処理の一例を示すフローチャートである。図１１の例において、パッケージ部２６は、コンテンツを取得し（Ｓ６１）、空パッケージを生成し、メモリを確保する（Ｓ６２）。次に、パッケージ部２６は、コンテンツを構成するファイルの読み出しを行い（Ｓ６３）、そのファイルは設計情報に記載されているか否かを判断する（Ｓ６４）。
【００８９】
パッケージ部２６は、設計情報に記載されていない場合（Ｓ６４において、ＮＯ）、Ｓ６３の処理に戻る。また、パッケージ部２６は、設計情報に記載されている場合（Ｓ６４において、ＹＥＳ）、設計情報に記載のアルゴリズムで暗号・圧縮し、パッケージに追加し、ヘッダ情報はメモリ等に保存する（Ｓ６５）。
【００９０】
ここで、パッケージ部２６は、全てのファイルを読み出したか否かを判断し（Ｓ６６）、全てのファイルを読み出していない場合（Ｓ６６において、ＮＯ）、Ｓ６３の処理に戻る。また、Ｓ６６において、全てのファイルを読み出した場合（Ｓ６６において、ＹＥＳ）、メモリ上にあるヘッダを暗号化し、パッケージ内の指定された場所に書き込む（Ｓ６７）。
【００９１】
＜第１実施形態で得られるパッケージ化データ例＞
次に、第１実施形態で得られるパッケージ化データ例について、図を用いて説明する。なお、以下の説明では、従来手法との差を明確にするため、従来手法でのパッケージ化データも用いて説明する。図１２は、従来手法でのパッケージ化データ例を示す。また、図１３は、第１実施形態でのパッケージ化データ例を示す。
【００９２】
図１２（Ａ）に示すように、従来の暗号ラッピングの代表的な方式は、暗号化ＺＩＰ方式である。暗号化ＺＩＰ方式は、１つのパスワードと、初期化ベクタから生成された暗号鍵とを用いて、それぞれのコンテンツを暗号化している。
【００９３】
その場合、図１２（Ｂ）に示すように、パッケージの暗号強度は、パッケージ内に入っている重要データに応じて決定される。その結果、重要度の高いデータが入っているパッケージほどパフォーマンスが低下し、ユーザにとって利便性が悪い。
【００９４】
そこで、第１実施形態では、図１３（Ａ）に示すように、1つの暗号ラッピングの中に、データの重要度に応じて、暗号アルゴリズムを選択してパッケージング及び暗号・圧縮処理を行う。これにより、図１３（Ａ）に示すように、重要ｄａｔａ．ｐｄｆと、それ以外のデータで異なる読み出し速度（重要ｄａｔａ．ｐｄｆ以外のデータの方が高速読み出し）となり、ウェブアプリの体感速度が向上する。
【００９５】
例えば、端末装置１２は、図１３（Ｂ）に示すように、パッケージ形式を用いて暗号・圧縮を行う。なお、図１３（Ｂ）の例では、暗号化ヘッダの場所が、端末装置１２と、サーバ１１との間で、ファイル最後尾と合意された場合のパッケージ形式を示している。各ファイルデータ（Ｆｉｌｅ  ｄａｔａ）のヘッダには、例えば全て０（Ａｌｌ  ０’ｓ）が設定されるが、これに限定されるものではなく、適当な乱数が設定されていてもよい。また、図１３（Ｂ）に示すＺＩＰフォーマットでは、暗号アルゴリズム（暗号パラメータ）が高強度で暗号化されている。
【００９６】
図１３（Ｂ）の例では、端末装置１２のアンパッケージ部３３は、例えばヘッダサイズ分の内部メモリを確保し、パッケージパスワードで復号する。また、アンパッケージ部３３は、復号したヘッダ情報から、読み出したいファイル名やファイルデータのポインタを読み出し、そのポインタからファイルを復号して取得する。
【００９７】
＜コンテンツ再生用のＵＲＬの生成例＞
ここで、端末装置１２におけるコンテンツ再生用のＵＲＬの生成処理について図を用いて説明する。図１４は、コンテンツ再生用のＵＲＬの生成例を示すシーケンス図である。図１４の例では、起動制御部３１と、鍵管理部３５と、サービス部３２と、ブラウザ部３６とを有する。
【００９８】
図１４の例において、コンテンツを再生する場合には、起動制御部３１は、乱数からＣｏｏｋｉｅを生成し（Ｓ７１）、サービス部３２に、コンテンツ再生用ＵＲＬ生成の依頼を行う（Ｓ７２）。なお、Ｃｏｏｋｉｅとは、サーバ１１等から取得したデータを、ウェブブラウザを通じて端末装置１２内に一時的にデータを書き込んで保存させる仕組みをいう。
【００９９】
サービス部３２は、起動制御部３１からの依頼及びＣｏｏｋｉｅを受け取り（Ｓ７３）、ブラウザがコンテンツ再生を行うために使用するＵＲＬを生成する（Ｓ７４）。次に、サービス部３２は、生成したＵＲＬを起動制御部３１に通知する（Ｓ７５）。通知するＵＲＬとしては、例えば「１０．０．０．１：８００９／ｓｅｒｖｉｃｅ／ｉｎｄｅｘ．ｈｔｍｌ」等であるが、これに限定されるものではない。
【０１００】
次に、起動制御部３１は、鍵管理部３５に取得した情報を通知する（Ｓ７６）。鍵管理部３５は、起動制御部３１から得られたＣｏｏｋｉｅとＵＲＬとをコンテンツと関連づけて記憶部等に保存する（Ｓ７７）。また、起動制御部３１は、コンテンツ再生依頼（ＵＲＬとＣｏｏｋｉｅを通知する（Ｓ７８）。ブラウザ部３６は、Ｃｏｏｋｉｅを保存し、指定されたＵＲＬにアクセスする（Ｓ７９）。
【０１０１】
＜端末装置１２における復号処理の一例＞
次に、端末装置１２における復号処理の一例について、図を用いて説明する。図１５は、端末装置における復号処理の一例を示すシーケンス図である。なお、図１５の例では、ブラウザ部３６と、サービス部３２と、鍵管理部３５と、アンパッケージ部３３とを有する。
【０１０２】
図１５の例において、ブラウザ部３６は、ユーザの指示等により、サービス部３２に対してコンテンツ要求（例えば、１０．０．０．１：８００９／ｓｅｒｖｉｃｅ／ｉｎｄｅｘ．ｈｔｍｌ）を行う（Ｓ８１）。サービス部３２は、ブラウザ部３６からの要求を受け取り（Ｓ８２）、Ｃｏｏｋｉｅ情報のチェックを行う（Ｓ８３）。サービス部３２は、鍵管理部３５に対してｃｏｏｋｉｅ情報をチェックするための問い合わせを行う（Ｓ８４）。
【０１０３】
鍵管理部３５は、ブラウザ部３６からの要求ｃｏｏｋｉｅと、ｓｅｒｖｉｃｅ（サービス）名の関連性が正しいかをチェックし（Ｓ８５）、そのチェック結果をサービス部３２に通知する（Ｓ８６）。
【０１０４】
サービス部３２は、チェックの結果がＯＫであるか否かを判断し（Ｓ８７）、関連性が正しくない場合（Ｓ８７において、ＮＯ）、アクセス負荷の応答をブラウザ部３６に出力する。また、サービス部３２は、チェックの結果がＯＫである場合（Ｓ８７において、ＹＥＳ）、アンパッケージ部３３に要求しているコンテンツ名を通知する（Ｓ８８）。
【０１０５】
アンパッケージ部３３は、サービス部３２から要求のあったコンテンツを検索し（Ｓ８９）、受信済みであるか否かを判断する（Ｓ９０）。アンパッケージ部３３は、受信済みである場合（Ｓ９０において、ＹＥＳ）、そのコンテンツを鍵管理部３５に送信する。鍵管理部３５は、コンテンツに対応する暗号鍵、読み出しヘッダ位置、パッケージ名等から復号処理を行い（Ｓ９１）、ＯＫデータをブラウザ部３６に出力してコンテンツの再生を行う（Ｓ９２）。また、Ｓ９０の処理において、要求されたコンテンツが受信済みでない場合（Ｓ９０において、ＮＯ）、アンパッケージ部３３は、ダウンロード部３４等にサーバ１１からパッケージング済みコンテンツが送られてきたかを確認し（Ｓ９３）、待ち（Ｗａｉｔ）情報をブラウザ部３６に通知すると共に（Ｓ９４）、Ｓ８９の検索に戻る（Ｓ９５）。
【０１０６】
図１６は、ダウンロード状況の一例を示す図である。端末装置１２のアンパッケージ部３３は、図１６に示すように、「コンテンツ名」、「パッケージ名」、「受信済みフラグ」等の項目等を有するダウンロード状況データを管理する。上述したＳ８９の検索処理では、コンテンツ名等を検索キーとして「受信済みフラグ」のデータ（「済（受信済み）」ｏｒ「未（未受信）」）を参照してダウンロード状況を取得する。
【０１０７】
＜パッケージ配信の第２実施形態＞
次に、パッケージ配信の第２実施形態について、図を用いて説明する。図１７は、パッケージ配信の第２実施形態を示す図である。
【０１０８】
図１７に示す第２実施形態では、端末装置１２側とネゴシエーションして得られた性能情報に対応させた暗号アルゴリズムの種別（暗号アルゴリズム名）毎にコンテンツを分割し、分割したそれぞれをコンテンツに応じた暗号アルゴリズムで暗号処理を行う。また、第２実施形態では、暗号処理する場合に、暗号処理負荷（例えば、コンテンツサイズ×暗号処理時間／ＭＢ)を算出し、負荷が少ないコンテンツから暗号ラッピングして端末装置１２側に送信していくことで、配信遅延を短縮し、コンテンツの読み出しパフォーマンスを向上させる。
【０１０９】
図１７の例では、暗号ヘッダの暗号アルゴリズム(強度高)を最初に配信し、その後、分割された暗号アルゴリズムＡ〜Ｃが暗号処理負荷等に対応させて所定の順序で配信される。端末装置１２は、第１実施形態と同様に、指定した場所からヘッダ情報を読み出し、各コンテンツを復号することができ、ウェブエンジン等を用いてウェブブラウザで表示することができる。
【０１１０】
ここで、第２実施形態におけるサーバ１１及び端末装置の機能構成及びハードウェア構成等については、上述した第１実施形態と同内容のものを用いることができるため、ここでの具体的な説明は省略する。また、以下の説明では、上述した第１実施形態との差が生じる部分を説明し、共通の処理を行う部分については、説明を省略する。
【０１１１】
＜第２実施形態におけるパッケージ処理の一例＞
図１８は、第２実施形態におけるパッケージ処理の一例を示すフローチャートである。図１８の例において、パッケージ部２６は、コンテンツ取得部２２により取得されたコンテンツを取得し（Ｓ１０１）、設計情報に基づいて、例えば暗号アルゴリズム名毎に、ファイルをグループ分けし、パッケージ名を決定する（Ｓ１０２）。
【０１１２】
次に、パッケージ部２６は、空パッケージを生成し、メモリを確保し（Ｓ１０３）、コンテンツを構成するファイルを読み出す（Ｓ１０４）。ここで、パッケージ部２６は、そのファイルが設計情報に記載されているか否かを判断し（Ｓ１０５）、設計情報に記載されていない場合（Ｓ１０５において、ＮＯ）、Ｓ１０４の処理に戻り、次のファイルを読み出す。また、パッケージ部２６は、設計情報に記載されている場合（Ｓ１０５において、ＹＥＳ）、設計情報記載のアルゴリズムで暗号・圧縮するためのヘッダ情報を生成し、ファイルサイズから暗号・圧縮にかかる予想時間を計算し、ヘッダ情報と共にメモリに保存する（Ｓ１０６）。
【０１１３】
ここで、パッケージ部２６は、全てのファイルを読み出したか否かを判断し（Ｓ１０７）、全てのファイルを読み出していない場合（Ｓ１０７において、ＮＯ）、Ｓ１０４の処理に戻り、未だ読み出していないファイルを読み出す。また、全てのファイルを読み出した場合（Ｓ１０７において、ＹＥＳ）、メモリ上にあるヘッダ（例えば、暗号パラメータ、ファイル名、ファイル毎のパッケージ名）を端末ＩＤに対応する暗号鍵等を用いて暗号化してファイルに保存する（Ｓ１０８）。
【０１１４】
図１９は、第２実施形態におけるデータ例を示す図である。図１９の例では、Ｓ１０６の処理において、メモリに保存されるデータ例を示している。図１９のデータの項目としては、例えば「ファイル名」、「暗号パラメータ（アルゴリズム、初期ベクタ）」、「圧縮パラメータ」、「ファイル毎の暗号鍵」、「予想時間」、「パッケージ名」等であるが、これに限定されるものではない。
【０１１５】
第２実施形態では、ファイル名毎に暗号・圧縮にかかる予想時間を生成し、それぞれの予想時間に基づいて、例えば時間の短い（負荷が少ない）コンテンツから暗号ラッピングを行う。
【０１１６】
＜第２実施形態におけるパッケージ後の送信処理の一例＞
第２実施形態におけるパッケージ後の送信処理の一例を示すフローチャートである。図２０の例において、パッケージ部２６は、端末ＩＤ等に対応させてヘッダ書き込みを行うファイルを読み出し、メモリ上にあるヘッダ情報を読み出し、そのパラメータに基づいて暗号化を行い、パッケージに追加し、暗号化ヘッダをパッケージに追加する（Ｓ１１２）。次に、パッケージ部２６は、生成したパッケージの保存場所、分割数（＝生成する予定のパッケージ数）をパッケージ送信部２７等により端末装置１２に送信させる（Ｓ１１３）。
【０１１７】
次に、パッケージ部２６は、メモリ上にある予想時間の短いファイルから読み出し（Ｓ１１４）、事前に決定したファイル名に応じたパッケージ名を生成する（Ｓ１１５）。次に、パッケージ部２６は、メモリ上にあるヘッダ情報を読み出し、そのパラメータに基づいて暗号化を行い、パッケージに追加する（Ｓ１１６）。
【０１１８】
次に、パッケージ部２６は、メモリ上にある生成したパッケージの保存場所をパッケージ送信部２７等により端末装置１２に送信させる（Ｓ１１７）。
【０１１９】
ここで、パッケージ部２６は、全てのファイルを読み出したか否かを判断し（Ｓ１１８）、全てのファイルを読み出してない場合（Ｓ１１８において、ＮＯ）、Ｓ１１４の処理に戻り、未だ読み出していないファイルを読み出す。また、パッケージ部２６は、全てのファイルを読み出した場合（Ｓ１１８において、ＹＥＳ）、処理を終了する。
【０１２０】
これにより、第２実施形態では、配信遅延を短縮し、コンテンツの読み出しパフォーマンスを向上させることができる。
【０１２１】
上述したように、本実施形態によれば、コンテンツ読み出し速度を向上させることができる。例えば、パッケージ内に入っているコンテンツ毎に端末装置１２側とネゴシエーションした暗号・圧縮アルゴリズムで処理し、ネゴシエーションしたパラメータ及び暗号・圧縮アルゴリズムをコンテンツ毎に適用する際のパラメータを、端末装置１２側が指定した場所に暗号化して保存することで、コンテンツ読み出しパフォーマンスを向上させる。したがって、本実施形態によれば、コンテンツ毎に、端末性能と情報漏洩リスクを考慮した保護レベルを選択できるようになり、ウェブアプリケーションの体感速度が向上する。
【０１２２】
また、本実施形態によれば、パッケージ復号機能の端末装置への最適化と、復号能力とデータ特性とに応じてパッケージ最適化を行うことができる。
【０１２３】
なお、上述した実施形態では、ウェブアプリの配信における暗号化について説明したが、これに限定されるものではなく、他のアプリケーションや各種データの配信においても同様に適用することができる。
【０１２４】
以上、実施例について詳述したが、特定の実施例に限定されるものではなく、特許請求の範囲に記載された範囲内において、種々の変形及び変更が可能である。また、上述した各実施例の一部又は全部を組み合わせることも可能である。
【０１２５】
なお、以上の実施例に関し、更に以下の付記を開示する。
（付記１）
情報処理装置が、
複数種類のコンテンツを含むパッケージ化されたウェブアプリケーションを暗号化して配信する際、配信先の端末装置の性能情報を取得し、
取得した前記性能情報に基づいて、パッケージ内のコンテンツ毎に暗号アルゴリズムを選択し、
前記コンテンツ毎に選択した暗号アルゴリズムを用いて暗号化処理を実行し、
前記コンテンツを暗号化するのに用いた暗号アルゴリズムに関する情報を端末装置のウェブブラウザと関連づけられている復号部が指定するパッケージ内の場所に暗号処理して記憶する、ことを特徴とする暗号化方法。
（付記２）
前記性能情報は、
前記ウェブブラウザの性能情報及び前記端末装置のハードウェアの性能情報のうち、少なくとも１つを含むことを特徴とする付記１に記載の暗号化方法。
（付記３）
前記復号部が指定するパッケージ内の場所は、前記パッケージ化されたウェブアプリケーションを配信するデータのヘッダ書き込み位置を含むことを特徴とする付記１又は２に記載の暗号化方法。
（付記４）
取得した前記性能情報に基づいて、パッケージ内のコンテンツ毎に圧縮アルゴリズムを選択し、
前記コンテンツ毎に選択した圧縮アルゴリズムを用いて圧縮処理を実行することを特徴とする付記１乃至３の何れか３項に記載の暗号化方法。
（付記５）
前記端末装置から得られた前記性能情報に対応させた暗号アルゴリズムの種別毎に前記コンテンツを分割し、分割したそれぞれのコンテンツを暗号化処理することを特徴とする付記１乃至４の何れか１項に記載の暗号化方法。
（付記６）
前記分割したそれぞれのコンテンツの暗号処理負荷を算出し、算出結果に対応した所定の順序で前記暗号化処理を行うことを特徴とする付記５に記載の暗号化方法。
（付記７）
前記暗号処理負荷が少ないコンテンツから順番に前記暗号化処理を行うことを特徴とする付記６に記載の暗号化方法。
（付記８）
複数種類のコンテンツを含むパッケージ化されたウェブアプリケーションを暗号化して配信する際、配信先の端末装置の性能情報を取得し、
取得した前記性能情報に基づいて、パッケージ内のコンテンツ毎に暗号アルゴリズムを選択し、
前記コンテンツ毎に選択した暗号アルゴリズムを用いて暗号化処理を実行し、
前記コンテンツを暗号化するのに用いた暗号アルゴリズムに関する情報を端末装置のウェブブラウザと関連づけられている復号部が指定するパッケージ内の場所に暗号処理して記憶する、処理をコンピュータに実行させる情報処理プログラム。
（付記９）
複数種類のコンテンツを含むパッケージ化されたウェブアプリケーションを暗号化して配信する際、配信先の端末装置の性能情報を受け付ける受付部と、
受付部から取得した前記性能情報に基づいて、パッケージ内のコンテンツ毎に暗号アルゴリズムを選択し、前記コンテンツ毎に選択した暗号アルゴリズムを用いて暗号化処理を実行し、前記コンテンツを暗号化するのに用いた暗号アルゴリズムに関する情報を端末装置のウェブブラウザと関連づけられている復号部が指定するパッケージ内の場所に暗号処理して記憶するパッケージ部とを有することを特徴とする情報処理装置。
【符号の説明】
【０１２６】
１０  情報処理システム
１１  サーバ（情報処理装置）
１２  端末装置
１３  通信ネットワーク
２１  処理受付部（受付部）
２２  コンテンツ取得部
２３  設計情報生成部
２４，３５  鍵管理部
２５  コンテンツ保存部
２６  パッケージ部
２７  パッケージ送信部
３１  起動制御部
３２  サービス部
３３  アンパッケージ部
３４  ダウンロード部
３６  ブラウザ部
３７  記憶部
４１  入力装置
４２  出力装置
４３  ドライブ装置
４４  補助記憶装置
４５  主記憶装置
４６  ＣＰＵ
４７  ネットワーク接続装置
４８  記録媒体
【図１】
0006340996.tif 000002
【図２】
0006340996.tif 000003
【図３】
0006340996.tif 000004
【図４】
0006340996.tif 000005
【図５】
0006340996.tif 000006
【図６】
0006340996.tif 000007
【図７】
0006340996.tif 000008
【図８】
0006340996.tif 000009
【図９】
0006340996.tif 000010
【図１０】
0006340996.tif 000011
【図１１】
0006340996.tif 000012
【図１２】
0006340996.tif 000013
【図１３】
0006340996.tif 000014
【図１４】
0006340996.tif 000015
【図１５】
0006340996.tif 000016
【図１６】
0006340996.tif 000017
【図１７】
0006340996.tif 000018
【図１８】
0006340996.tif 000019
【図１９】
0006340996.tif 000020
【図２０】
0006340996.tif 000021