(57)【要約】【課題】所望の暗号化および復号を含む機能を複数のデータ交換を行なうアプリケーションから共通のシーケンスに従って利用すること。【解決手段】機密にデータ交換を実現する複数のアプリケーションと共通の処理手順でデータ交換が可能な第１インタフェースと、暗号化機能および復号機能を実現する複数のハードウェアのそれぞれとデータ交換が可能な第２インタフェースと、第１インタフェースと第２インタフェースとを介して、複数のアプリケーションの少なくともいずれか１つと複数のハードウェアの少なくともいずれか１つとのデータ交換を制御する制御手段と、を備える。【選択図】  図１
2018093352.tif 000002
【特許請求の範囲】
【請求項１】
機密にデータ交換を実現する複数のアプリケーションと共通の処理手順でデータ交換が可能な第１インタフェースと、
暗号化機能および復号機能を実現する複数のハードウェアのそれぞれとデータ交換が可能な第２インタフェースと、
前記第１インタフェースと前記第２インタフェースとを介して、前記複数のアプリケーションの少なくともいずれか１つと前記複数のハードウェアの少なくともいずれか１つとのデータ交換を制御する制御手段と、
を備える情報処理装置。
【請求項２】
前記制御手段は、
前記アプリケーションから初期化指示を受けて、ライブラリとして準備されたソフトウェアモジュール群および使用するハードウェアを初期化する第１初期化処理手段と、
前記アプリケーションから、暗号化および復号を含む機密情報処理の実行指示を受けて、前記初期化されたソフトウェアモジュール群およびハードウェアを用いて前記機密情報処理を実行する機密情報処理手段と、
前記アプリケーションから処理の終了指示を受けて、前記初期化され用いられたソフトウェアモジュール群およびハードウェアに対して終了処理をする第１終了処理手段と、
を有する請求項１に記載の情報処理装置。
【請求項３】
前記機密情報処理手段は、
前記アプリケーションから初期化指示を受けて、前記機密情報処理のライブラリとして準備されたソフトウェアモジュール群および使用するハードウェアを初期化する第２初期化処理手段と、
前記アプリケーションから、前記機密情報処理の実行指示を受けて、前記初期化されたソフトウェアモジュール群およびハードウェアを用いて前記機密情報処理を実行する機密情報処理手段と、
前記アプリケーションから処理の終了指示を受けて、前記初期化され用いられたソフトウェアモジュール群およびハードウェアに対して終了処理をする第２終了処理手段と、
を有する請求項２に記載の情報処理装置。
【請求項４】
前記データ交換を行なうアプリケーションは、リンクプロテクション機能またはコピーガード機能を実現するために使用するアプリケーションを含む、請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記ハードウェアが接続されていない場合、ライブラリとして準備されたソフトウェアモジュールによりハードウェアを代替する、請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
前記情報処理装置はハードウェア的に分離された、ノーマル実行環境である非機密部とセキュア実行環境である機密部とを備え、
前記制御手段は、前記機密部に秘匿性のより高い暗号化鍵、復号鍵およびセッション鍵を格納する格納手段を備える、請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記アプリケーションからの指示を、前記アプリケーションの通信プロトコルに従って、前記制御手段への指示に変換する指示変換手段をさらに備える、請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
前記アプリケーションは、Miracast使用アプリケーション、HDCP使用アプリケーション、DLNA（登録商標）使用アプリケーション、DTCP-IP使用アプリケーション、DTCP-MOST使用アプリケーションを含む、請求項１乃至７のいずれか１項に記載の情報処理装置。
【請求項９】
前記ハードウェアは、ＳＳＴ(Secure Storage)、ＲＳＡ、ＨＡＳＨ、ＡＥＳ、Ｍ６を含む、請求項１乃至８のいずれか１項に記載の情報処理装置。
【請求項１０】
機密にデータ交換を実現する複数のアプリケーションと共通の処理手順でデータ交換が可能な第１インタフェースと、
暗号化機能および復号機能を実現する複数のハードウェアのそれぞれとデータ交換が可能な第２インタフェースと、
前記第１インタフェースと前記第２インタフェースとを介して、前記複数のアプリケーションと前記複数のハードウェアとのデータ交換を制御する制御手段と、
を備える情報処理装置の情報処理方法であって、
前記アプリケーションから初期化指示を受けて、ライブラリとして準備されたソフトウェアモジュール群および使用するハードウェアを初期化する初期化処理ステップと、
前記アプリケーションから、暗号化および復号を含む機密情報処理の実行指示を受けて、前記初期化されたソフトウェアモジュール群およびハードウェアを用いて前記機密情報処理を実行する機密情報処理ステップと、
前記アプリケーションから処理の終了指示を受けて、前記初期化され用いられたソフトウェアモジュール群およびハードウェアに対して終了処理をする終了処理ステップと、
を含む情報処理方法。
【請求項１１】
機密にデータ交換を実現する複数のアプリケーションと共通の処理手順でデータ交換が可能な第１インタフェースと、
暗号化機能および復号機能を実現する複数のハードウェアのそれぞれとデータ交換が可能な第２インタフェースと、
前記第１インタフェースと前記第２インタフェースとを介して、前記複数のアプリケーションと前記複数のハードウェアとのデータ交換を制御する制御手段と、
を備える情報処理装置の情報処理プログラムであって、
前記アプリケーションから初期化指示を受けて、ライブラリとして準備されたソフトウェアモジュール群および使用するハードウェアを初期化する初期化処理ステップと、
前記アプリケーションから、暗号化および復号を含む機密情報処理の実行指示を受けて、前記初期化されたソフトウェアモジュール群およびハードウェアを用いて前記機密情報処理を実行する機密情報処理ステップと、
前記アプリケーションから処理の終了指示を受けて、前記初期化され用いられたソフトウェアモジュール群およびハードウェアに対して終了処理をする終了処理ステップと、
をコンピュータに実行させる情報処理プログラム。
【請求項１２】
アプリケーションと、
暗号化および復号に使用するハードウェアと、
前記アプリケーションからの指示を、前記アプリケーションのプロトコルに従って、初期化手段または機密情報処理手段または終了処理手段への指示に変換する指示変換手段と、
前記指示変換手段から初期化指示を受けて、ライブラリとして準備されたソフトウェアモジュール群および前記ハードウェアを初期化する前記初期化処理手段と、
前記指示変換手段から、暗号化および復号を含む機密情報処理の実行指示を受けて、前記初期化されたソフトウェアモジュール群およびハードウェアを用いて前記機密情報処理を実行する前記機密情報処理手段と、
前記指示変換手段から処理の終了指示を受けて、前記初期化され用いられたソフトウェアモジュール群およびハードウェアに対して終了処理をする前記終了処理手段と、
を備える情報処理システム。
【請求項１３】
アプリケーションと、暗号化および復号に使用するハードウェアと、を備える情報処理装置への機能組込方法であって、
前記アプリケーションから初期化指示を受けて、ライブラリとして準備されたソフトウェアモジュール群および使用するハードウェアを初期化する初期化処理手段と、
前記アプリケーションから、暗号化および復号を含む機密情報処理の実行指示を受けて、前記初期化されたソフトウェアモジュール群およびハードウェアを用いて前記機密情報処理を実行する機密情報処理手段と、
前記アプリケーションから処理の終了指示を受けて、前記初期化され用いられたソフトウェアモジュール群およびハードウェアに対して終了処理をする終了処理手段と、
を有するソフトウェアモジュール群を組み込んで、前記アプリケーションと前記ハードウェアとを結び付ける工程を含む、機能組込方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ交換を行なうアプリケーション中の暗号化および復号を含む機能を実行する技術に関する。
【背景技術】
【０００２】
上記技術分野において、特許文献１には、デバイスが複数タイプのコンテンツ保護技術を選択して処理する技術が開示されている。また、引用文献２には、ノーマル実行環境とセキュア実行環境とが分離されて、セキュア処理する技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開2005-304000号公報
【特許文献２】再表WO2013/038592号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記文献に記載の技術では、データ交換を行なうアプリケーションごとに所望の暗号化および復号に対応する必要があり、所望の暗号化および復号を含む機能を複数のデータ交換を行なうアプリケーションから共通のシーケンスに従って利用することができなかった。
【０００５】
本発明の目的は、上述の課題を解決する技術を提供することにある。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明に係る情報処理装置は、
機密にデータ交換を実現する複数のアプリケーションと共通の処理手順でデータ交換が可能な第１インタフェースと、
暗号化機能および復号機能を実現する複数のハードウェアのそれぞれとデータ交換が可能な第２インタフェースと、
前記第１インタフェースと前記第２インタフェースとを介して、前記複数のアプリケーションの少なくともいずれか１つと前記複数のハードウェアの少なくともいずれか１つとのデータ交換を制御する制御手段と、
を備える。
【０００７】
上記目的を達成するため、本発明に係る情報処理方法は、
機密にデータ交換を実現する複数のアプリケーションと共通の処理手順でデータ交換が可能な第１インタフェースと、
暗号化機能および復号機能を実現する複数のハードウェアのそれぞれとデータ交換が可能な第２インタフェースと、
前記第１インタフェースと前記第２インタフェースとを介して、前記複数のアプリケーションと前記複数のハードウェアとのデータ交換を制御する制御手段と、
を備える情報処理装置の情報処理方法であって、
前記アプリケーションから初期化指示を受けて、ライブラリとして準備されたソフトウェアモジュール群および使用するハードウェアを初期化する初期化処理ステップと、
前記アプリケーションから、暗号化および復号を含む機密情報処理の実行指示を受けて、前記初期化されたソフトウェアモジュール群およびハードウェアを用いて前記機密情報処理を実行する機密情報処理ステップと、
前記アプリケーションから処理の終了指示を受けて、前記初期化され用いられたソフトウェアモジュール群およびハードウェアに対して終了処理をする終了処理ステップと、
を含む。
【０００８】
上記目的を達成するため、本発明に係る情報処理プログラムは、
機密にデータ交換を実現する複数のアプリケーションと共通の処理手順でデータ交換が可能な第１インタフェースと、
暗号化機能および復号機能を実現する複数のハードウェアのそれぞれとデータ交換が可能な第２インタフェースと、
前記第１インタフェースと前記第２インタフェースとを介して、前記複数のアプリケーションと前記複数のハードウェアとのデータ交換を制御する制御手段と、
を備える情報処理装置の情報処理プログラムであって、
前記アプリケーションから初期化指示を受けて、ライブラリとして準備されたソフトウェアモジュール群および使用するハードウェアを初期化する初期化処理ステップと、
前記アプリケーションから、暗号化および復号を含む機密情報処理の実行指示を受けて、前記初期化されたソフトウェアモジュール群およびハードウェアを用いて前記機密情報処理を実行する機密情報処理ステップと、
前記アプリケーションから処理の終了指示を受けて、前記初期化され用いられたソフトウェアモジュール群およびハードウェアに対して終了処理をする終了処理ステップと、
をコンピュータに実行させる。
【０００９】
上記目的を達成するため、本発明に係る情報処理システムは、
アプリケーションと、
暗号化および復号に使用するハードウェアと、
前記アプリケーションからの指示を、前記アプリケーションのプロトコルに従って、初期化手段または機密情報処理手段または終了処理手段への指示に変換する指示変換手段と、
前記指示変換手段から初期化指示を受けて、ライブラリとして準備されたソフトウェアモジュール群および前記ハードウェアを初期化する前記初期化処理手段と、
前記指示変換手段から、暗号化および復号を含む機密情報処理の実行指示を受けて、前記初期化されたソフトウェアモジュール群およびハードウェアを用いて前記機密情報処理を実行する前記機密情報処理手段と、
前記指示変換手段から処理の終了指示を受けて、前記初期化され用いられたソフトウェアモジュール群およびハードウェアに対して終了処理をする前記終了処理手段と、
を備える。
【００１０】
上記目的を達成するため、本発明に係る機能組込方法は、
アプリケーションと、暗号化および復号に使用するハードウェアと、を備える情報処理装置への機能組込方法であって、
前記アプリケーションから初期化指示を受けて、ライブラリとして準備されたソフトウェアモジュール群および使用するハードウェアを初期化する初期化処理手段と、
前記アプリケーションから、暗号化および復号を含む機密情報処理の実行指示を受けて、前記初期化されたソフトウェアモジュール群およびハードウェアを用いて前記機密情報処理を実行する機密情報処理手段と、
前記アプリケーションから処理の終了指示を受けて、前記初期化され用いられたソフトウェアモジュール群およびハードウェアに対して終了処理をする終了処理手段と、
を有するソフトウェアモジュール群を組み込んで、前記アプリケーションと前記ハードウェアとを結び付ける工程を含む。
【発明の効果】
【００１１】
本発明によれば、所望の暗号化および復号を含む機能を複数のデータ交換を行なうアプリケーションから共通のシーケンスに従って利用することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の第１実施形態に係る情報処理装置の構成を示すブロック図である。
【図２】本発明の第２実施形態に係る情報処理装置を含むシステムの構成を示すブロック図である。
【図３】本発明の第２実施形態に係るシステムおけるリンクプロテクション機能を有する通信アプリケーションの一例を示すシーケンス図である。
【図４Ａ】本発明の第２実施形態に係る情報処理装置のソフトウェア階層を示す図である。
【図４Ｂ】本発明の第２実施形態に係る情報処理装置のソフトウェア階層のミドルウェア部分を示す図である。
【図５】本発明の全実施形態に共通の情報処理装置のマクロな動作手順を示すシーケンス図である。
【図６】本発明の第２実施形態に係る暗号処理のマクロな動作手順を示すシーケンス図である。
【図７Ａ】本発明の第２実施形態に係るミドルウェアのエンジン初期化処理の手順を示すシーケンス図である。
【図７Ｂ】本発明の第２実施形態に係る暗号初期化処理の手順を示すシーケンス図である。
【図７Ｃ】本発明の第２実施形態に係る暗号化処理の手順を示すシーケンス図である。
【図７Ｄ】本発明の第２実施形態に係る暗号終了処理の手順を示すシーケンス図である。
【図７Ｅ】本発明の第２実施形態に係るミドルウェアのエンジン終了処理の手順を示すシーケンス図である。
【図８】本発明のSecure Worldを有しない実施形態に共通の情報処理装置のハードウェア構成を示すブロック図である。
【図９Ａ】本発明のSecure Worldを有しない実施形態に共通のスタック領域の構成を示す図である。
【図９Ｂ】本発明の全実施形態に共通のストレージにおける格納データの構成を示す図である。
【図９Ｃ】本発明の全実施形態に共通のストレージにおける格納データの構成を示す図である。
【図９Ｄ】本発明のSecure Worldを有しない実施形態に共通のストレージにおける格納データの構成を示す図である。
【図９Ｅ】本発明の全実施形態に共通の情報処理装置の処理手順を示すフローチャートである。
【図９Ｆ】本発明の全実施形態に共通のミドルウェアエンジン処理の手順を示すフローチャートである。
【図９Ｇ】本発明のSecure Worldを有しない実施形態に共通の各機能処理の手順を示すフローチャートである。
【図９Ｈ】本発明のSecure Worldを有しない実施形態に共通の暗号化処理の手順を示すフローチャートである。
【図９Ｉ】本発明のSecure Worldを有しない実施形態に共通のＳＳＴ処理の手順を示すフローチャートである。
【図１０】本発明の第３実施形態に係る秘密記憶処理のマクロな動作手順を示すシーケンス図である。
【図１１Ａ】本発明の第３実施形態に係る秘密記憶部(Secure Storage)の初期化処理の手順を示すシーケンス図である。
【図１１Ｂ】本発明の第３実施形態に係るWrite準備処理の手順を示すシーケンス図である。
【図１１Ｃ】本発明の第３実施形態に係るWrite処理の手順を示すシーケンス図である。
【図１１Ｄ】本発明の第３実施形態に係るRead処理の手順を示すシーケンス図である。
【図１１Ｅ】本発明の第３実施形態に係る秘密記憶部(Secure Storage)の終了処理の手順を示すシーケンス図である。
【図１２】本発明の第４実施形態に係る情報処理装置のソフトウェア階層を示す図である。
【図１３Ａ】本発明の第４実施形態に係る機密分離処理のマクロな動作手順を示すシーケンス図である。
【図１３Ｂ】本発明の第４実施形態に係る他の機密分離処理のマクロな動作手順を示すシーケンス図である。
【図１４Ａ】本発明の第４実施形態に係るＨＤＣＰシンク(Sink)の初期化処理の手順を示すシーケンス図である。
【図１４Ｂ】本発明の第４実施形態に係るＨＤＣＰの認証および鍵交換処理の手順を示すシーケンス図である。
【図１４Ｃ】本発明の第４実施形態に係るＨＤＣＰの認証および鍵交換処理の手順を示すシーケンス図である。
【図１４Ｄ】本発明の第４実施形態に係るＨＤＣＰの認証および鍵交換処理の手順を示すシーケンス図である。
【図１４Ｅ】本発明の第４実施形態に係る暗号化コンテンツ伝送処理の手順を示すシーケンス図である。
【図１４Ｆ】本発明の第４実施形態に係るＨＤＣＰシンク(Sink)の終了処理の手順を示すシーケンス図である。
【図１５Ａ】本発明のSecure Worldを有する実施形態に共通の情報処理装置のハードウェア構成を示すブロック図である。
【図１５Ｂ】本発明のSecure Worldを有する実施形態に共通のスタック領域の構成を示す図である。
【図１５Ｃ】本発明のSecure Worldを有する実施形態に共通のストレージにおける格納データの構成を示す図である。
【図１５Ｄ】本発明のSecure Worldを有する実施形態に共通の各機能処理の手順を示すフローチャートである。
【図１５Ｅ】本発明のSecure Worldを有する実施形態に共通のＨＤＣＰ  Ｓｉｎｋ処理の手順を示すフローチャートである。
【図１６Ａ】本発明の第５実施形態に係る情報処理装置のソフトウェア階層を示す図である。
【図１６Ｂ】本発明の第５実施形態に係る情報処理装置の他のソフトウェア階層を示す図である。
【図１６Ｃ】本発明の第５実施形態に係る情報処理装置の他のソフトウェア階層を示す図である。
【図１６Ｄ】本発明の第５実施形態に係る情報処理装置の他のソフトウェア階層を示す図である。
【図１７Ａ】本発明の第６実施形態に係る情報処理装置のソフトウェア階層を示す図である。
【図１７Ｂ】本発明の第６実施形態に係る情報処理装置の他のソフトウェア階層を示す図である。
【図１８】本発明の第７実施形態に係る記憶媒体を経由してデータ交換を行なうシステムの機密保護機能を説明する図である。
【発明を実施するための形態】
【００１３】
以下に、図面を参照して、本発明の実施の形態について例示的に詳しく説明する。ただし、以下の実施の形態に記載されている構成要素は単なる例示であり、本発明の技術範囲をそれらのみに限定する趣旨のものではない。なお、本明細書におけるデータ交換を行なうアプリケーションには、リンクプロテクション機能を有するデータ交換のアプリケーションやコピーガード機能を有するデータ交換のアプリケーション、あるいは、記憶媒体を経由するデータ交換のためのアプリケーションが含まれる。
【００１４】
［第１実施形態］
本発明の第１実施形態としての情報処理装置１００について、図１を用いて説明する。情報処理装置１００は、データ交換を行なうアプリケーション中の暗号化および復号を含む機能を実行する装置である。
【００１５】
図１に示すように、情報処理装置１００は、第１インタフェース部１０１と、第２インタフェース部１０２と、制御部１０３と、を含む。第１インタフェース部１０１は、機密にデータ交換を実現する複数のアプリケーション１１０と共通の処理手順でデータ交換が可能である。第２インタフェース部１０２は、暗号化機能および復号機能を実現する複数のハードウェア１２０のそれぞれとデータ交換が可能である。制御部１０３は、第１インタフェース部１０１と第２インタフェース部１０２とを介して、複数のアプリケーション１１０の少なくともいずれか１つと複数のハードウェア１２０の少なくともいずれか１つとのデータ交換を制御する。
【００１６】
さらに、制御部１０３は、アプリケーションから初期化指示を受けて、ライブラリとして準備されたソフトウェアモジュール群および使用するハードウェアを初期化する第１初期化処理部１０４と、アプリケーションから、暗号化および復号を含む機密情報処理の実行指示を受けて、初期化されたソフトウェアモジュール群およびハードウェアを用いて機密情報処理を実行する機密情報処理部１０５と、アプリケーションから処理の終了指示を受けて、前記初期化され用いられたソフトウェアモジュール群およびハードウェアに対して終了処理をする第１終了処理部１０６と、を有する。
【００１７】
本実施形態によれば、初期化処理と機密情報処理と終了処理とからなるシーケンスで処理することにより、所望の暗号化および復号を含む機能を複数のデータ交換を行なうアプリケーションから共通のシーケンスに従って利用することができる。
【００１８】
［第２実施形態］
次に、本発明の第２実施形態に係る情報処理装置について説明する。本実施形態に係る情報処理装置は、複数の通信アプリケーションから、初期化処理と機密情報処理と終了処理とからなる共通のシーケンスに従って所望の暗号化および復号を含む機能を利用できる。なお、本実施形態においては、通信アプリケーションはリンクプロテクション(Link Protection)機能を実現するために使用する通信アプリケーションである。また、使用するハードウェアが接続されていない場合、ライブラリとして準備されたモジュールによりハードウェアを代替する。また、通信アプリケーションからの指示を、通信アプリケーションのプロトコルに従って、初期化処理または機密情報処理または終了処理への指示に変換する指示変換部をさらに備える。また、初期化処理は、共通のミドルウェアエンジンの初期化処理、および、暗号化の初期化処理を含み、終了処理は、共通のミドルウェアエンジンの終了処理、および、暗号化の終了処理を含む。
【００１９】
《システム》
図２は、本実施形態に係る情報処理装置を含むシステム２００の構成を示すブロック図である。
【００２０】
図２のシステム２００には、ネットワーク２７０により接続された、車内ネットワーク２１０と、宅内ネットワーク２２０と、ＳＳＬ(Secure Sockets Layer)などで接続される工場内ネットワーク２３０と、センサネットワーク２４０と、クラウドサーバ２５０と、コンテンツサーバ２６０と、が図示されている。
【００２１】
車内ネットワーク２１０は、本例ではＭＯＳＴ(Media Oriented Systems Transport)による車載器やマルチメディア機器のネットワークを形成し、クラウドサーバ２５０に対してはＩｏＴ(Internet of Things)の情報収集機器として、コンテンツサーバ２６０に対してはコンテンツ配信のシンク機器として接続される。また、同様に、宅内ネットワーク２２０は、本例ではＤＴＣＰ−ＩＰ(Digital Transmission Content Protection over Internet Protocol)を使用するＤＬＮＡ（登録商標）(Digital Living Network Alliance)やＨＤＣＰ(High-bandwidth Digital Content Protection system)を使用するＭｉｒａｃａｓｔによる家電機器やマルチメディア機器のネットワークを形成し、クラウドサーバ２５０に対してはＩｏＴの情報収集機器として、コンテンツサーバ２６０に対してはコンテンツ配信のシンク機器として接続される。
【００２２】
また、ＳＳＬネットワークなどで接続される工場内ネットワーク２３０が接続される。また、センサネットワーク２４０のように、ゲートウェイを介して、コンテンツサーバ２６０からの動作制御やファームウェア提供と共に、クラウドサーバ２５０に対してＩｏＴの情報収集機器として接続される。センサネットワーク２４０の場合には、通信プロトコル/通信経路の保護技術としては、SSL/TLSなどが主に使用される。
【００２３】
クラウドサーバ２５０は、複数のサーバ群から構成され、それぞれのネットワーク接続機器を制御すると共に、ＩｏＴの情報収集機器から収集した情報を分析あるいは解析して、その結果をユーザに提供したりシステム制御に利用したりする。コンテンツサーバ２６０は、車内ネットワーク２１０や宅内ネットワーク２２０のマルチメディア機器に対してコンテンツを提供する。
【００２４】
本実施形態のシステム２００においては、各ネットワークに接続された機器への情報提供時や機器からの情報収集時における、機密情報（例えば、各種の鍵情報など）や個人情報などの漏洩、あるいは、コンテンツの不正コピーなどを防止するため、異なる通信アプリケーションを使用する異なる種類の機器に対して、共通の機密処理用ミドルウェア(図中は、Middleware)２０１を組み込んでいる。この本実施形態の機密処理用ミドルウェア２０１は、異なる通信アプリケーションと、異なる種類の機器が備える異なる暗号化／復号用ハードウェアと、を共通のシーケンスに従って結び付けることができる。
【００２５】
（通信アプリケーションのシーケンス）
図３は、本実施形態に係るシステム２００おけるリンクプロテクション機能を有する通信アプリケーションの一例を示すシーケンス図である。
【００２６】
図３には、ソース機器からシンク機器にコンテンツを提供する場合のリンクプロテクション機能を有する通信アプリケーションを示すが、本実施形態の機密処理用ミドルウェア２０１は、他のあらゆる通信アプリケーションにおける暗号化や復号を含む機密処理の各シーケンスにおいて、通信アプリケーションからの共通のシーケンスに従って動作することができる。
【００２７】
例えば、図３の通信アプリケーションにおいては、ステップＳ３０１における、認証と鍵共有(AKE)と所在確認(Locality Check)において交換されたコンテンツ鍵や共通鍵、秘密鍵などの機密情報を、機密処理用ミドルウェア２０１によってハードウェア的に分離された機密領域(Secure World)の機密データ記憶部(Secure Data Part)に保持する。また、ステップＳ３０３におけるコンテンツの暗号化、および、ステップＳ３０５におけるコンテンツ復号において、機密処理用ミドルウェア２０１によって機密データ記憶部に保持された鍵を用いて、各機器に準備されたハードウェアにより暗号化や復号を実行する。また、機密処理用ミドルウェア２０１によって暗号化されたコンテンツを秘密記憶部(Secure Storage)に保持する。なお、各機器に所望のハードウェアが準備されてない場合は、機密処理用ミドルウェア２０１が備えるソフトウェアにより代替する。
【００２８】
このように、本実施形態の機密処理用ミドルウェア２０１は、通信アプリケーションのプロトコルにおける機密性を求めるシーケンスにおいて、通信アプリケーションからの要求に応えて共通のシーケンスにしたがって異なる処理に対応する。
【００２９】
《情報処理装置のソフトウェア階層》
図４Ａおよび図４Ｂは、本実施形態に係る情報処理装置４００のソフトウェア階層を示す図である。図４Ｂは、ミドルウェア部分を詳細に示す図である。すなわち、図４Ｂのミドルウェア部分は、図４Ａの情報処理装置４００のソフトウェア階層の一部に機能組込されている。その場合、情報処理装置４００のソフトウェア階層全体を、ミドルウェア部分が組み込まれた情報処理システムとしても表現できる。
【００３０】
情報処理装置４００のソフトウェア階層は、Application層４０１および４０２と、Middlewareとして提供されるHDCP SDK層４１０と、Middlewareとして提供される本実施形態の暗号化／復号層のMiddleware２０１と、ＯＳとの接続層４３１および４３２と、ＯＳ層４４０と、ハードウェア層４５０、４５１および４５２とを有する。
【００３１】
（Application層）
User Application４０１は、暗復号化処理とセキュアに扱うべきデータを読み書きの機能が必要なユーザが独自に開発するアプリケーションを示す。一方、User Application４０２は、HDCP SDK４１０のＡＰＩを使用してHDCP対向機とのＡＫＥ(Authentication and Key Exchange)開始の指示や、検出したトポロジーチェンジに対する具体的な動作の制御を行うアプリケーションを示す。ソース機器の場合は、ＡＫＥの完了後、送信するストリーミングデータを生成してHDCP  SDK４１０に入力する。一方、シンク機器の場合、ＡＫＥ完了後、HDCP SDK４１０が復号化したストリーミングデータの描画処理を行う。なお、Applicationは上記例に限定されない。種々の暗号化や復号に関連するハードウェアを利用するApplicationが接続可能である。
【００３２】
（HDCP SDK層：通信プロトコルのMiddleware）
HDCP SDK４１０は、例えば、HDCP 2.2 の仕様（HDCP Specification Rev. 2.2 Interface Independent Adaptation）に基づき、以下の機能を提供する。
(1) ＤＣＰ(Digital Content Protection, LLC) が発行するデバイス鍵を使用して、対向となるHDCP機器とＡＫＥを実行してセッションキーを共有する。
(2) セッションキーを使用したストリーミングデータの暗号化/復号化を行なう。
(3) 接続されているHDCP機器のトポロジーチェンジの検出と通知を行なう。
(4) HDCPソース機器の場合、ＳＲＭ(System Renewability Message)リストに基づいた無効機器の検出を行なう。
【００３３】
HDCP SDK４１０のSecure Data Partは、ＡＫＥのシーケンスで扱うデータのうち、HDCPの仕様によりセキュアに扱うことが定められているデータを扱う箇所であり、例えば、セッションキーやDCPが発行するデバイス鍵などを保持する。一方、HDCP SDK４１０のNon Secure Data Partは、ＡＫＥのシーケンスで扱うデータのうち、ネットワーク上に非暗号データとして流れるなど、HDCPの仕様によりセキュアに扱うことが定められていないデータを扱う箇所であり、例えば、DCPが発行する公開鍵やHDCP機器の機能を示すフラグなどを保持する。また、HDCP SDK４１０のCommunication Partは、ＡＫＥを行う際に使用するネットワーク通信セッションの確立や、ＡＫＥ完了後、セッションキーにより暗復号化されたストリーミングデータのやり取りを行う。
【００３４】
（暗号化／復号層のMiddleware）
暗号化／復号層のMiddleware２０１は、User Application４０１または４０２から直接、あるいは、HDCP SDK層４１０を介してインタフェースするPublic API４２１と、ハードウェアとの接続を管理するPrivate Layer４２２と、各ハードウェアとの接続を行なうPorting Layer４２３と、を有する。Public API４２１としては、Cryptography APIsとSecure Storage APIsとSecure Data Interfaceとを含む。また、Private Layer４２２としては、Cryptography Module用Private Layerと、Secure Storage Module用Private Layerと、Secure Data Interface Module用Private Layerと、を含む。また、Porting Layer４２３としては、Cryptography Module用Porting Layerと、Secure Storage Module用Porting Layerと、Secure Data Interface Module用Porting Layerと、を含む。なお、本実施形態においては、暗号化処理を行なうので、Secure StorageおよびSecure Data Interface用のモジュールは使用されない。
【００３５】
（ＯＳとの接続層）
ＯＳとの接続層は、アプリケーション層４０１または４０２とＯＳ層４４０とを直接、接続する接続層(Middleware of OS)４３１と、暗号化／復号層のMiddleware２０１とＯＳ層４４０とを接続するSoC depended Secure Middleware for Non Secure OS４３２と、を有する。
【００３６】
（ＯＳ層）
ＯＳ層４４０は、OS driverとOSとを有する。
【００３７】
（ハードウェア層）
ハードウェア層は、SoC４５０と、各ハードウェア４５１あるいは４５２と、を有する。図４Ａにおいては、Hardware Accelerated４５１とSecure Storage Feature４５２とを示すが、これらに限定されない。他の機密保護の暗号化や復号に関連する機能を有するハードウェアが接続可能である。
【００３８】
（Secure World）
Secure WorldとHDCP SDK４１０を組み合わせた場合、図１２のように、HDCP SDK４１０のSecure Data PartがSecure OS内に入り、Non Secure OS上で動作するHDCP SDKは、Secure Data Interfaceを使用してSecure OS内で動作するSecure Data Partとやり取りを行うことになる。
【００３９】
《マクロシーケンス》
図５は、全実施形態に共通の情報処理装置のマクロな動作手順を示すシーケンス図である。なお、図５において、図４Ａおよび図４Ｂと同様の構成要素には同じ参照番号を付している。
【００４０】
Customer Application４０１、４０２からMiddleware２０１に初期化の要求（呼び出し）があると、Middleware２０１は、ステップＳ５０１において、使用するMiddlewareのモジュールおよびハードウェアの起動処理（初期化処理）を行なう。
【００４１】
次に、Customer Application４０１、４０２からMiddleware２０１に暗号化や復号を含む機密情報処理の要求（呼び出し）があると、Middleware２０１は、ステップＳ５０３において、初期化されたMiddlewareのモジュールおよびハードウェアを用いて、機密情報処理を行なう。本実施形態においては、機密情報処理として、Cryptography APIs（暗号化処理）と、Secure Storage（暗号データ記憶処理）と、Secure Data Interface（機密データ保護処理）とを示すが、これに限定されることなく、暗号化や復号をそのシーケンス中に含むあらゆるアプリケーションへの共通の対応が可能である。
【００４２】
暗号化や復号を含む各機密情報処理が完了すると、Customer Application４０１、４０２からMiddleware２０１に終了の要求（呼び出し）があり、Middleware２０１は、ステップＳ５０５において、初期化され使用されたMiddlewareのモジュールおよびハードウェアの終了処理を行なう。
【００４３】
《暗号処理シーケンス》
図６は、本実施形態に係る暗号処理のマクロな動作手順を示すシーケンス図である。暗号処理は、アプリケーションからの要請を受けてそれぞれのデータの暗号化あるいは復号を行なう処理である。
【００４４】
Customer Application４０１、４０２からMiddleware２０１に初期化の要求（呼び出し）があると、Middleware２０１は、ステップＳ５０１において、起動処理を行なう。起動処理において、Middleware２０１は、ステップＳ６１１において、Secureエンジンモジュールの初期化処理を行なう。
【００４５】
次に、Middleware２０１は、ステップＳ５０３において、機密情報処理を行なう。本暗号化処理においては、まず、Customer Application４０１、４０２からMiddleware２０１にデータの暗号初期化処理の要求（呼び出し）がある。Middleware２０１は、ステップＳ６３１において、暗号化ハードウェアおよび暗号化モジュールの初期化を行なう。そして、Customer Application４０１、４０２からMiddleware２０１にデータの暗号化処理の要求（呼び出し）があり、Middleware２０１は、ステップＳ６３３において、暗号化ハードウェアを用いて暗号化モジュールによる暗号化処理を行なう。暗号化や復号を含む各機密情報処理が完了すると、Customer Application４０１、４０２からMiddleware２０１に暗号終了処理の要求（呼び出し）があり、Middleware２０１は、ステップＳ６３５において、機密情報処理における暗号化モジュールと暗号化ハードウェアの終了処理を行なう。
【００４６】
Customer Application４０１、４０２からMiddleware２０１に処理終了の要求（呼び出し）があり、Middleware２０１は、ステップＳ５０５において、終了処理を行なう。すなわち、Middleware２０１は、ステップＳ６５１において、Secureエンジンモジュールの終了処理を行なう。
【００４７】
（エンジン初期化処理）
図７Ａは、本実施形態に係るミドルウェアのエンジン初期化処理(Ｓ６１１：Initializing)の手順を示すシーケンス図である。ミドルウェアのエンジン初期化処理(Ｓ６１１)においては、本実施形態に係るミドルウェアが動作するための基礎環境を整備する。例えば、Private Layer４２２が使用するデータ構造体の初期化処理、および、初期値設定処理などを実施、以降の処理のための記憶領域の確保（スタックの形成）などの準備をする。その後、Porting Layer４２３の初期化処理として、本情報処理装置に接続されているハードウェアの初期化と正常動作判定を実施する。また、本情報処理装置にハードウェアが接続されていないセキュリティ機能に対しては、ライブラリ中の該当ソフトウェア機能を代替えの機能として設定し、ソフトウェア動作メモリ領域の確保、初期設定値の設定処理などの初期化処理を行う。
【００４８】
また、ハードウェアの動作判定によりハードウェアが正常動作を行っていないと判定された場合、もしくは、ライブラリ中のソフトウェア機能の動作に必要なメモリ領域などのリソースの確保ができないと判定された場合、ミドルウェアの初期化処理を中止する。また、Porting Layer４２３におけるハードウェア、および、ソフトウェアによるセキュリティ機能の処理が完了後、Private Layer４２２で管理するミドルウェアの動作状態を動作可能状態に遷移する。また、記憶領域に以降の処理のため、前述のセキュリティ機能初期化の際、オペレーティングシステムなどから取得するハンドル値、ミドルウェアのステータス、暗号化機能への参照件数を示す参照カウンタ値などをコアコンテキスト情報として確保する。すなわち、以降の「暗号初期化処理（Ｓ６３１）」や「Secure Storage初期化処理（Ｓ１０３１）」や「ＨＤＣＰSink初期化処理（Ｓ１３３３）」などのための準備をする。そして、ミドルウェアのエンジン初期化の完了とコアコンテキスト情報をアプリケーションに通知する。
【００４９】
Customer Application４０１、４０２に対して、ステップＳ７０１において、アプリケーションの開始が指示されると、Customer Application４０１、４０２は、ステップＳ７０２において、Secure Public API４２１のSecure Engineの初期化を呼び出す。Secure Public API４２１は、Customer Application４０１、４０２からのSecure Engineの初期化の呼び出しを受けて、ステップＳ７０３において、Secure Private Layer４２２にSecure Engineの初期化を指示する。Secure Private Layer４２２は、ステップＳ７０４において、Platform independent PartのSecure Engineの初期化を実行する。
【００５０】
Platform independent PartのSecure Engineの初期化が終了すると、Secure Private Layer４２２は、ステップＳ７０５において、Secure Porting Layer４２３に対して、Secure Engineの初期化を指示する。Secure Porting Layer４２３は、ステップＳ７０６において、Platform dependent PartのSecure Engineの初期化を実行する。
【００５１】
Platform dependent PartのSecure Engineの初期化が終了すると、Secure Porting Layer４２３は、SoC４５０のHardware Secure Engineが動作可能かを判定し、動作可能であれば、ステップＳ７０７において、Hardware Secure Engineを初期化する。一方、Hardware Secure Engineが搭載されていない場合、もしくは、利用できない場合、ステップＳ７０９において、ライブラリ中のSoftware Secure Engineを初期化する。
【００５２】
ステップＳ７０８において、Hardware Secure Engineの初期化が完了するか、ステップＳ７０９において、ライブラリ中のSoftware Secure Engineの初期化が完了すれば、ステップＳ７１０〜Ｓ７１２において、Secure Porting Layer４２３からSecure Private Layer４２２およびSecure Public API４２１を介して、Customer Application４０１、４０２に対して、ＯＫの初期化完了を返して、Secure Engineの初期化が終了する。
【００５３】
（暗号初期化処理）
図７Ｂは、本実施形態に係る暗号初期化処理（Ｓ６３１）の手順を示すシーケンス図である。暗号初期化処理（Ｓ６３１）においては、ミドルウェアのエンジン初期化処理(Ｓ６１１)において準備された基礎環境を用いながら、本実施形態に係る暗号化処理のための環境を整備する。例えば、本情報処理装置で提供する指定の暗号化機能に対して、対象となる暗号化方式のハードウェアが接続されている場合、ハードウェアを使用した暗号化を準備し、対象となる暗号化方式のハードウェアが接続されていない場合、ライブラリ中のソフトウェアで代替するよう設定する。また、記憶領域に以降の「暗号化処理（Ｓ６３３）」で使用するため、コアコンテキストへのポインタ、暗号化機能のステータスなどを含む暗号化コンテキスト情報を確保、コアコンテキスト情報の参照カウントを更新する。そして、暗号初期化処理の完了と暗号化コンテキスト情報をアプリケーションに通知する。
【００５４】
Customer Application４０１、４０２は、ステップＳ７２４において、Secure Public API４２１のCryptography APIsの初期化を呼び出す。Secure Public API４２１は、Customer Application４０１、４０２からのCryptography APIsの初期化の呼び出しを受けて、ステップＳ７２５において、Secure Private Layer４２２にCryptography Functionの初期化を指示する。Secure Private Layer４２２は、ステップＳ７２６において、Secure Engine statusをチェックする。
【００５５】
Secure Engine statusのチェックが終了すると、Secure Private Layer４２２は、ステップＳ７２７において、Secure Porting Layer４２３に対して、サポートしているoperation modeのチェックを指示する。Secure Porting Layer４２３は、ステップＳ７２８において、サポートされているFunction Tableをチェックする。operation modeがサポートされている場合、Secure Porting Layer４２３は、ステップＳ７２９において、ＭＯＤＥ  ＯＫをSecure Private Layer４２２に返す。
【００５６】
Secure Private Layer４２２は、ステップＳ７３０において、暗号化コンテキストを再構築する。そして、Secure Private Layer４２２は、ステップＳ７３１において、Cryptography Functionの初期化をSecure Porting Layer４２３に指示する。Secure Porting Layer４２３は、Hardware Cryptography Engine４５１が動作可能かを判定し、動作可能であれば、ステップＳ７３２において、Hardware Cryptography Engine４５１を初期化する。一方、Hardware Cryptography Engine４５１が動作可能でなければ、ステップＳ７３４において、ライブラリ中のSoftware Cryptography Engineを初期化する。
【００５７】
ステップＳ７３３において、Hardware Cryptography Engine４５１の初期化が完了するか、ステップＳ７３４において、ライブラリ中のSoftware Cryptography Engineの初期化が完了すれば、ステップＳ７３５〜Ｓ７３７において、Secure Porting Layer４２３からSecure Private Layer４２２およびSecure Public API４２１を介して、Customer Application４０１、４０２に対して、初期化ＯＫを返して、Cryptography Functionの初期化が終了する。
【００５８】
（暗号化処理）
図７Ｃは、本実施形態に係る暗号化処理（Ｓ６３３）の手順を示すシーケンス図である。暗号化処理（Ｓ６３３）においては、暗号初期化処理(Ｓ６３１)において準備された環境を用いながら、本実施形態に係る暗号化処理を実行する。例えば、本情報処理装置で提供する指定の暗号化機能に対して、対象となる暗号化方式のハードウェアが接続されている場合、ハードウェアを使用した暗号化を実行し、対象となる暗号化方式のハードウェアが接続されていない場合、ライブラリ中のソフトウェアで代替して実行する。そして、暗号化結果をアプリケーションに返すと共に、暗号化コンテキスト情報のステータスを更新する。
【００５９】
Customer Application４０１、４０２は、ステップＳ７３８において、暗号化する入力データを準備する。Customer Application４０１、４０２は、ステップＳ７３９において、Secure Public API４２１のCryptography Operationを呼び出す。Secure Public API４２１は、Customer Application４０１、４０２からのCryptography Functionの呼び出しを受けて、ステップＳ７４０において、Secure Private Layer４２２のCryptography Functionを呼び出す。Secure Private Layer４２２は、ステップＳ７４１において、Secure Porting Layer４２３のCryptography Functionを呼び出す。
【００６０】
Secure Porting Layer４２３は、Hardware Cryptography Engine４５１が動作可能かを判定し、動作可能であれば、ステップＳ７４２において、Hardware Cryptography Engine４５１による暗号化を実行させる。一方、Hardware Cryptography Engine４５１が動作可能でなければ、ステップＳ７４４において、ライブラリ中のSoftware Cryptography Engineにより暗号化を実行する。
【００６１】
ステップＳ７４３において、Hardware Cryptography Engine４５１による入力データの暗号化処理が完了するか、ステップＳ７４４において、ライブラリ中のSoftware Cryptography Engineによる入力データの暗号化が完了すれば、ステップＳ７４５〜Ｓ７４７において、Secure Porting Layer４２３からSecure Private Layer４２２およびSecure Public API４２１を介して、Customer Application４０１、４０２に対して、入力データの暗号化ＯＫを返して、Cryptography Operationの実行が終了する。
【００６２】
なお、図７Ｃの暗号化処理は、暗号化する入力データが無くなるまで繰り返される。
【００６３】
（暗号終了処理）
図７Ｄは、本実施形態に係る暗号終了処理(Ｓ６３５：Finalizing)の手順を示すシーケンス図である。暗号終了処理(Ｓ６３５）においては、暗号化処理(Ｓ６３３)において使用された資源の終了処理を行ない、資源を解放する。暗号化処理の状態を蓄積してもよい。本情報処理装置で提供する指定の暗号化機能に対して、対象となる暗号化方式のハードウェアが接続されている場合、ハードウェアを解放し、対象となる暗号化方式のハードウェアが接続されていない場合、ライブラリ中のソフトウェアを解放する。そして、コアコンテキスト情報の参照カウントを更新、記憶領域に確保されていた暗号化コンテキスト情報を解放し、暗号化の終了処理の完了をアプリケーションに通知する。
【００６４】
なお、図７Ｄのシーケンスは、図７Ｂのシーケンスにおける「初期化処理」を「終了処理」に置き換えたものであるので、詳細な繰り返しは省略する。ただし、図７Ｄにおいては、Secure Private Layer４２２が、ステップＳ７５６において、暗号化コンテキスト情報を解放する。
【００６５】
（エンジン終了処理）
図７Ｅは、本実施形態に係るミドルウェアのエンジン終了処理（Ｓ６５１）の手順を示すシーケンス図である。ミドルウェアのエンジン終了処理（Ｓ６５１）においては、エンジンの初期処理(Ｓ６１１）で準備された資源の終了処理を行ない、資源を解放する。処理の状態を蓄積してもよい。ミドルウェアのエンジンの動作に必要なハードウェアが接続されている場合、ハードウェアを解放し、ハードウェアが接続されていない場合、ライブラリ中のソフトウェアを解放する。そして、記憶領域に確保されていたコアコンテキスト情報を解放し、ミドルウェアによる処理の完了をアプリケーションに通知する。
【００６６】
なお、図７Ｅのシーケンスは、図７Ａのシーケンスにおける「初期化処理」を「終了処理」に置き換えたものであるので、詳細な繰り返しは省略する。ただし、図７Ｅにおいては、Secure Porting Layer４２３が、ステップＳ７７３において、Platform dependent PartのSecure Engineを終了させる。また、Secure Private Layer４２２が、ステップＳ７７５において、Platform independent PartのSecure Engineを終了させる。そして、Customer Application４０１、４０２は、ステップＳ７７８において、暗号化アプリケーションの終了を通知する。
【００６７】
《情報処理装置のハードウェア構成》
図８は、全実施形態に共通の情報処理装置４００のハードウェア構成を示すブロック図である。
【００６８】
図８で、ＣＰＵ(Central Processing Unit)８１０は演算制御用のプロセッサであり、プログラムを実行することで図４Ａおよび図１２の機能を実現する。なお、ＣＰＵ８１０は、それぞれの機能に対応して複数あってもよく、例えば、Non Secure WorldとSecure Worldとは、異なるＣＰＵで実現してもよい。ＲＯＭ(Read Only Memory)８２０は、初期データおよびプログラムなどの固定データおよびプログラムを記憶する。通信制御部８３０は、ネットワークを介して、他の装置との通信を制御する。
【００６９】
また、暗号化ハードウェア８７０は、１つまたは複数の本情報処理装置４００に必要な暗号化ハードウェアである。なお、暗号化ハードウェア８７０が無い場合は、ミドルウェアライブラリに準備された暗号化ソフトウェアが代替するため、暗号化ハードウェア８７０が１つも接続されてなくてもよい。
【００７０】
ＲＡＭ(Random Access Memory)８４０は、ＣＰＵ８１０が一時記憶のワークエリアとして使用するランダムアクセスメモリである。ＲＡＭ８４０には、本実施形態の実現に必要なデータを記憶する領域が確保されている。使用通信方式８４１は、通信アプリケーションが使用する通信方式である。使用暗号化／復号方式８４２は、使用通信方式８４１のプロトコル中に必要となる暗号化／復号方式である。暗号鍵／復号鍵８４３は、使用暗号化／復号方式８４２で使用される鍵であり、秘密鍵、公開鍵あるいは共通鍵を含む。暗号データ／署名データ８４４は、使用通信方式８４１のプロトコルに従って生成されたデータである。ハードウェア存否８４５は、暗号化／復号ハードウェアが接続されているか否かの判定結果であり、ハードウェアが存在しない場合は、ライブラリ中のソフトウェアで代替する。セッションキー８４６は、外部機器とのセッション開始時に交換される鍵であり、各セッションを特定する。Function Table８４７は、Porting Layerに配置されて、Secure Data PartとFunction Numberとの関係を記憶する。ＳＲＭリスト８４８は、無効機器との通信を禁止するための無効機器のリストである。スタック領域８４９は、ソフトウェア階層における動作、あるいは、組み込みソフトウェアの動作における使用データとその引渡を実現する。
【００７１】
ストレージ８５０は、データベースや各種のパラメータ、あるいは本実施形態の実現に必要な以下のデータまたはプログラムが記憶さる不揮発メモリである。通信方式格納部８５１は、各通信方式におけるプロトコルを格納する。暗号化／復号方式格納部８５２は、各通信方式に対応する暗号化／復号方式を格納する。メッセージフォーマット格納部８５３は、モジュール間のメッセージのフォーマットを格納する。ＳＳＴ領域８５４は、ＳＳＴに使用される領域である。Secure Data領域８５５は、Secure Data Partとして使用される領域である。ストレージ８５０には、以下のプログラムが格納される。Non Secure OSおよびSecure OS８５６は、それぞれNon Secure WorldとSecure Worldとに対応するＯＳである。組み込みソフトウェアとしてのMiddlewareは、通信制御ライブラリ８５７と本実施形態の機密制御ライブラリ８５８とを有する。アプリケーション８５９は、本情報処理装置４００が使用する通信アプリケーションを含むアプリケーションプログラムである。
【００７２】
入出力インタフェース８６０は、入出力デバイスとのデータ入出力を制御するためのインタフェースを行なう。本実施形態においては、入出力インタフェース８６０には、表示部８６１と、操作部８６２と、音声入出力部８６３と、が接続される。入出力インタフェース１２６０には、さらに、撮像部１２６１やＧＰＳ位置算出部１２６２、などが接続されてもよい。
【００７３】
なお、図８のＲＡＭ８４０やストレージ８５０には、情報処理装置４００が有する汎用の機能や他の実現可能な機能に関連するプログラムやデータは図示されていない。
【００７４】
（スタック領域）
図９Ａは、全実施形態に共通のスタック領域８４９の構成を示す図である。本実施形態において、スタック領域８４９はNon Secureスタック９１０とSecureスタック９２０とを有する。
【００７５】
Non Secureスタック９１０は、Non Secure OSによるスタック９１１と、Applicationによるスタック９１２と、通信プロトコルに対応するMiddlewareスタック９１３と、本実施形態の暗号化／復号に対応するMiddlewareスタック９１４と、を有する。本実施形態のMiddlewareスタック９１４は、Secureエンジン用スタック９１５と、暗号化用スタック９１６と、Secure Storage用スタック９１７と、通信プロトコル用スタック９１８と、を含む。なお、Middlewareスタック９１４内におけるスタック順は図９Ａに限定されない。
【００７６】
（ストレージの格納データ）
図９Ｂ乃至図９Ｄは、実施形態に共通のストレージ８５０における格納データの構成を示す図である。
【００７７】
図９Ｂに示す通信方式格納部８５１は、例えば、Miracast通信方式９３１と、ＨＤＣＰ通信方式９３２と、ＤＬＮＡ（登録商標）通信方式９３３と、ＤＴＣＰ−ＩＰ通信方式９３４と、ＤＴＣＰ−ＭＯＳＴ通信方式９３５と、Secure Data Mgmt通信方式９３６と、Customer通信方式９３７と、を含む。
【００７８】
図９Ｂに示す暗号化／復号方式格納部８５２は、例えば、ＲＡＳ方式９４１と、ＨＡＳＨ方式９４２と、ＡＥＳ方式９４３と、Ｍ６方式９４４と、を含む、なお、複数の暗号方式が１つの通信プロトコルで使用されることもある。
【００７９】
図９Ｃに示す本実施形態の暗号化／復号に対応するMiddlewareのSecure Public API１２２１およびSecure Data Interface１３２１が送受信するメッセージのメッセージフォーマット格納部８５３は、Invoke APIメッセージ９６１として、各処理対象９６２に対応つけて、処理９６３と、生成されるコンテキスト９６４と、応答メッセージ９６５と、を記憶する。
【００８０】
処理対象９６２は、例えば、Secure Engineと、Cryptography Functionと、Secure Storage Featureと、HDCP Sinkなどと、を含む。そして、各処理対象９６２は、初期化処理(Initialize)で開始され、終了処理(Finalize)で終了される。かかる構成と生成されたコンテキストにより、処理対象９６２への起動は、複数の処理対象に対して同時並行して、かつ、１つの処理対象に対して複数が同時並行して、実行される。すなわち、各処理対象９６２を初期化処理(Initialize)と終了処理(Finalize)とで囲うことにより、データ交換を行なうアプリケーシュンからの自在な処理が簡単に設計できる。なお、図９Ｃは、本実施形態の特徴を表わす一部を示したものであり、図９Ｃに限定されない。
【００８１】
図９Ｂに示す通信プロトコルに対応するMiddlewareを実現する通信制御ライブラリ８５７は、例えば、Miracast Sinkモジュール９５１と、ＨＤＣＰ  ＳＤＫモジュール９５２と、ＤＬＮＡ（登録商標）  ＳＤＫモジュール９５３と、ＤＴＣＰ−ＩＰ  ＳＤＫモジュール９５４と、ＤＴＣＰ−ＭＯＳＴ  ＳＤＫモジュール９５５と、を含む。
【００８２】
図９Ｄに示す本実施形態の暗号化／復号に対応するMiddlewareを実現する機密制御ライブラリ８５８は、Secure Public API群９７１と、Secure Private Layerモジュール群９７２と、Secure Porting Layerモジュール群９７３と、仮想ハードウェアモジュール群９７４と、を有する。Secure Public API群９７１は、Cryptography APIモジュールと、Secure Storage APIモジュールと、Secure Data Interfaceモジュールと、を含む。Secure Private Layerモジュール群９７２は、Non SecureのCryptographyモジュールと、Non SecureのSecure Storageモジュールと、Non SecureのSecure Data Interfaceモジュールと、を含む。Secure Porting Layerモジュール群９７３は、Cryptographyモジュールと、Secure Storageモジュールと、Non SecureのSecure Data Interfaceモジュールと、を含む。仮想ハードウェアモジュール群９７４は、ＲＡＳモジュールと、ＨＡＳＨモジュールと、ＡＥＳモジュールと、Ｍ６モジュールと、ＳＳＴモジュールと、を含む。なお、図示しないが、ＥＣＣやＤＨ等の他の暗号アルゴリズムが含まれてもよい。
【００８３】
《情報処理装置の処理手順》
図９Ｅは、全実施形態に共通の情報処理装置４００の処理手順を示すフローチャートである。図９Ｅのフローチャートは、図８のＣＰＵ８１０がＲＡＭ８４０を使用して実行し、図４Ａのソフトウェア階層における機密処理用ミドルウェア２０１の処理を実現する。
【００８４】
情報処理装置４００は、ステップＳ９１１において、アプリケーションからの処理指示の対象がミドルウェアエンジンであるか否かを判定する。処理指示の対象がミドルウェアエンジンである場合、情報処理装置４００は、ステップＳ９１３において、ミドルウェアエンジン処理を実行する。処理指示の対象がミドルウェアエンジンでない場合、情報処理装置４００は、ステップＳ９１５において、各機密情報処理が対象であるか否かを判定する。各機密情報処理が対象である場合、情報処理装置４００は、ステップＳ９１７において、各機密処理を実行する。
【００８５】
（ミドルウェアエンジン処理）
図９Ｆは、全実施形態に共通のミドルウェアエンジン処理（Ｓ９１３）の手順を示すフローチャートである。
【００８６】
情報処理装置４００は、ステップＳ９２１において、ミドルウェアエンジンの初期化(Initialize)であるか否かを判定する。ミドルウェアエンジンの初期化である場合、情報処理装置４００は、ステップＳ９２２において、ミドルウェアの基本モジュールを呼び出し、ステップＳ９２３において、基本コンテキストを生成して保持する。
【００８７】
ミドルウェアエンジンの初期化でない場合、情報処理装置４００は、ステップＳ９２４において、ミドルウェアエンジンの終了処理か否かを判定する。ドルウェアエンジンの終了処理であれば、情報処理装置４００は、ステップＳ９２５において、ミドルウェアの基本モジュールを呼び出し、ステップＳ９２６において、基本コンテキストを消去して記憶領域を解放する。
【００８８】
（各機能処理）
図９Ｇは、Secure Worldを有しない実施形態に共通の各機能処理（Ｓ９１７）の手順を示すフローチャートである。
【００８９】
情報処理装置４００は、ステップＳ９３１において、ミドルウェアエンジンが初期化済みかを判定し、ミドルウェアエンジンの初期化済みでない場合は、エラー処理を行なう。ミドルウェアエンジンの初期化済みである場合、情報処理装置４００は、ステップＳ９３２において、対象とする機能処理が暗号化機能であるか否かを判定する。対象とする機能処理が暗号化機能である場合、情報処理装置４００は、ステップＳ９３３において、暗号化処理を実行する。
【００９０】
対象とする機能処理が暗号化機能でない場合、情報処理装置４００は、ステップＳ９３４において、対象とする機能処理がＳＳＴ機能であるか否かを判定する。対象とする機能処理がＳＳＴ機能である場合、情報処理装置４００は、ステップＳ９３５において、ＳＳＴ処理を実行する。
【００９１】
対象とする機能処理が暗号化機能でなくＳＳＴ機能でない場合、情報処理装置４００は、ステップＳ９３６において、対象とする機能処理が他の機能であるか否かを判定する。対象とする機能処理が他の機能である場合、情報処理装置４００は、ステップＳ９３７において、他機能処理を実行する。暗号化機能でなくＳＳＴ機能でなく他機能でもない場合、情報処理装置４００は、エラー処理を行なう。
【００９２】
（暗号化処理）
図９Ｈは、Secure Worldを有しない実施形態に共通の暗号化処理（Ｓ９３３）の手順を示すフローチャートである。
【００９３】
情報処理装置４００は、ステップＳ９４１において、暗号初期化処理であるか否かを判定する。暗号初期化処理である場合、情報処理装置４００は、ステップＳ９４２において、暗号化ハードウェアが有るか否かを判定する。暗号化ハードウェアが有れば、情報処理装置４００は、ステップＳ９４３において、暗号化ハードウェアを初期化して、暗号化コンテキストを生成する。一方、暗号化ハードウェアが無ければ、情報処理装置４００は、ステップＳ９４４において、暗号化ソフトウェアを初期化して、暗号化コンテキストを生成する。
【００９４】
暗号初期化処理でない場合、情報処理装置４００は、ステップＳ９４５において、暗号化処理の実行か否かを判定する。暗号化処理の実行であれば、情報処理装置４００は、ステップＳ９４６において、暗号初期化済みであるか否かを判定する。暗号初期化済みでなければ、情報処理装置４００はエラー処理を行なう。暗号初期化済みであれば、情報処理装置４００は、ステップＳ９４７において、アプリケーションから暗号化する対象データを取得する。そして、情報処理装置４００は、ステップＳ９４８において、暗号化ハードウェアが有るか否かを判定する。暗号化ハードウェアが有れば、情報処理装置４００は、ステップＳ９４９において、取得データを暗号化ハードウェアで暗号化して、暗号化データをアプリケーションに返す。一方、暗号化ハードウェアが無ければ、情報処理装置４００は、ステップＳ９５０において、取得データを暗号化ソフトウェアで暗号化して、暗号化データをアプリケーションに返す。情報処理装置４００は、ステップＳ９５１において、対象データが無くなったか否かを判定し、対象データがまだあれば、ステップＳ９４７に戻って次の対象データを取得する。
【００９５】
暗号初期化でなく暗号化処理でもない場合、情報処理装置４００は、ステップＳ９５２において、暗号終了処理(Finalize)であるか否かを判定する。暗号終了処理である場合、情報処理装置４００は、ステップＳ９５３において、暗号初期化済みであるか否かを判定する。暗号初期化済みでなければ、情報処理装置４００はエラー処理を行なう。暗号初期化済みであれば、情報処理装置４００は、ステップＳ９５４において、暗号化ハードウェアが有るか否かを判定する。暗号化ハードウェアが有れば、情報処理装置４００は、ステップＳ９５５において、暗号化ハードウェアと対応する暗号化コンテキストとを解放する。一方、暗号化ハードウェアが無ければ、情報処理装置４００は、ステップＳ９５６において、暗号化ソフトウェアと対応する暗号化コンテキストとを解放する。
【００９６】
（ＳＳＴ処理）
図９Ｉは、Secure Worldを有しない実施形態に共通のＳＳＴ処理（Ｓ９３５）の手順を示すフローチャートである。
【００９７】
情報処理装置４００は、ステップＳ９６１において、ＳＳＴ初期化処理であるか否かを判定する。ＳＳＴ初期化処理である場合、情報処理装置４００は、ステップＳ９６２において、ＳＳＴハードウェアが有るか否かを判定する。ＳＳＴハードウェアが有れば、情報処理装置４００は、ステップＳ９６３において、ＳＳＴハードウェアを初期化して、ＳＳＴコンテキストを生成する。一方、ＳＳＴハードウェアが無ければ、情報処理装置４００は、ステップＳ９６４において、ＳＳＴソフトウェアを初期化して、ＳＳＴコンテキストを生成する。
【００９８】
ＳＳＴ初期化処理でなければ、情報処理装置４００は、ステップＳ９６５において、Write準備処理であるか否かを判定する。Write準備処理であれば、情報処理装置４００は、ステップＳ９６６において、ＳＳＴ初期化済みであるか否かを判定する。ＳＳＴ初期化済みでなければ、情報処理装置４００はエラー処理を行なう。ＳＳＴ初期化済みであれば、情報処理装置４００は、ステップＳ９６７において、Writeデータを取得して、所定の暗号化を行なった後、暗号データをアプリケーションに返す。
【００９９】
ＳＳＴ初期化処理でもWrite準備処理でもない場合、情報処理装置４００は、ステップＳ９６８において、Write処理の実行か否かを判定する。Write処理の実行であれば、情報処理装置４００は、ステップＳ９６９において、Write準備済みであるか否かを判定する。Write準備済みでなければ、情報処理装置４００はエラー処理を行なう。Write準備済みであれば、情報処理装置４００は、ステップＳ９７０において、Writeパラメータを生成し、アプリケーションの暗号データを復号する。そして、情報処理装置４００は、ステップＳ９７１において、ＳＳＴハードウェアが有るか否かを判定する。ＳＳＴハードウェアが有れば、情報処理装置４００は、ステップＳ９７２において、復号データをＳＳＴハードウェアに記憶する。一方、ＳＳＴハードウェアが無ければ、情報処理装置４００は、ステップＳ９７３において、復号データをＳＳＴソフトウェアに記憶する。情報処理装置４００は、ステップＳ９７４において、Writeが正常に終了したか否かを判定し、Write OKでなければエラー処理を行なう。
【０１００】
ＳＳＴ初期化処理でもWrite準備処理でもWrite処理でもない場合、情報処理装置４００は、ステップＳ９７５において、Read処理の実行か否かを判定する。Read処理の実行であれば、情報処理装置４００は、ステップＳ９７６において、ＳＳＴ初期化済みであるか否かを判定する。ＳＳＴ初期化済みでなければ、情報処理装置４００はエラー処理を行なう。ＳＳＴ初期化済みであれば、情報処理装置４００は、ステップＳ９７７において、Readパラメータを生成する。そして、情報処理装置４００は、ステップＳ９７８において、ＳＳＴハードウェアが有るか否かを判定する。ＳＳＴハードウェアが有れば、情報処理装置４００は、ステップＳ９７９において、ＳＳＴハードウェアからデータを読み出す。一方、ＳＳＴハードウェアが無ければ、情報処理装置４００は、ステップＳ９８０において、ＳＳＴソフトウェアからデータを読み出す。情報処理装置４００は、ステップＳ９８１において、Readが正常に終了したか否かを判定し、Read OKでなければエラー処理を行なう。
【０１０１】
ＳＳＴ初期化処理でもWrite準備処理でもWrite処理でもRead処理でもない場合、情報処理装置４００は、ステップＳ９８２において、ＳＳＴ終了処理(Finalize)であるか否かを判定する。ＳＳＴ終了処理である場合、情報処理装置４００は、ステップＳ９８３において、ＳＳＴ初期化済みであるか否かを判定する。ＳＳＴ初期化済みでなければ、情報処理装置４００はエラー処理を行なう。ＳＳＴ初期化済みであれば、情報処理装置４００は、ステップＳ９８４において、ＳＳＴハードウェアが有るか否かを判定する。ＳＳＴハードウェアが有れば、情報処理装置４００は、ステップＳ９８５において、ＳＳＴハードウェアと対応するＳＳＴコンテキストとを解放する。一方、ＳＳＴハードウェアが無ければ、情報処理装置４００は、ステップＳ９８６において、ＳＳＴソフトウェアと対応するＳＳＴコンテキストとを解放する。
【０１０２】
本実施形態によれば、暗号化処理を複数の通信アプリケーションから共通のシーケンスに従って利用することができる。
【０１０３】
［第３実施形態］
次に、本発明の第３実施形態に係る情報処理装置について説明する。本実施形態に係る情報処理装置は、上記第２実施形態と比べると、秘密記憶部(Secure Storage)に暗号化データをWriteおよびReadする点で異なる。その他の構成および動作は、第２実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。本実施形態において、初期化処理は、共通のミドルウェアエンジンの初期化処理、および、暗号化データを格納する格納部の初期化処理を含み、終了処理は、共通のミドルウェアエンジンの終了処理、および、暗号化データを格納する格納部の終了処理含む。
【０１０４】
《秘密記憶処理シーケンス》
図１０は、本実施形態に係る秘密記憶処理のマクロな動作手順を示すシーケンス図である。秘密記憶処理(Secure Storage)は、アプリケーションからの要請を受けて暗号化したデータを機密保持し、機密保持された暗号化データを読み出し復号を行なう処理である。なお、図１０において、図６と同様の構成要素には同じ参照番号、図６と同様のステップには同じステップ番号を付して、重複する説明は省略する。
【０１０５】
Customer Application４０１、４０２からMiddleware２０１に初期化の要求（呼び出し）があると、Middleware２０１は、ステップＳ５０１において、初期化処理を行なう。すなわち、図６と同様に、Middleware２０１は、ステップＳ６１１において、Secureエンジンモジュールの初期化処理を行なう。
【０１０６】
次に、Middleware２０１は、ステップＳ５０３において、機密情報処理を行なう。まず、Customer Application４０１、４０２からMiddleware２０１に機密情報処理としてのＳＳＴ初期化処理の要求（呼び出し）があると、Middleware２０１は、ステップＳ１０３１において、ＳＳＴ初期化処理を行なう。そして、秘密記憶処理においてＳＳＴへのWriteが必要であれば、Middleware２０１は、ステップＳ１０３３において、ＳＳＴへのWrite準備処理を行なう。そして、Middleware２０１は、ステップＳ１０３５において、ＳＳＴへのWrite処理を行なう。一方、秘密記憶処理においてＳＳＴからのReadが必要であれば、Middleware２０１は、ステップＳ１０３７において、ＳＳＴからのRead処理を行なう。暗号化や復号を含む各機密情報処理が完了すると、Customer Application４０１、４０２からMiddleware２０１にＳＳＴ終了処理の要求（呼び出し）があり、Middleware２０１は、ステップＳ１０３９において、ＳＳＴハードウェアおよびSecure Storageモジュールの終了処理を行なう。
【０１０７】
Middleware２０１は、ステップＳ５０５において、終了処理を行なう。すなわち、Middleware２０１は、ステップＳ６５１において、Secureエンジンモジュールの終了処理を行なう。
【０１０８】
（秘密記憶部の初期化処理）
図１１Ａは、本実施形態に係る秘密記憶部(Secure Storage)の初期化処理（Ｓ１０３１）の手順を示すシーケンス図である。秘密記憶部(Secure Storage)の初期化処理（Ｓ１０３１）においては、ミドルウェアのエンジン初期化処理(Ｓ６１１)において準備された基礎環境を用いながら、本実施形態に係るSecure StorageのWrite処理またはRead処理のための環境を整備する。例えば、パラメータで指定する Secure Storage のフォーマット情報を基にPrivate Layer４２２のSecure Storage機能で使用するデータ構造体などの初期化、および、不揮発メモリ上に配置するSecure Storage Management Databaseの初期化・初期値設定処理などを実施、以降の処理のための記憶領域の確保（スタックの形成）などの準備をする。その後、Porting Layer４２３の初期化処理として、本情報処理装置に接続されているSecure Storageとなるハードウェア(Secure Storage Feature４５２)の初期化と正常動作判定を実施する。また、本情報処理装置にSecure Storageとなるハードウェアが接続されていない場合、ライブラリ中の Secure Storage ソフトウェア機能を代替えの機能として設定し、ソフトウェア動作メモリ領域の確保、初期設定値の設定処理などの初期化処理を行う。
【０１０９】
また、ハードウェアの動作判定によりハードウェアが正常動作を行っていないと判定された場合、もしくは、ライブラリ中のソフトウェア機能の動作に必要なメモリ領域などのリソースの確保ができないと判定された場合、ミドルウェアの初期化処理を中止する。また、Porting Layer４２３におけるハードウェア、および、ソフトウェアによるセキュリティ機能の処理が完了後、Private Layer４２２で管理するミドルウェアのSecure Storageの動作状態を動作可能状態に遷移する。また、記憶領域に以降の「Write準備処理（Ｓ１０３３）」や「Read処理（Ｓ１０３７）」のため、コアコンテキス情報へのポインタ、前述のPorting Layer初期化の際、オペレーティングシステムなどから取得するハンドル値、Secure Storage Management Database のハンドル値、Secure Storage機能のステータスなどを含む秘密記憶部コンテキスト情報を確保する。そして、秘密記憶部の初期化処理の完了と秘密記憶部コンテキスト情報をアプリケーションに通知する。
【０１１０】
なお、図１１Ａは、図７Ａの「Secure Engine」を「Secure Storage」や「Secure Storage Engine」に置き換えたものと同様であり、詳細な繰り返しは省略する。
【０１１１】
（Write準備処理）
図１１Ｂは、本実施形態に係るWrite準備処理（Ｓ１０３３）の手順を示すシーケンス図である。Write準備処理（Ｓ１０３３）においては、秘密記憶部の初期化処理(Ｓ１０３１)において準備された環境を用いながら、本実施形態に係るSecure StorageへのWrite準備処理を実行する。例えば、Writeする秘密データを取得し、取得した秘密データを所定の方式で暗号化を行なった暗号化秘密データを生成する。そして、生成された暗号化秘密データをアプリケーションに返すと共に、Secure StorageへのWrite準備の完了をアプリケーションに通知する。
【０１１２】
Customer Application４０１、４０２は、ステップＳ１１３１において、オリジナルの秘密データを準備する。Customer Application４０１、４０２は、ステップＳ１１３２において、Secure Public API４２１の秘密データの書き込みの準備を呼び出す。Secure Public API４２１は、Customer Application４０１、４０２からの秘密データの書き込み準備の呼び出しを受けて、ステップＳ１１３３において、Secure Private Layer４２２に暗号化された秘密データを生成させる。Secure Private Layer４２２は、ステップＳ１１３４において、暗号化された秘密データを生成する。
【０１１３】
暗号化された秘密データの生成が終了すると、Secure Public API４２１を介して、Customer Application４０１、４０２に暗号化された秘密データの生成を通知する。Customer Application４０１、４０２は、ステップＳ１１３７において、対象機器のために、生成された暗号化秘密データを保存する。
【０１１４】
（Write処理）
図１１Ｃは、本実施形態に係るWrite処理（Ｓ１０３５）の手順を示すシーケンス図である。Write処理（Ｓ１０３５）においては、Write準備処理(Ｓ１０３３)において準備された暗号化秘密データのSecure StorageへのWrite処理を実行する。例えば、パラメータとして与えられた暗号化秘密データを所定の方式で復号化後、本情報処理装置のSecure Storageとなるハードウェア(Secure Storage Feature４５２)が接続されている場合、ハードウェアに対するWrite処理を実行し、Secure Storageとなるハードウェアが接続されていない場合、ライブラリ中のソフトウェアにより確保された仮想Secure Storageで代替する。また、ハードウェア、もしくは、ソフトウェアによる Write処理が完了後、Private Layer４２２で管理する Secure Storage Management Database を更新する。そして、Write処理の完了をアプリケーションに通知する。
【０１１５】
Customer Application４０１、４０２は、ステップＳ１１４１において、生成されて保存された暗号化秘密データを読み出す。
【０１１６】
Customer Application４０１、４０２は、ステップＳ１１４２において、Secure Public API４２１の秘密データ書込を呼び出す。Secure Public API４２１は、Customer Application４０１、４０２からの秘密データ書込の呼び出しを受けて、ステップＳ１１４３において、Secure Private Layer４２２にSecure Storageへの暗号化秘密データのWriteを指示する。
【０１１７】
Secure Private Layer４２２は、ステップＳ１１４４において、Secure EngineおよびSecure Storageのstatusをチェックする。Secure Private Layer４２２は、ステップＳ１１４５において、Secure Porting Layer４２３に入力パラメータおよび／またはランダム数を用いて書込パラメータの生成を指示して、Secure Porting Layer４２３は、ステップＳ１１４６において、書込パラメータの生成ＯＫを返す。
【０１１８】
Secure Private Layer４２２は、ステップＳ１１４７において、Secure Storageに書き込むために入力された暗号化データを復号する。そして、Secure Private Layer４２２は、ステップＳ１１４８において、秘密データのWriteをSecure Porting Layer４２３に指示する。
【０１１９】
Secure Porting Layer４２３は、Hardware Secure Storage Engine４５２が動作可能かを判定し、動作可能であれば、ステップＳ１１４９において、Hardware Secure Storage Engine４５２により秘密データをWriteする。Hardware Secure Storage Engine４５２が動作可能でなければ、ステップＳ１１５１において、ライブラリ中のSoftware Secure Storage Engineにより秘密データをWriteする。
【０１２０】
ステップＳ１１５０において、Hardware Secure Storage Engine４５２による秘密データのWriteが完了するか、ステップＳ１１５１において、ライブラリ中のSoftware Secure Storage Engineによる秘密データのWriteが完了すれば、ステップＳ１１５２〜Ｓ１１５４において、Secure Porting Layer４２３からSecure Private Layer４２２およびSecure Public API４２１を介して、Customer Application４０１、４０２に対して、WriteＯＫを返して、Secure StorageへのWrite処理が終了する。
【０１２１】
（Read処理）
図１１Ｄは、本実施形態に係るRead処理（Ｓ１０３７）の手順を示すシーケンス図である。Read処理（Ｓ１０３７）においては、Secure Storage初期化処理(Ｓ１０３１)において準備されたSecure StorageからのRead処理を実行する。例えば、パラメータとして指定する情報とPrivate Layer４２２で管理する Secure Storage Management Database を基に、本情報処理装置のSecure Storageとなるハードウェア(Secure Storage Feature４５２)が接続されている場合、ハードウェアからのRead処理を実行し、Secure Storageとなるハードウェアが接続されていない場合、ライブラリ中のソフトウェアにより代替えされる仮想Secure StorageからのRead処理を実行する。そして、Read処理の完了をアプリケーションに通知する。
【０１２２】
Customer Application４０１、４０２は、ステップＳ１１６１において、Secure Public API４２１の秘密データ読み出しを呼び出す。Secure Public API４２１は、Customer Application４０１、４０２からの秘密データ読出の呼び出しを受けて、ステップＳ１１６２において、Secure Private Layer４２２にSecure Storageからの秘密データのReadを指示する。
【０１２３】
Secure Private Layer４２２は、ステップＳ１１６３において、Secure EngineおよびSecure Storageのstatusをチェックする。Secure Private Layer４２２は、ステップＳ１１６４において、Secure Porting Layer４２３に入力パラメータを用いて読出パラメータの生成を指示して、Secure Porting Layer４２３は、ステップＳ１１６５において、読出パラメータの生成ＯＫを返す。
【０１２４】
Secure Private Layer４２２は、ステップＳ１１６６において、秘密データのReadをSecure Porting Layer４２３に指示する。
【０１２５】
Secure Porting Layer４２３は、Hardware Secure Storage Engine４５２が動作可能かを判定し、動作可能であれば、ステップＳ１１６７において、Hardware Secure Storage Engine４５２により秘密データをReadする。Hardware Secure Storage Engine４５２が動作可能でなければ、ステップＳ１１６９において、ライブラリ中のSoftware Secure Storage Engineにより秘密データをReadする。
【０１２６】
ステップＳ１１６８において、Hardware Secure Storage Engine４５２による秘密データのReadが完了するか、ステップＳ１１６９において、ライブラリ中のSoftware Secure Storage Engineによる秘密データのReadが完了すれば、ステップＳ１１７０〜Ｓ１１７２において、Secure Porting Layer４２３からSecure Private Layer４２２およびSecure Public API４２１を介して、Customer Application４０１、４０２に対して、ReadＯＫを返して、Secure StorageからのRead処理が終了する。
【０１２７】
（秘密記憶部の終了処理）
図１１Ｅは、本実施形態に係る秘密記憶部(Secure Storage)の終了処理（Ｓ１０３９）の手順を示すシーケンス図である。秘密記憶部の終了処理（Ｓ１０３９）においては、Secure Storageに対するＷrite処理(Ｓ１０３５)やRead処理（Ｓ１０３７）において使用された資源の終了処理を行ない、資源を解放する。秘密記憶処理の状態を蓄積してもよい。本情報処理装置のSecure Storageとなるハードウェアが接続されている場合、ハードウェアを解放し、Secure Storageとなるハードウェアが接続されていない場合、ライブラリ中のソフトウェアおよび確保されていた記憶領域を解放する。また、Private Layer４２２で管理するSecure Storage Management Databaseを更新する。そして、確保されていた秘密記憶部コンテキスト情報を解放し、秘密記憶処理の完了をアプリケーションに通知する。
【０１２８】
なお、図１１Ｅのシーケンスは、図７Ｅのシーケンスにおける「Secure Engineの終了処理」を「Secure Storageの終了処理」に置き換えたものであるので、詳細な繰り返しは省略する。なお、図１０に示すように、図１１ＥのSecure Storageの終了処理で秘密記憶部(Secure Storage)の記憶処理が完了した後、図７Ｅのシーケンスに従ったSecure Engineの終了処理を実行する。
【０１２９】
本実施形態によれば、秘密記憶部(Secure Storage)の記憶処理を複数の通信アプリケーションから共通のシーケンスに従って利用することができる。
【０１３０】
［第４実施形態］
次に、本発明の第４実施形態に係る情報処理装置について説明する。本実施形態に係る情報処理装置は、上記第２実施形態および第３実施形態と比べると、ハードウェア的に分離された、ノーマル実行環境である非機密部とセキュア実行環境である機密部とを生成し、機密部に秘匿性のより高い暗号化鍵、復号鍵およびセッション鍵を格納する点で異なる。その他の構成および動作は、第２実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【０１３１】
本実施形態における初期化処理は、共通のミドルウェアエンジンの初期化処理、暗号化の初期化処理、および、通信アプリケーションのプロトコルに従う初期化処理を含み、終了処理は、共通のミドルウェアエンジンの終了処理、暗号化の終了処理、および、通信アプリケーションのプロトコルに従う終了処理を含む。
【０１３２】
《情報処理装置のソフトウェア階層》
図１２は、本実施形態に係る情報処理装置１２００のソフトウェア階層を示す図である。なお、図１２において、図４Ａおよび図４Ｂと同様の構成要素には同じ参照番号を付して、重複する説明は省略する。
【０１３３】
情報処理装置１２００のソフトウェア階層は、Application層４０１および４０２と、Middlewareとして提供されるHDCP SDK層１２１０と、Middlewareとして提供される本実施形態の暗号化／復号層Middleware１２０１と、ＯＳとの接続層４３１、４３２および１２３２と、ＯＳ層１２４１および１２４２と、ファームウェア(Firmware)層１２６０と、ハードウェア層４５０、４５１および４５２とを有する。
【０１３４】
（HDCP SDK層：通信プロトコルのMiddleware）
本実施形態において、HDCP SDK１２１０は、ＡＫＥのシーケンスで扱うデータのうち、HDCPの仕様によりセキュアに扱うことが定められているデータ以外を扱う箇所であり、例えば、セッションキーやDCPが発行するデバイス鍵などを保持するためのSecure Data Partを有さない。Secure Data Partは、ハードウェア的に分離されたSecure World１２２５内に、Middleware's Secure Data Part１２２６として確保される。
【０１３５】
（暗号化／復号層のMiddleware）
暗号化／復号層Middleware１２０１は、Non Secure OS上のNon Secure OS Part(Non Secure World)１２２４と、Secure OS上のSecure OS Part(Secure World)１２２５と、に分離されている。
【０１３６】
Non Secure World１２２４は、User Application４０１または４０２から直接、あるいは、HDCP SDK層４１０を介してインタフェースするPublic API１２２１と、ハードウェアとの接続を管理するPrivate Layer１２２２と、Secure World１２２５とのハードウェア的に分離されたデータ転送を行なうためのPorting Layer１２２７と、を有する。
【０１３７】
一方、Secure World１２２５は、Non Secure World１２２４とのハードウェア的に分離されたデータ転送を行なうためのPorting Layer１２２８と、Secure World１２２５内でハードウェアとの接続を管理するPrivate Layer１２２２と、Secure World１２２５内でハードウェア層４５１および４５２を各々制御するPorting Layer１２２３と、Middleware's Secure Data Part１２２６と、を有する。
【０１３８】
なお、Porting Layer１２２７とPorting Layer１２２８との間のデータ転送１２２９は、ファームウェア(Firmware)層１２６０まで戻ることによって、ハードウェア的に分離される。
【０１３９】
（ＯＳとの接続層）
ＯＳとの接続層は、新たに、Secure World１２２５をSecureＯＳ層１２４２と接続するSoC depended Secure Middleware for Secure OS１２３３、を有する。
【０１４０】
（ＯＳ層）
ＯＳ層は、Non Secure World１２２４に対応するNon Secure OS driverおよびNon Secure OS１２４１と、Secure World１２２５に対応するSecure OS driverおよびSecure OS１２４２と、を有する。
【０１４１】
（ファームウェア層）
ファームウェア層１２６０は、Non Secure World１２２４とSecure World１２２５とをハードウェア的に分離する。
【０１４２】
《機密分離処理シーケンス》
（ＨＤＣＰにおける機密分離処理）
図１３Ａは、本実施形態に係る機密分離処理のマクロな動作手順を示すシーケンス図である。図１３Ａは、HDCP SDK１２１０とSecure Worldを組み合わせてHDCP sink deviceを実現する場合のシーケンス図である。なお、図１３Ａにおいて、図６および図１０と同様の構成要素には同じ参照番号、図６と同様のステップには同じステップ番号を付して、重複する説明は省略する。
【０１４３】
ＨＤＣＰSinkのCustomer Application４０１、４０２からMiddleware２０１に初期化の要求（呼び出し）があると、Middleware２０１は、ステップＳ５０１において、初期化処理を行なう。すなわち、Middleware２０１は、ステップＳ６１１において、Secureエンジンモジュールの初期化処理を行なう。ステップＳ１０１３において、ＳＳＴハードウェアおよびSecure Storageモジュールの初期化処理を行ない、ステップＳ１３１５において、MiddlewareのHDCP SDK層１２１０と協働して、ＨＤＣＰSinkの初期化処理を行なう。
【０１４４】
次に、Middleware２０１は、ステップＳ５０３において、機密情報処理を行なう。まず、Customer Application４０１、４０２からMiddleware２０１に機密情報処理としてＳＳＴ初期化処理の要求（呼び出し）があると、Middleware２０１は、ステップＳ１０３１において、ＳＳＴハードウェアおよびSecure Storageモジュールの初期化処理を行ない、Secure Storageを使用可能とする。次に、Customer Application４０１、４０２からMiddleware２０１に機密情報処理としてHDCP Sink初期化処理の要求（呼び出し）があると、Middleware２０１は、ステップＳ１３３３において、MiddlewareのHDCP SDK層１２１０と協働して、ＨＤＣＰSinkの初期化処理を行なう。機密分離処理において、ＨＤＣＰSource１３０１からＨＤＣＰSink４０２にセッション開始のトリガがあると、HDCP SDK１２１０を含むMiddleware２０１は、ステップＳ１３３５において、ＨＤＣＰの認証および鍵交換処理を行なう。そして、Middleware２０１は、ステップＳ１３３７において、暗号化コンテンツ伝送処理を行なう。本例では、シンク機器につき説明するが、ソース機器においても、セッションのトリガやデータ伝送方向が異なるのみで同様である。暗号化や復号を含む各機密情報処理が完了すると、Customer Application４０１、４０２からMiddleware２０１にHDCP Sink処理終了の要求（呼び出し）があり、Middleware２０１は、ステップＳ１３３９において、終了処理を行なう。次に、Middleware２０１は、ステップＳ１０３９において、ＳＳＴハードウェアおよびSecure Storageモジュールの終了処理を行なう。
【０１４５】
Customer Application４０１、４０２からMiddleware２０１に処理終了の要求（呼び出し）があり、Middleware２０１は、ステップＳ５０５において、終了処理を行なう。すなわち、Middleware２０１は、ステップＳ６５３において、Secureエンジンモジュールの終了処理を行なう。
【０１４６】
（ＤＴＣＰにおける機密分離処理）
図１３Ｂは、本実施形態に係る他の機密分離処理のマクロな動作手順を示すシーケンス図である。図１３Ｂは、DTCP SDK１３１０とSecure Worldを組み合わせてDTCP sink deviceを実現する場合のシーケンス図である。なお、図１３Ｂにおいて、図６、図１０および図１３Ａと同様の構成要素には同じ参照番号、図６および図１３Ａと同様のステップには同じステップ番号を付して、重複する説明は省略する。
【０１４７】
DTCP sink deviceのCustomer Application１３０２からMiddleware２０１に初期化の要求（呼び出し）があると、Middleware２０１は、ステップＳ５０１において、初期化処理を行なう。すなわち、Middleware２０１は、ステップＳ６１１において、Secureエンジンモジュールの初期化処理を行なう。
【０１４８】
次に、Middleware２０１は、ステップＳ５０３において、機密情報処理を行なう。まず、Customer Application１３０２からMiddleware２０１に機密情報処理の準備として、ＳＳＴ初期化処理の要求（呼び出し）があると、Middleware２０１は、ステップＳ１０３１において、ＳＳＴハードウェアおよびSecure Storageモジュールの初期化処理を行なう。次に、ＤＴＣＰSinkの初期化処理の要求（呼び出し）があると、ステップＳ１３４１において、MiddlewareのDTCP SDK層と協働して、ＤＴＣＰSinkの初期化処理を行なう。機密分離処理において、ＤＴＣＰSource１３１１からＤＴＣＰSink１３０２にセッション開始のトリガがあると、DTCP SDK１３１０を含むMiddleware２０１は、ステップＳ１３３５において、ＤＴＣＰの認証および鍵交換処理を行なう。そして、Middleware２０１は、ステップＳ１３４５において、暗号化コンテンツ伝送処理を行なう。本例では、シンク機器につき説明するが、ソース機器においても同様である。暗号化や復号を含む各機密情報処理が完了すると、Customer Application１３０２からMiddleware２０１にDTCP Sink処理終了の要求（呼び出し）があり、Middleware２０１は、ステップＳ１３４７において、ＤＴＣＰSinkの終了処理を行ない、ステップＳ１０３９において、ＳＳＴハードウェアおよびSecure Storageモジュールの終了処理を行なう。
【０１４９】
暗号化や復号を含む各機密情報処理が完了すると、Customer Application４０１、４０２からMiddleware２０１に処理終了の要求（呼び出し）があり、Middleware２０１は、ステップＳ５０５において、終了処理を行なう。すなわち、Middleware２０１は、ステップＳ６５１において、Secureエンジンモジュールの終了処理を行なう。
【０１５０】
《ＨＤＣＰにおける機密分離処理の詳細》
以下、ＨＤＣＰにおける機密分離処理を代表として、機密分離処理の詳細なシーケンスを示すが、ＤＴＣＰにおける機密分離処理あるいは他のリンクプロテクション機能やコピーガード機能を有する機密分離処理においても、プロトコルに対応した同様のシーケンスにより実現される。
【０１５１】
（ＨＤＣＰシンクの初期化処理）
図１４Ａは、本実施形態に係るＨＤＣＰシンク(Sink)の初期化処理（Ｓ１３３３）の手順を示すシーケンス図である。ＨＤＣＰシンク(Sink)の初期化処理（Ｓ１３３３）においては、ミドルウェアのエンジン初期化処理(Ｓ６１１)において準備された基礎環境を用い、前述のSecureエンジン処理化処理（Ｓ６１１）およびSecure Storage初期化処理（Ｓ１０３１）を実行した後、本実施形態に係るＨＤＣＰシンク(Sink)の初期化処理のための環境を整備する。例えば、HDCPのAKE シーケンスにおいて使用するデバイス鍵セットなどの機密データをSecure Storageなどから取得して、Secure Worldに確保されたSecure Data Part１２２６に接続し、Secure Dataを保持する。あるいは、読み出して使用するための準備をする。また、以降の「ＨＤＣＰ認証および鍵交換処理（Ｓ１３３５）」や「暗号化コンテンツ伝送処理（Ｓ１３３７）」のため、コアコンテキスト情報へのポインタ、HDCP ライブラリのステータスなどを含むHDCPコンテキスト情報を確保する。そして、ＨＤＣＰシンク(Sink)の初期化処理の完了とHDCPコンテキスト情報をアプリケーションに通知する。
【０１５２】
なお、図１４Ａにおいて、ステップＳ６１１およびＳ１０１３は、図７Ａのミドルウェアのエンジン初期化処理および図１１Ａの秘密記憶部(Secure Storage)の初期化処理であるので、重複を避けて説明を省略する。なお、以下の図１４Ａから図１４Ｆにおいて、ＯＫなどの応答信号については煩雑さを避けるため図示および説明を省略する。
【０１５３】
ＨＤＣＰSink Application４０２は、ステップＳ１４０１において、ＨＤＣＰ  ＳＤＫ１２１０のＨＤＣＰSink初期化を呼び出す。ＨＤＣＰ  ＳＤＫ１２１０は、ＨＤＣＰSink Application４０２からのＨＤＣＰSink初期化の呼び出しを受けて、ステップＳ１４０２において、HDCPコンテキスト情報を確保しＨＤＣＰの機能(featureとも言う)とHDCPコンテキスト情報とを初期化する。
【０１５４】
ＨＤＣＰ  ＳＤＫ１２１０は、ステップＳ１４０３において、ＨＤＣＰシンク機器のデバイス鍵としてSecure Storage DataをSecure Public API１２２１に与える。Secure Public API１２２１は、ステップＳ１４０４において、Secure Storage DataをSecure Private Layer１２２２に与える。Secure Private Layer１２２２は、ステップＳ１４０５において、Secure Storage DataをSecure Porting Layer１２２３に与える。
【０１５５】
また、ＨＤＣＰ  ＳＤＫ１２１０は、ステップＳ１４０６において、Secure Data Interface１３２１に対し、ＨＤＣＰ  Secure Data Partの初期化を指示する。Secure Data Interface１３２１は、ステップＳ１４０７において、Secure Porting Layer１２２７を介してSecure Porting Layer１２２８に対し、ＨＤＣＰ  Secure Data Partの初期化を指示する。Secure Porting Layer１２２７、１２２８は、ステップＳ１４０８において、function numberを実際のfunction nameに変換し、ステップＳ１４０９において、ＨＤＣＰ  Secure Data Part１２２６に対して初期化を指示する。
【０１５６】
なお、Secure Data Interface経由でアクセスするSecure Data Partは、Function Numberで識別する。ここで、Secure Data PartとFunction Numberとの関係は、Porting Layerに配置するFunction Tableで管理される。このFunction Tableは、Function Numberと、該当するFunction NumberのSecure Data Partのプログラムの呼び出しアドレス、および、呼び出しで使用する引数の個数を持つ。Secure Data Partのプログラムの呼び出しで使用する引数は、可変長のデータである。
【０１５７】
（ＨＤＣＰの認証および鍵交換処理）
図１４Ｂ乃至図１４Ｄは、本実施形態に係るＨＤＣＰの認証および鍵交換処理（Ｓ１３３５）の手順を示すシーケンス図である。ＨＤＣＰの認証および鍵交換処理（Ｓ１３３５）においては、ＨＤＣＰシンク(Sink)の初期化処理（Ｓ１３３３）で整備された環境を用いて、まず、本例では、ＨＤＣＰソース機器からのセッション開始の指示を受けて、ＨＤＣＰシンク機器とＨＤＣＰソース機器との間での、認証および鍵交換のプロトコルに従ったメッセージ交換を実現する。同時に、通信相手から取得したAKEシーケンス上の機密データkmを暗号化したデータであるEkmなどをSecure Data Part１２２６内に保持している HDCPシンク機器の機密データであるプライベート鍵kprivrxで復号化後、Secure Data Part１２２６内に保持する。また、HDCPシンク機器の機密データであるプライベート鍵kprivrxを基に生成されるkhと、Secure Data Part１２２６で保持する機密データkm用いて通信相手に送信する機密データであるEkhなどを生成することにより、ＨＤＣＰシンク機器とＨＤＣＰソース機器との間での認証および鍵交換を実現し、HDCPソース機器からセッション鍵を取得、Secure Data Partに保持する。そして、セッション鍵取得後、HDCPコンテキスト情報のステータスを更新し、認証、および、鍵交換シーケンスの完了とHDCPコンテキスト情報をアプリケーションに通知する。
【０１５８】
なお、図１４Ｂ乃至図１４Ｄにおいて、ステップＳ１４１５〜Ｓ１４１６とステップＳ１４２２〜Ｓ１４２３、ステップＳ１４２４とステップＳ１４３０〜Ｓ１４３２、ステップＳ１４３３とステップＳ１４３６とステップＳ１４３９〜Ｓ１４４０、ステップＳ１４４１の、ＨＤＣＰソースApplication１３０１とＨＤＣＰ  ＳＤＫ１２１０間のシーケンスは、HDCP 2.2 の仕様で規定されるＡＫＥに関連する認証および鍵交換処理のメッセージの交換である。
【０１５９】
コンテンツの送信者から、ステップＳ１４１１において、ネットワークセッションの生成要求が、ＨＤＣＰ  ＳＤＫ１２１０に送られると、ＨＤＣＰ  ＳＤＫ１２１０は、ステップＳ１４１２において、ＨＤＣＰ認証開始のイベントをＨＤＣＰSink Application４０２に伝える。それに応えて、ＨＤＣＰSink Application４０２は、ステップＳ１４１３において、ＨＤＣＰ  ＳＤＫ１２１０のＨＤＣＰSink認証を呼び出す。
【０１６０】
コンテンツの送信者から、ステップＳ１４１４において、ＨＤＣＰSource Application１３０１にＨＤＣＰSource認証が初期化されて、ＨＤＣＰSource Application１３０１が、ステップＳ１４１５において、ＨＤＣＰ  ＳＤＫ１２１０にAKE Initを送信することで、ＨＤＣＰの認証および鍵交換処理におけるソース機器とシンク機器間のメッセージ交換が開始される。以下、シンク機器から見た各メッセージ交換の概略を示し、各ステップの処理についての詳細な説明は省略する。
【０１６１】
ステップＳ１４１５〜Ｓ１４２３においては、ＨＤＣＰシンク機器がＨＤＣＰソース機器から受信したAKE InitメッセージとAKE Transmitter Infoメッセージに含まれている情報を基に、Non Secure Data Partにおける処理を行い、Secure Data Interface１３２１を使用して、Function Numberで示すSecure Data Part１２２６における処理を実行し、実行結果を基にAKE Send CertメッセージおよびAKE Receiver Infoメッセージを生成して、ＨＤＣＰソース機器側に戻していることを示している。
【０１６２】
なお、ＨＤＣＰの仕様に基づくメッセージとFunction Numberとは１対１に対応せず、メッセージの１つが複数のFunction Numberにマッピングされたり、複数のメッセージが１つのFunction Numberにマップされたりする場合がある。したがって、ステップＳ１４１５〜Ｓ１３２３で１つのSecure Data Partにおける処理の実行を説明しているが、実際の実装では、複数のSecure Data Partに分けて呼び出す。かかる、Secure Data Partの分け方は、実現する機能のシーケンスと該当シーケンスで扱う機密データに対するアクセスのタイミングを判断して決定する。
【０１６３】
また、ステップＳ１４２４〜Ｓ１４３２においては、ＨＤＣＰシンク機器がＨＤＣＰソース機器から受信したAKE No Stored kmメッセージに含まれている情報を基に、Non Secure Data Partにおける処理を行い、Secure Data Interface１３２１を使用して、Function Numberで示すSecure Data Part１２２６における処理を実行し、実行結果を基にAKE Send rrxメッセージ、AKE Send H primeメッセージおよびAKE Send Painting Infoメッセージを生成して、ＨＤＣＰソース機器側に戻していることを示している。
【０１６４】
また、ステップＳ１４３３〜Ｓ１４４０においては、ＨＤＣＰシンク機器がＨＤＣＰソース機器から受信したLC initメッセージに含まれている情報を基に、Non Secure Data Partにおける処理を行い、Secure Data Interface１３２１を使用して、Function Numberで示すSecure Data Part１２２６における処理を実行し、ＨＤＣＰシンク機器からＨＤＣＰソース機器へのRRT Readyメッセージに対してRRT Challengeメッセージの応答があれば、実行結果を基にLC Send L primeメッセージを生成して、ＨＤＣＰソース機器側に戻していることを示している。
【０１６５】
ＨＤＣＰSource Application１３０１は、LC Send L primeメッセージを受信して、ステップＳ１４４１において、send EksメッセージをＨＤＣＰ  ＳＤＫ１２１０に送る。そして、コンテンツの送信者にネットワークセッションの確立を通知する。
【０１６６】
ＨＤＣＰ  ＳＤＫ１２１０は、ステップＳ１４４２〜Ｓ１４４６において、受信したsend Eksメッセージに含まれている情報を基に、Non Secure Data Partにおける処理を行い、Secure Data Interface１３２１を使用して、Function Numberで示すSecure Data Part１２２６における処理を実行すると共に、ステップＳ１４４７において、ＨＤＣＰ認証の完了イベントをＨＤＣＰSink Application４０２に送る。
【０１６７】
ＨＤＣＰSink Application４０２は、ＨＤＣＰ認証の完了イベントを受けて、ＨＤＣＰ  ＳＤＫ１２１０のＨＤＣＰSinkの復号処理で使用するパラメータの取得処理を呼び出す。ＨＤＣＰ  ＳＤＫ１２１０は、ステップＳ１４４９〜Ｓ１４５３において、パラメータの取得処理の呼び出しを受けて、Non Secure Data Partにおける処理を行い、Secure Data Interface１３２１を使用して、Function Numberで示すSecure Data Part１２２６における処理を実行する。
【０１６８】
（暗号化コンテンツ伝送処理）
図１４Ｅは、本実施形態に係る暗号化コンテンツ伝送処理（Ｓ１３３７）の手順を示すシーケンス図である。暗号化コンテンツ伝送処理（Ｓ１３３７）においては、ＨＤＣＰの認証および鍵交換処理（Ｓ１３３５）で交換された鍵を用いて、暗号化コンテンツの伝送を行なう。本例では、アプリケーションがＨＤＣＰソース機器から暗号化コンテンツを受信、受信データをHDCPミドルウェアへ渡し、Secure Data Part１２２６に保持された交換鍵を用いて復号後、復号結果をアプリケーションに渡す。そして、アプリケーションは、復号結果を基に描画等の処理を行う。また、ＨＤＣＰソース機器からのセッション終了の指示を受けて、暗号化コンテンツの復号化処理を終了し、HDCPコンテキスト情報のステータスを更新、暗号化コンテンツ伝送処理の完了とHDCP コンテキスト情報をアプリケーションに通知する。
【０１６９】
コンテンツの送信者が、ステップＳ１４６１において、ＨＤＣＰのソース機器のアプリケーション１３０１に対し、ストリームコンテンツの配信を指示する。ソース機器のアプリケーション１３０１は、ステップＳ１４６２において、ストリームコンテンツを暗号化する。そして、ソース機器のアプリケーション１３０１は、ステップＳ１４６３において、暗号化されたストリームコンテンツをシンク機器のＨＤＣＰSink Application４０２に配信する。
【０１７０】
ＨＤＣＰSink Application４０２は、ステップＳ１４６４において、暗号化されたストリームコンテンツを受信する。そして、ＨＤＣＰSink Application４０２は、ステップＳ１４６５において、ＨＤＣＰ  ＳＤＫ１２１０に対して受信したストリームコンテンツの復号を指示する。ＨＤＣＰ  ＳＤＫ１２１０は、ステップＳ１４６６において、Secure Public API１２２１のＣＴＲモード(Counter Mode)でのＡＥＳ復号を呼び出す。Secure Public API１２２１は、ステップＳ１４６７において、Secure Private Layer１２２２にＡＥＳ復号の実施を指示する。Secure Private Layer１２２２は、ステップＳ１４６８において、Secure Porting Layer１２２７、１２２８にＡＥＳ復号を実施させる。
【０１７１】
ＨＤＣＰSink Application４０２は、ステップＳ１４６９において、ストリームコンテンツをデコードする。
【０１７２】
コンテンツの送信者が、ストリームコンテンツの配信が完了するまで、ステップＳ１４６１〜Ｓ１４６９が繰り返される。
【０１７３】
コンテンツの送信者は、ストリームコンテンツの配信が完了すると、ステップＳ１４７０において、ネットワークセッションの切断を、ＨＤＣＰ  ＳＤＫ１２１０に通知する。ＨＤＣＰ  ＳＤＫ１２１０は、ステップＳ１４７１において、ＨＤＣＰのセッション切断イベントをＨＤＣＰSink Application４０２に通知する。
【０１７４】
（ＨＤＣＰシンクの終了処理）
図１４Ｆは、本実施形態に係るＨＤＣＰシンク(Sink)の終了処理（Ｓ１３３９）の手順を示すシーケンス図である。ＨＤＣＰシンク(Sink)の終了処理（Ｓ１３３９）においては、ＨＤＣＰシンク(Sink)の初期化処理（Ｓ１３３３）において整備された環境を解放する。例えば、Secure WorldのSecure Data Part１２２６に確保された記憶領域の解放、あるいは、「ＨＤＣＰ認証および鍵交換処理（Ｓ１３３５）」や「暗号化コンテンツ伝送処理（Ｓ１３３７）」のための確保された記憶領域を解放する。そして、HDCPコンテキスト情報を解放後、ＨＤＣＰシンク(Sink)の終了処理の完了をアプリケーションに通知する。
【０１７５】
ＨＤＣＰシンク(Sink)のステップＳ１４８１〜Ｓ１４８６の終了処理は、図１４ＡにおけるステップＳ１４０１、Ｓ１４０２およびＳ１４０６〜Ｓ１４０９の「初期化処理」を「終了処理」に置き換えたものなので、詳細な説明は省略する。なお、ＨＤＣＰ  ＳＤＫ１２１０は、ステップＳ１４８６において、ステップＳ１４０２で初期化したＨＤＣＰの機能とHDCPコンテキスト情報とを解放する。
【０１７６】
以下、図１１ＥのSecure Storage終了処理と図７のＥSecureエンジン終了処理とを実行して、HDCP SDKとSecure Worldを組み合わせたHDCP sink deviceの実現が完了する。
【０１７７】
《情報処理装置のハードウェア構成》
図１５Ａは、全実施形態に共通の情報処理装置１２００のハードウェア構成を示すブロック図である。なお、図１５Ａにおいて、図８と同様の構成要素には同じ参照番号を付して、重複する説明は省略する。
【０１７８】
図１５ＡのＲＡＭ１５４０において、スタック領域１５４９は、Non Secure OS８５６によるNon Secure World内のスタック９１０と、Secure OS１５５６によるSecure World内のスタック１５２０と、に分離される。また、ストレージ１５５０において、本例では、ＳＳＴ領域１５５４およびSecure Data領域１５５５は、Secure OS１５５６によるSecure World内に配置させる。また、ストレージ１５５０は、Secure OS１５５６を有し、機密制御ライブラリ１５５８は、Non Secure OS８５６によるNon Secure World内で実行されるモジュールと、Secure OS１５５６によるSecure World内で実行されるモジュールと、に分離される。情報処理装置１２００において、Non Secure WorldからSecure Worldが見えないようにハードウェア的に分離されている以外、その他の構成は、図８と同様であるため詳細な説明は省略する。
【０１７９】
（スタック領域）
図１５Ｂは、Secure Worldを有する実施形態に共通のスタック領域１５４９の構成を示す図である。本実施形態において、スタック領域１５４９はNon Secureスタック９１０とSecureスタック１５２０とを有する。Non Secureスタック９１０は図９Ａと同様なので、重複する説明は省略する。
【０１８０】
Secureスタック１５２０は、Secure OSによるスタック１５２１と、Applicationによるスタック１５２２と、通信プロトコルに対応するMiddlewareスタック１５２３と、本実施形態の暗号化／復号に対応するMiddlewareスタック１５２４と、を有する。本実施形態のMiddlewareスタック１５２４は、Secureエンジン用スタック１５２５と、暗号化用スタック１５２６と、Secure Storage用スタック１５２７と、通信プロトコル用スタック１５２８と、を含む。Middlewareスタック１５２４内の各スタック１５２５〜１５２８との間のデータ共有やデータ交換は、互いにリンクされたコンテキストにより実現される。なお、Middlewareスタック１５２４内におけるスタック順は、図１５Ｂに限定されない。
【０１８１】
（ストレージの格納データ）
図１５Ｃは、Secure Worldを有する実施形態に共通のストレージ１５５０における格納データの構成を示す図である。
【０１８２】
図１５Ｃに示す本実施形態の暗号化／復号に対応するMiddlewareを実現する機密制御ライブラリ１５５８は、Secure Public API群９７１と、Secure Private Layerモジュール群１５７２と、Secure Porting Layerモジュール群１５７３と、仮想ハードウェアモジュール群９７４と、を有する。
【０１８３】
以下、図９Ｄと異なるSecure Private Layerモジュール群１５７２と、Secure Porting Layerモジュール群１５７３と、の追加または変更モジュールを説明する。Secure Private Layerモジュール群１５７２は、SecureのCryptographyモジュールと、SecureのSecure Storageモジュールと、を含む。Secure Porting Layerモジュール群１５７３は、SecureのCryptographyモジュールと、SecureのSecure Storageモジュールと、SecureのSecure Data Interfaceモジュールと、を含む。
【０１８４】
なお、Secure Private Layerモジュール群１５７２のCryptographyモジュールとSecure Storageモジュールとは、図９Ｄとは異なり、Secure Porting Layerモジュール群１５７３のNon SecureのSecure Data Interfaceモジュールを呼び出すように構成される。
【０１８５】
（各機能処理）
図１５Ｄは、Secure Worldを有する実施形態に共通の各機能処理（Ｓ９１７）の手順を示すフローチャートである。なお、図１５Ｄにおいて、図９Ｇと同様のステップには同じステップ番号を付して、重複する説明を省略する。
【０１８６】
情報処理装置１２００は、ステップＳ９３２で暗号化機能であると判定された場合、ステップＳ１５０１において、Secure Worldを有する場合の暗号化処理を実行する。なお、ステップＳ１５０１の処理は、図９Ｈの処理と暗号化ハードウェアや暗号化ソフトウェアがSecure Worldに有って、Porting Layer１２２７とPorting Layer１２２８との間のデータ転送１２２９が行なわれることが相違するのみで、他は同様であるので重複する説明は省略する。
【０１８７】
情報処理装置１２００は、ステップＳ９３４でＳＳＴ機能であると判定された場合、ステップＳ１５０３において、Secure Worldを有する場合のＳＳＴ処理を実行する。なお、ステップＳ１５０３の処理は、図９Ｉの処理とＳＳＴハードウェアやＳＳＴソフトウェアがSecure Worldに有って、Porting Layer１２２７とPorting Layer１２２８との間のデータ転送１２２９が行なわれることが相違するのみで、他は同様であるので重複する説明は省略する。
【０１８８】
暗号化機能でのＳＳＴ機能でもない場合、情報処理装置１２００は、ステップＳ１５０５において、HDCP Sink処理であるか否かを判定する。HDCP Sink処理であれば、情報処理装置１２００は、ステップＳ１５０７において、HDCP Sink処理を実行する。
【０１８９】
（ＨＤＣＰ  Ｓｉｎｋ処理）
図１５Ｅは、Secure Worldを有する実施形態に共通のＨＤＣＰ  Ｓｉｎｋ処理（Ｓ１５３３）の手順を示すフローチャートである。
【０１９０】
情報処理装置１２００は、ステップＳ１５１１において、ＳＳＴ初期化済みか否かを判定する。ＳＳＴ初期化済みでなければ、情報処理装置１２００はエラー処理を行なう。ＳＳＴ初期化済みであれば、情報処理装置１２００は、ステップＳ１５１２において、HDCP Sink初期化処理であるか否かを判定する。HDCP Sink初期化処理であれば、情報処理装置１２００は、ステップＳ１５１３において、HDCP Sinkの機能(feature)の起動とコンテキストの生成を行なう。次に、HDCPレシーバである本情報処理装置１２００のデバイス鍵をＳＳＴから取得する。そして、Secure WorldのSecure Data Part１２２６に接続してHDCP用領域を確保し、デバイス鍵を保持する。
【０１９１】
HDCP Sink初期化処理でない場合、情報処理装置１２００は、ステップＳ１５１６において、HDCP Sink認証処理であるか否かを判定する。HDCP Sink認証処理であれば、情報処理装置１２００は、ステップＳ１５１７において、HDCP Sink初期化処理済みか否かを判定する。HDCP Sink初期化処理済みで無ければ、情報処理装置１２００はエラー処理を行なう。HDCP Sink初期化処理済みであれば、情報処理装置１２００は、ステップＳ１５１８において、Secure Data Partを使用しながら、HDCPソースとの相互認証と鍵交換処理を実行する。なお、ステップＳ１５１８のHDCPソースとの相互認証と鍵交換処理は、HDCPの標準プロトコルに従う処理であり、詳細な説明は省略する。
【０１９２】
HDCP Sink初期化処理でなくHDCP Sink認証処理でもない場合、情報処理装置１２００は、ステップＳ１５１９において、HDCPソースからの暗号コンテンツの受信処理であるか否かを判定する。暗号コンテンツの受信処理であれば、情報処理装置１２００は、ステップＳ１５２０において、HDCP Sink初期化処理済みか否かを判定する。HDCP Sink初期化処理済みで無ければ、情報処理装置１２００はエラー処理を行なう。HDCP Sink初期化処理済みであれば、情報処理装置１２００は、ステップＳ１５２１において、HDCPソースからの暗号コンテンツを受信する。そして、情報処理装置１２００は、ステップＳ１５２２において、受信した暗号コンテンツをＡＥＳ方式で復号して、ＳＳＴに保存する。
【０１９３】
HDCP Sink初期化処理でなくHDCP Sink認証処理でも暗号化コンテンツの受信処理でもない場合、情報処理装置１２００は、ステップＳ１５２３において、HDCP Sink終了処理であるか否かを判定する。HDCP Sink終了処理であれば、情報処理装置１２００は、ステップＳ１５２４において、HDCP Sink初期化処理済みか否かを判定する。HDCP Sink初期化処理済みで無ければ、情報処理装置１２００はエラー処理を行なう。HDCP Sink初期化処理済みであれば、情報処理装置１２００は、ステップＳ１５２５において、Secure Data Partの終了処理を行なう。そして、情報処理装置１２００は、ステップＳ１５２６において、HDCPの機能の終了と、HDCPコンテキストの解放を行なう。
【０１９４】
本実施形態によれば、ハードウェア的に分離されたノーマル実行環境である非機密部とセキュア実行環境である機密部とを通信アプリケーションに従って使い分けながら、複数の通信アプリケーションから共通のシーケンスに従って利用することができる。
【０１９５】
［第５実施形態］
次に、本発明の第５実施形態に係る情報処理装置について説明する。本実施形態に係る情報処理装置は、上記第２実施形態乃至第４実施形態と比べると、通信アプリケーションとして「ＨＤＣＰ」以外のプロトコルにおいても、また、ハードウェアとして多種の方式が共通のシーケンスを用いる点で異なる。通信アプリケーションは、Miracast使用アプリケーション、HDCP使用アプリケーション、DLNA（登録商標）使用アプリケーション、DTCP-IP使用アプリケーション、DTCP-MOST使用アプリケーションを含む。また、ハードウェアは、煩雑となるため図示しないが、例えば、ＳＳＴ(Secure Storage)、ＲＳＡ、ＨＡＳＨ、ＡＥＳ、Ｍ６を含む。なお、ＥＣＣやＤＨ等の他の暗号アルゴリズムも含まれてよい。その他の構成および動作は、第２実施形態から第４実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【０１９６】
《情報処理装置のソフトウェア階層》
図１６Ａは、図４Ａを拡張した、本実施形態に係る情報処理装置のソフトウェア階層１６１０を示す図である。なお、図１６Ａにおいて、図４Ａおよび図４Ｂと同様の機能要素には同じ参照番号を付して、重複する説明を省略する。
【０１９７】
図１６Ａにおいて、本実施形態に係る暗号化／復号層のMiddleware２０１の構成は第２実施形態および第３実施形態と同様である。図１６Ａにおいては、Application４０１〜４０ｎとして、Miracast使用アプリケーション、HDCP使用アプリケーション、EthernetEVBでのHDCP使用アプリケーション、HDCP-MOST使用アプリケーション、DLNA（登録商標）使用アプリケーション、DTCP-IP使用アプリケーション、DTCP-MOST使用アプリケーションや、Secure Data Mgmt(Management)使用アプリケーション、ユーザ仕様のアプリケーションなどの多様な通信アプリケーションと共通のシーケンスで接続ができる。また、Hardwareとして、図示しないが、ＳＳＴ(Secure Storage)、ＲＳＡ、ＨＡＳＨ、ＡＥＳ、Ｍ６などの多様なハードウェアに共通のシーケンスで接続ができる。また、ＥＣＣやＤＨ等の他の暗号アルゴリズムが接続されてもよい。
【０１９８】
図１６Ｂは、図１２を拡張した、本実施形態に係る情報処理装置の他のソフトウェア階層１６２０を示す図である。なお、図１６Ｂにおいて、図４Ａ、図１２および図１６Ａと同様の機能要素には同じ参照番号を付して、重複する説明を省略する。
【０１９９】
図１６Ｂは、本実施形態に係る暗号化／復号層のMiddleware１２０１の構成は第４実施形態と同様である。図１６ＢにおいてもApplication４０１〜４０ｎとして、Miracast使用アプリケーション、HDCP使用アプリケーション、EthernetEVBでのHDCP使用アプリケーション、HDCP-MOST使用アプリケーション、DLNA（登録商標）使用アプリケーション、DTCP-IP使用アプリケーション、DTCP-MOST使用アプリケーションや、Secure Data Mgmt(Management)使用アプリケーション、ユーザ仕様のアプリケーションなどの多様な通信アプリケーションと共通のシーケンスで接続ができる。また、Hardwareとして、図示しないが、ＳＳＴ(Secure Storage)、ＲＳＡ、ＨＡＳＨ、ＡＥＳ、Ｍ６などの多様なハードウェアに共通のシーケンスで接続ができる。また、ＥＣＣやＤＨ等の他の暗号アルゴリズムが接続されてもよい。
【０２００】
図１６Ｃは、図１２を拡張し図１６Ｂを変更した、本実施形態に係る他の情報処理装置のソフトウェア階層１６３０を示す図である。なお、図１６Ｃにおいて、図４Ａ、図１２、図１６Ａおよび図１６Ｂと同様の機能要素には同じ参照番号を付して、重複する説明を省略する。
【０２０１】
図１６Ｃは、本実施形態に係る暗号化／復号層のMiddleware１２０１の構成は第４実施形態と同様である。図１６Ｃにおいては、Ｌｉｎｕｘ（登録商標）のＴＥＥ(Trusted Execution Environment)を用いたNon Secure WorldとSecure Worldとのハードウェア的分離の構成を示している。ＴＥＥクライアントアプリケーションによるNon Secure OS Part１６２４と、ＴＥＥトラステッドアプリケーションによるSecure OS Part１６２５とは、ハードウェア的に分離されて外部から遮断され、Secure OS Part１６２５の機密が守られる。
【０２０２】
Non Secure OS Part１６２４は、各Application４０１〜４０ｎから直接、あるいは、各通信アプリケーションのSDK層４１０〜４１ｍを介してインタフェースするPublic API１６２１と、ハードウェアとの接続を管理するPrivate Layer１６２２と、Secure OS Part１６２５とのハードウェア的に分離されたデータ転送を行なうためのPorting LayerのＴＥＥクライアントＡＰＩ１６２７と、を有する。
【０２０３】
一方、Secure OS Part１６２５は、Non Secure OS Part１６２４とのハードウェア的に分離されたデータ転送を行なうためのPorting Layer１６２８と、Secure OS Part１６２５内でハードウェアとの接続を管理するPrivate Layer１６２２と、Secure OS Part１６２５内でハードウェア層４５１および４５２を各々制御するPorting Layer１６２３と、Middleware's Secure Data Part１２２６と、を有する。
【０２０４】
なお、ＴＥＥクライアントＡＰＩ１６２７とPorting Layer１６２８との間のデータ転送１６２９は、ファームウェア(Firmware)層１２６０まで戻ることによって、ハードウェア的に分離される。
【０２０５】
図１６ＣにおいてもApplication４０１〜４０ｎとして、Miracast使用アプリケーション、HDCP使用アプリケーション、EthernetEVBでのHDCP使用アプリケーション、HDCP-MOST使用アプリケーション、DLNA（登録商標）使用アプリケーション、DTCP-IP使用アプリケーション、DTCP-MOST使用アプリケーションや、Secure Data Mgmt(Management)使用アプリケーション、ユーザ仕様のアプリケーションなどの多様な通信アプリケーションと共通のシーケンスで接続ができる。また、Hardwareとして、図示しないが、ＳＳＴ(Secure Storage)、ＲＳＡ、ＨＡＳＨ、ＡＥＳ、Ｍ６などの多様なハードウェアに共通のシーケンスで接続ができる。また、ＥＣＣやＤＨ等の他の暗号アルゴリズムが接続されてもよい。
【０２０６】
図１６Ｄは、図１２を拡張し図１６Ｂや図１６Ｃを変更した、本実施形態に係る他の情報処理装置のソフトウェア階層１６４０を示す図である。なお、図１６Ｄにおいて、図４Ａ、図１２、図１６Ａ〜図１６Ｃと同様の機能要素には同じ参照番号を付して、重複する説明を省略する。
【０２０７】
図１６Ｄは、Secure OS Partを有する構成の変形であり、暗号化／復号層のMiddleware１６０１のSecure Data Part１６２６を、SoCと共有メモリ(Shared Memory)１６５０で接続した専用ハードウェアのファームウェアとして実装した場合の構成になる。
【０２０８】
Non Secure OS Part１６２４は、Secure OS Part１６２５とのハードウェア的に分離されたデータ転送を行なうためのPorting Layer１６５７を有する。一方、Secure OS Part１６２５は、Non Secure OS Part１６２４とのハードウェア的に分離されたデータ転送を行なうためのPorting Layer１６５８と、Secure OS Part１６２５内に、Middleware's Secure Data Part１６２６を有する。なお、Porting Layer１６５７とPorting Layer１６５８との間のデータ転送１６５１は、共有メモリ(Shared Memory)１６５０とCustom Hardware１６５２とのハードウェアまで戻ることによって、ハードウェア的に分離される。
【０２０９】
図１６ＤにおいてもApplication４０１〜４０ｎとして、Miracast使用アプリケーション、HDCP使用アプリケーション、EthernetEVBでのHDCP使用アプリケーション、HDCP-MOST使用アプリケーション、DLNA（登録商標）使用アプリケーション、DTCP-IP使用アプリケーション、DTCP-MOST使用アプリケーションや、Secure Data Mgmt(Management)使用アプリケーション、ユーザ仕様のアプリケーションなどの多様な通信アプリケーションと共通のシーケンスで接続ができる。また、Hardwareとして、図示しないが、ＳＳＴ(Secure Storage)、ＲＳＡ、ＨＡＳＨ、ＡＥＳ、Ｍ６などの多様なハードウェアに共通のシーケンスで接続ができる。また、ＥＣＣやＤＨ等の他の暗号アルゴリズムが接続されてもよい。
【０２１０】
本実施形態によれば、通信アプリケーションの相違、あるいは、準備されたハードウェアの相違を吸収して、複数の通信アプリケーションから共通のシーケンスに従って準備されたハードウェアを利用することができる。
【０２１１】
［第６実施形態］
次に、本発明の第６実施形態に係る情報処理装置について説明する。本実施形態に係る情報処理装置は、上記第２実施形態乃至第５実施形態と比べると、本実施形態のミドルウェアが、ＨＤＣＰなどの通信アプリケーションの代行処理を含まず、ユーザアプリケーションがＨＤＣＰなどの通信アプリケーションを実行する中に依頼された機密関連処理を実行する構成である点で異なる。その他の構成および動作は、第２実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【０２１２】
《情報処理装置のソフトウェア階層》
図１７Ａは、本実施形態に係る情報処理装置のソフトウェア階層１７１０を示す図である。図１７Ａは、Secure Worldを有しない図４Ａに対応する。なお、図１７Ａにおいて、図４Ａと同様の構成要素には同じ参照番号を付して、重複する説明を省略する。
【０２１３】
図１７Ａは、図４Ａのミドルウェアの構成からＨＤＣＰ  Ｓｉｎｋの処理部分４１０を削除し、ＨＤＣＰ  Ｓｉｎｋ処理をUser Application１７１２のHDCP application１７１２ａで実行する場合の構成である。かかる構成の場合には、HDCP application１７１２ａの実行中の暗号化処理やSecure Storage処理をミドルウェアに依頼して、本実施形態のMiddleware２０１に実行させることになる。
【０２１４】
図１７Ｂは、本実施形態に係る情報処理装置の他のソフトウェア階層１７２０を示す図である。図１７Ｂは、Secure Worldを有する図１２に対応する。なお、図１７Ｂにおいて、図４Ａおよび図１２と同様の構成要素には同じ参照番号を付して、重複する説明を省略する。
【０２１５】
図１７Ｂは、図１２のミドルウェアの構成からＨＤＣＰ  Ｓｉｎｋの処理部分１２１０を削除し、ＨＤＣＰ  Ｓｉｎｋ処理をUser Application１７１２のHDCP application１７１２ａで実行する場合の構成である。かかる構成の場合には、HDCP application１７１２ａの実行中の暗号化処理やSecure Storage処理をミドルウェアに依頼して、本実施形態のMiddleware１２０１に実行させることになる。
【０２１６】
本実施形態によれば、ユーザのアプリケーションが通信アプリケーションのプロトコルを実行できる場合であっても、そのプロトコル中の機密関連処理の部分を、複数のデータ交換を行なうアプリケーションから共通のシーケンスに従って利用することができる。
【０２１７】
［第７実施形態］
次に、本発明の第７実施形態に係る情報処理装置について説明する。本実施形態に係る情報処理装置は、上記第２実施形態乃至第６実施形態と比べると、データ交換を行なうアプリケーションとして、通信アプリケーション以外にも記憶媒体を経由するデータ交換においても、機密保護を実現するために共通のシーケンスを用いる点で異なる。記憶媒体には、ＤＶＤやメモリチップなどが含まれる。
【０２１８】
《記憶媒体経由の機密保護》
図１８は、本実施形態に係る記憶媒体を経由してデータ交換を行なうシステム１８００の機密保護機能を説明する図である。
【０２１９】
システム１８００には、記憶媒体１８１０を経由してデータ交換が可能な種々の機器が図示されている。かかる種々の機器に本実施形態のMiddleware２０１を組み込むことによって、記憶媒体１８１０を経由したデータ交換においても、ネットワークを介した通信によるデータ交換と同様に、所望の暗号化および復号を含む機能を共通のシーケンスに従って利用することができる。
【０２２０】
［他の実施形態］
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。また、それぞれの実施形態に含まれる別々の特徴を如何様に組み合わせたシステムまたは装置も、本発明の範疇に含まれる。
【０２２１】
また、本発明は、複数の機器から構成されるシステムに適用されてもよいし、単体の装置に適用されてもよい。さらに、本発明は、実施形態の機能を実現する情報処理プログラムが、システムあるいは装置に直接あるいは遠隔から供給される場合にも適用可能である。したがって、本発明の機能をコンピュータで実現するために、コンピュータにインストールされるプログラム、あるいはそのプログラムを格納した媒体、そのプログラムをダウンロードさせるＷＷＷ(World Wide Web)サーバも、本発明の範疇に含まれる。特に、少なくとも、上述した実施形態に含まれる処理ステップをコンピュータに実行させるプログラムを格納した非一時的コンピュータ可読媒体（non-transitory computer readable medium）は本発明の範疇に含まれる。
【図１】
2018093352.tif 000003
【図２】
2018093352.tif 000004
【図３】
2018093352.tif 000005
【図４Ａ】
2018093352.tif 000006
【図４Ｂ】
2018093352.tif 000007
【図５】
2018093352.tif 000008
【図６】
2018093352.tif 000009
【図７Ａ】
2018093352.tif 000010
【図７Ｂ】
2018093352.tif 000011
【図７Ｃ】
2018093352.tif 000012
【図７Ｄ】
2018093352.tif 000013
【図７Ｅ】
2018093352.tif 000014
【図８】
2018093352.tif 000015
【図９Ａ】
2018093352.tif 000016
【図９Ｂ】
2018093352.tif 000017
【図９Ｃ】
2018093352.tif 000018
【図９Ｄ】
2018093352.tif 000019
【図９Ｅ】
2018093352.tif 000020
【図９Ｆ】
2018093352.tif 000021
【図９Ｇ】
2018093352.tif 000022
【図９Ｈ】
2018093352.tif 000023
【図９Ｉ】
2018093352.tif 000024
【図１０】
2018093352.tif 000025
【図１１Ａ】
2018093352.tif 000026
【図１１Ｂ】
2018093352.tif 000027
【図１１Ｃ】
2018093352.tif 000028
【図１１Ｄ】
2018093352.tif 000029
【図１１Ｅ】
2018093352.tif 000030
【図１２】
2018093352.tif 000031
【図１３Ａ】
2018093352.tif 000032
【図１３Ｂ】
2018093352.tif 000033
【図１４Ａ】
2018093352.tif 000034
【図１４Ｂ】
2018093352.tif 000035
【図１４Ｃ】
2018093352.tif 000036
【図１４Ｄ】
2018093352.tif 000037
【図１４Ｅ】
2018093352.tif 000038
【図１４Ｆ】
2018093352.tif 000039
【図１５Ａ】
2018093352.tif 000040
【図１５Ｂ】
2018093352.tif 000041
【図１５Ｃ】
2018093352.tif 000042
【図１５Ｄ】
2018093352.tif 000043
【図１５Ｅ】
2018093352.tif 000044
【図１６Ａ】
2018093352.tif 000045
【図１６Ｂ】
2018093352.tif 000046
【図１６Ｃ】
2018093352.tif 000047
【図１６Ｄ】
2018093352.tif 000048
【図１７Ａ】
2018093352.tif 000049
【図１７Ｂ】
2018093352.tif 000050
【図１８】
2018093352.tif 000051