(57)【特許請求の範囲】
【請求項１】
ＨＳＭキー（Ｋ）を有するハードウェアセキュリティモジュール（ＨＳＭ）と通信することが出来るプロビジョニングサーバ（ＰＳ）におけるサブスクリプションを管理する方法であって、
前記方法は、以下のステップｉ），ii）を含む予備ステップと；
ｉ）前記プロビジョニングサーバ（ＰＳ）に、サブスクリプションの作成に対応するスクリプト（Ｓｃｒ）を格納するステップであって、前記スクリプトはストレージキー（Ｋｓ）を使用して暗号化され、暗号化されたスクリプト（（Ｓｃｒ）Ｋｓ）は保全デバイス（ＳＥｉ）にロードされるように意図され、それぞれの前記保全デバイス（ＳＥｉ）は保全デバイスキー（Ｋｅｉ）と関連付けられているステップ；
ii）前記ＨＳＭキー（Ｋ）を使用して暗号化された、ストレージキー（Ｋｓ）Ｋと保全デバイスキー（Ｋｅｉ）Ｋとを前記プロビジョニングサーバ（ＰＳ）に格納するステップ；
さらに、前記方法は、
前記プロビジョニングサーバ（ＰＳ）が所定のスクリプト（ＳｃｒＡ）を保全デバイス（ＳＥ１）にロードするよう要請されたとき、以下のステップiii)〜vii)を含むサブスクリプションロードフェーズを更に備え、
iii)前記所定のスクリプト（ＳｃｒＡ）がいずれかの保全デバイスに以前にロードされているかをチェックするステップ（Ｓ０）；
iv）そのような以前のロードが検出されなかった場合（Ｎ）には、暗号化されて格納されている前記保全デバイスキー（（Ｋｅ１）Ｋ）と前記ストレージキー（（Ｋｓ）Ｋ）とを、ロード要請中に前記ハードウェアセキュリティモジュール（ＨＳＭ）のロード関数（Ｓ２）に提供するステップ；
ｖ）前記ハードウェアセキュリティモジュール（ＨＳＭ）の前記ロード関数（Ｓ２）から、提供された保全デバイスキー（Ｋｅ１）と前記ＨＳＭキー（Ｋ）とを使用して暗号化されたストレージキー（（Ｋｓ）Ｋｅ１）Ｋ）と、前記提供された保全デバイスキー（Ｋｅ１）を用いて暗号化され、前記提供された保全デバイスキー（Ｋｅ１）を用いても暗号化されている検索されたストレージキー（（Ｋｓ）Ｋｅ１）を与えるＡＰＤＵ＿ｐｕｔｋｅｙコマンド（（ＡＰＤＵ＿ＰＵＴＫＥＹ（（Ｋｓ）Ｋｅ１））Ｋｅ１）とを検索する（Ｓ３）ステップ；
vi）格納されているストレージキー（（Ｋｓ）Ｋ）を、保全デバイスキー（Ｋｅ１）と前のステップで前記ハードウェアセキュリティモジュール（ＨＳＭ）によって戻された前記ＨＳＭキー（Ｋ）とを使用して暗号化された前記ストレージキー（（（Ｋｓ）Ｋｅ１）Ｋ）で上書きする（Ｓ６）ステップ；
vii)前記ＡＰＤＵ＿ｐｕｔｋｅｙコマンド（（ＡＰＤＵ＿ＰＵＴＫＥＹ（（Ｋｓ）Ｋｅ１））Ｋｅ１）を前記保全デバイス（ＳＥ１）に送ると共に、前記スクリプト（ＳｃｒＡ）を前記保全デバイス（ＳＥ１）に格納されるよう送信する（Ｓ４）ステップ；
さらに、前記方法は、
前記チェックするステップ（Ｓ０）中に以前のローディングが検出された場合（Ｙ）に、以下のステップviii）〜ｘ）を含むリロードサブスクリプションフェーズを更に備える、
viii）暗号化されて格納されている前記保全デバイスキー（（Ｋｅ１）Ｋ）と前記ストレージキー（（（Ｋｓ））Ｋｅ１）Ｋ）とを、リロード要請中に前記ハードウェアセキュリティモジュール（ＨＳＭ）のリロード関数（Ｓ９）に提供する（Ｓ８）ステップ；
ix）前記ハードウェアセキュリティモジュール（ＨＳＭ）のリロード関数（Ｓ９）から、提供された保全デバイスキー（Ｋｅ１）と前記ＨＳＭキー（Ｋ）とを使用して暗号化されたストレージキー（（（Ｋｓ）Ｋｅ１）Ｋ）と、
前記提供された保全デバイスキー（Ｋｅ１）を用いて暗号化され、前記提供された保全デバイスキー（Ｋｅ１）を用いても暗号化されている検索されたストレージキー（（Ｋｓ）Ｋｅ１）を与えるＡＰＤＵ＿ｐｕｔｋｅｙコマンド（（ＡＰＤＵ＿ＰＵＴＫＥＹ（（Ｋｓ）Ｋｅ１））Ｋｅ１）とを検索する（Ｓ１０）ステップ；
ｘ）前記ＡＰＤＵ＿ｐｕｔｋｅｙコマンド（（ＡＰＤＵ＿ＰＵＴＫＥＹ（（Ｋｓ）Ｋｅ１））Ｋｅ１）を前記保全デバイス（ＳＥ１）に送ると共に、前記スクリプト（（ＳｃｒＡ）Ｋｓ）を前記保全デバイス（ＳＥ１）に格納されるように送信するステップ。
【請求項２】
前記ハードウェアセキュリティモジュール（ＨＳＭ）の前記ロードおよびリロード関数（Ｓ２，Ｓ９）は、前記ＡＰＤＵ＿ｐｕｔｋｅｙコマンド（（ＡＰＤＵ＿ＰＵＴＫＥＹ（（Ｋｓ）Ｋｅ１））Ｋｅ１）が、前記保全デバイスキー（Ｋｅ１）と前記保全デバイス（ＳＥ１）と交換されるランダムデータとを用いて計算されたセッションキー（Ｋｅ１−ｓｅｎｃ）を用いて暗号化される請求項１に記載のサブスクリプションを管理する方法。
【請求項３】
前記保全デバイスキー（Ｋｅ１）は、少なくとも２つの静的サブキーで構成され、一方のサブキーは、前記ロード及びリロード関数（Ｓ２，Ｓ９）により前記ストレージキー（Ｋｓ）を暗号化するのに使用され、他方のサブキーは、前記ロード及びリロード関数（Ｓ２，Ｓ９）により前記セッションキー（Ｋｅ１−ｓｅｎｃ）を計算するのに使用される請求項２に記載のサブスクリプションを管理する方法。
【請求項４】
前記保全デバイスキー（Ｋｅ１）は暗号化サブキー（Ｋｅ１−ｅｎｃ）と解読サブキー（Ｋｅ１−ｄｅｋ）とからなる少なくとも２つのサブキーから構成され、
プロビジョニングサーバ（ＰＳ）と保全デバイス（ＳＥｉ）とは、前記暗号化サブキー（Ｋｅ１−ｅｎｃ）と前記プロビジョニングサーバ（ＰＳ）及び前記保全デバイス（ＳＥｉ）のみが知っているある疑似ランダムデータとから得られたセッション暗号化サブキー（Ｋｅ１−ｓｅｎｃ）を用いて通信しており、
前のステップで、前記ハードウェアセキュリティモジュール（ＨＳＭ）の前記ロード関数（Ｓ２）は、以前に格納されたキーを上書きするために、ＨＳＭキー（Ｋ）を用いて解読し、前記提供された保全デバイス解読サブキー（Ｋｅ１−ｄｅｋ）と前記ＨＳＭキー（Ｋ）とを用いて暗号化した後に、前記ストレージキー（（（Ｋｓ）Ｋｅ１−ｄｅｋ）Ｋ）を戻し、前記提供された保全デバイス（ＳＥ１）に送られるように前記提供された保全デバイス解読サブキー（Ｋｅ１−ｄｅｋ）を用いて暗号化されたストレージキー（Ｋｓ）を前記保全デバイス（ＳＥ１）に付加するＡＰＤＵ＿ｐｕｔｋｅｙコマンド（（ＡＰＤＵ＿ＰＵＴＫＥＹ（（Ｋｓ）Ｋｅ１−ｄｅｋ））Ｋｅ１−ｓｅｎｃ）を戻し、
前記ハードウェアセキュリティモジュール（ＨＳＭ）の前記リロード関数（Ｓ９）は、
前記提供された保全デバイス解読サブキー（Ｋｅ１−ｄｅｋ）と前記ＨＳＭキー（Ｋ）とを用いて暗号化された前記ストレージキー（（（Ｋｓ）Ｋｅ１−ｄｅｋ）Ｋ）と得られたセッション暗号化サブキー（Ｋｅ１−ｓｅｎｃ）によって暗号化された前記提供された保全デバイス解読サブキー（Ｋｅ１−ｄｅｋ）を用いて暗号化されたストレージキー（Ｋｓ）を前記保全デバイス（ＳＥ１）に付加するＡＰＤＵ＿ｐｕｔｋｅｙコマンド（（ＡＰＤＵ＿ＰＵＴＫＥＹ（（Ｋｓ）Ｋｅ１−ｄｅｋ））Ｋｅ１−ｓｅｎｃ）とを戻す請求項３に記載のサブスクリプションを管理する方法。
【請求項５】
前記所定のスクリプト（ＳｃｒＡ）がいずれかの保全デバイスにロードされているかをチェックするステップ（Ｓ０）は、前記プロビジョニングサーバ（ＰＳ）に格納されたスクリプトローディングのヒストリ（履歴）を用いる請求項１乃至４のいずれかに記載の方法。
【請求項６】
前記所定のスクリプト（ＳｃｒＡ）が所定の保全デバイス（ＳＥ１）にロードされているかをチェックするステップ（Ｓ０）は、目標となる保全デバイス（ＳＥ１）に格納されたスクリプトローディングの履歴を用いる請求項１乃至５のいずれかに記載の方法。
【請求項７】
少なくともＨＳＭキー（Ｋ）と、ロード要請とリロード要請とによってそれぞれトリガされるロード及びリロード関数（Ｓ２，Ｓ９）とを備えたハードウェアセキュリティモジュール（ＨＳＭ）であって、
前記ロード関数（Ｓ２）は、前記ＨＳＭキー（Ｋ）を使用して暗号化された２つのキー（Ｋｅ１，Ｋｓ）を受信し、第１キー（Ｋｅ１）を使用して第２キー（Ｋｓ）を暗号化し、前記ＨＳＭキー（Ｋ）を使用してさらに暗号化された暗号化キー（（（Ｋｓ）Ｋｅ１）Ｋ）と、前記第１キー（Ｋｅ１）を用いて暗号化され、前記保全デバイス（ＳＥ１）に検索されたストレージキー（Ｋｓ）を与えるＡＰＤＵ＿ｐｕｔｋｅｙコマンド（（ＡＰＤＵ＿ＰＵＴＫＥＹ（（Ｋｓ）Ｋｅ１））Ｋｅ１）とを出力し、
前記リロード関数（Ｓ９）は、前記ＨＳＭキー（Ｋ）を使用して暗号化された２つのキー（（Ｋｅ１）Ｋ，（（Ｋｓ）Ｋｅ１）Ｋ）を受信し、第１キー（Ｋｅ１）を使用して暗号化された第２キー（（Ｋｓ）Ｋｅ１）と、前記保全デバイスキー（Ｋｅ１）を用いて暗号化され、前記保全デバイス（ＳＥ１）に前記第１キー（Ｋｅ１）を使用して暗号化された検索されたストレージキー（（Ｋｓ）Ｋｅ１）を与えるＡＰＤＵ＿ｐｕｔｋｅｙコマンド（（ＡＰＤＵ＿ＰＵＴＫＥＹ（（Ｋｓ）Ｋｅ１））Ｋｅ１）とを出力するハードウェアセキュリティモジュール（ＨＳＭ）。
【請求項８】
前記ロードおよびリロード関数（Ｓ２，Ｓ９）は、前記ＡＰＤＵ＿ｐｕｔｋｅｙコマンド（（ＡＰＤＵ＿ＰＵＴＫＥＹ（（Ｋｓ）Ｋｅ１））Ｋｅ１）が、前記保全デバイスキー（Ｋｅ１）と前記保全デバイス（ＳＥ１）と交換されるランダムデータとを用いて計算されたセッションキー（Ｋｅ１−ｓｅｎｃ）を用いて暗号化される請求項７に記載のハードウェアセキュリティモジュール（ＨＳＭ）。
【請求項９】
前記保全デバイスキー（Ｋｅ１）は、少なくとも２つの静的サブキーで構成され、一方のサブキーは、前記ロード及びリロード関数（Ｓ２，Ｓ９）により前記ストレージキー（Ｋｓ）を暗号化するのに使用され、他方のサブキーは、前記ロード及びリロード関数（Ｓ２，Ｓ９）により前記セッションキー（Ｋｅ１−ｓｅｎｃ）を計算するのに使用される請求項７に記載のハードウェアセキュリティモジュール（ＨＳＭ）。
【請求項１０】
前記保全デバイスキー（Ｋｅ１）は暗号化サブキー（Ｋｅ１−ｅｎｃ）と解読サブキー（Ｋｅ１−ｄｅｋ）とからなる少なくとも２つのサブキーから構成され、
プロビジョニングサーバ（ＰＳ）と保全デバイス（ＳＥｉ）とは、前記暗号化サブキー（Ｋｅ１−ｅｎｃ）と前記プロビジョニングサーバ（ＰＳ）及び前記保全デバイス（ＳＥｉ）のみが知っているある疑似ランダムデータとから得られたセッション暗号化サブキー（Ｋｅ１−ｓｅｎｃ）を用いて通信しており、
前のステップで、前記ハードウェアセキュリティモジュール（ＨＳＭ）の前記ロード関数（Ｓ２）は、以前に格納されたキーを上書きするために、ＨＳＭキー（Ｋ）を用いて解読し、前記提供された保全デバイス解読サブキー（Ｋｅ１−ｄｅｋ）と前記ＨＳＭキー（Ｋ）とを用いて暗号化した後に、前記ストレージキー（（（Ｋｓ）Ｋｅ１−ｄｅｋ）Ｋ）を戻し、前記提供された保全デバイス（ＳＥ１）に送られるように前記提供された保全デバイス解読サブキー（Ｋｅ１−ｄｅｋ）を用いて暗号化されたストレージキー（Ｋｓ）を前記保全デバイス（ＳＥ１）に付加するＡＰＤＵ＿ｐｕｔｋｅｙコマンド（（ＡＰＤＵ＿ＰＵＴＫＥＹ（（Ｋｓ）Ｋｅ１−ｄｅｋ））Ｋｅ１−ｓｅｎｃ）を戻し、
前記ハードウェアセキュリティモジュール（ＨＳＭ）の前記リロード関数（Ｓ９）は、
前記提供された保全デバイス解読サブキー（Ｋｅ１−ｄｅｋ）と前記ＨＳＭキー（Ｋ）とを用いて暗号化された前記ストレージキー（（（Ｋｓ）Ｋｅ１−ｄｅｋ）Ｋ）と得られたセッション暗号化サブキー（Ｋｅ１−ｓｅｎｃ）によって暗号化された前記提供された保全デバイス解読サブキー（Ｋｅ１−ｄｅｋ）を用いて暗号化されたストレージキー（Ｋｓ）を前記保全デバイス（ＳＥ１）に付加するＡＰＤＵ＿ｐｕｔｋｅｙコマンド（（ＡＰＤＵ＿ＰＵＴＫＥＹ（（Ｋｓ）Ｋｅ１−ｄｅｋ））Ｋｅ１−ｓｅｎｃ）とを戻す請求項９に記載のハードウェアセキュリティモジュール（ＨＳＭ）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロビジョニングサーバでサブスクリプションを管理する方法に係り、より正確には、ＨＳＭキーを有するハードウェアセキュリティモジュール（ＨＳＭ）と通信することのできるプロビジョニングサーバに関する。
本発明は、前記方法を使用するハードウェアセキュリティモジュールにも関係する。
【背景技術】
【０００２】
一般に、保全素子又は埋設ＵＩＣＣ（ｅＵＩＣＣ）に代表される保全デバイスには、プロビジョニングサーバによってロードされたいくつかのサブスクリプション（加入者情報）が含まれている。保全デバイスに十分なメモリがない場合、顧客は空き領域を作るためにサブスクリプションを除去し、より広いメモリスペースが利用可能になったときに、同じ保全デバイスにそれを後でリロードする。保全デバイスへの自動管理プロファイル方法でもダウンロードされたプロファイルを除去する。
【０００３】
しかし、すべてのＭＮＯからの必須要件は、クローニング、すなわち、２つ以上の保全デバイスに同一のサブスクリプションをロードすること、の防止である。
保全デバイスにサブスクリプションがロードされるとき、プロビジョニングサーバに簡単な仕組みを加えることが、現在、知られており、これによりサーバは他の保全デバイスに同一のサブスクリプションをロードするのを拒否する。
しかし、アタッカ（攻撃者）が、プロビジョニングサーバのデータベースを変更し、この仕組みを除去すると、プロビジョニングサーバはそれを知り得ず、他の保全デバイスに同一のサブスクリプションをロードすることを許可してしまう。
従って、従来技術の更なる変更と有効な解決法が望まれている。
【発明の概要】
【０００４】
本発明の目的は、複数の保全デバイスへサブスクリプションがクローニングされる可能性を避けることにある。
本発明は、広義には、ＨＳＭキーを有するハードウェアセキュリティモジュール（ＨＳＭ）と通信することが出来るプロビジョニングサーバにおけるサブスクリプションを管理する方法であって、
前記方法は、以下のステップｉ），ii）を含む予備ステップと；
ｉ）プロビジョニングサーバに、サブスクリプションの作成に対応するスクリプト（サブスクリプション作成スクリプト）を格納するステップであって、スクリプトはストレージキーを使用して暗号化され、暗号化されたスクリプトは保全デバイスにロードされるように意図され、それぞれの保全デバイスは保全デバイスキーと関連付けられているステップ；
ii）ＨＳＭキーを使用して暗号化された、ストレージキーと保全デバイスキーとをプロビジョニングサーバに格納するステップ；
【０００５】
さらに、前記方法は、
プロビジョニングサーバが所定のスクリプトを保全デバイスにロードするよう要請されたとき、以下のステップiii)〜vii)を含むサブスクリプションロードフェーズを更に備え、
iii)所定のスクリプトがいずれかの保全デバイスに以前にロードされているかをチェックするステップ；
iv）そのような以前のロードが検出されなかった場合には、暗号化されて格納されている保全デバイスキーとストレージキーとを、ロード要請中にハードウェアセキュリティモジュールのロード関数に提供するステップ；
ｖ）ハードウェアセキュリティモジュールのロード関数から、提供された保全デバイスキーとＨＳＭキーＫとを使用して暗号化されたストレージキーと、提供された保全デバイスキーを用いて暗号化され、提供された保全デバイスキーを用いても暗号化されている検索されたストレージキーを与えるＡＰＤＵ＿ｐｕｔｋｅｙコマンドとを検索するステップ；
vi）格納されているストレージキーを、保全デバイスキーと前のステップでハードウェアセキュリティモジュールによって戻されたＨＳＭキーとを使用して暗号化されたストレージキーで上書きするステップ；
vii)ＡＰＤＵ＿ｐｕｔｋｅｙコマンドを保全デバイスに送ると共に、スクリプトを保全デバイスに格納されるよう送信するステップ；
【０００６】
さらに、前記方法は、
チェックするステップ中に以前のローディングが検出された場合に、以下のステップviii）〜ｘ）を含むリロードサブスクリプションフェーズを更に備える。
viii）暗号化されて格納されている保全デバイスキーとストレージキーとを、リロード要請中にハードウェアセキュリティモジュールのリロード関数に提供するステップ；
ix）ハードウェアセキュリティモジュールのリロード関数から、提供された保全デバイスキーとＨＳＭキーとを使用して暗号化されたストレージキーと、
提供された保全デバイスキーを用いて暗号化され、提供された保全デバイスキーを用いても暗号化されている検索されたストレージキーを与えるＡＰＤＵ＿ｐｕｔｋｅｙコマンドとを検索するステップ；
ｘ）ＡＰＤＵ＿ｐｕｔｋｅｙコマンドを保全デバイスに送ると共に、スクリプトを保全デバイスに格納されるように送信するステップ。
【０００７】
従って、本発明に係る方法によれば、ストレージキーが保全デバイスキーを用いて暗号化されて格納されるので、どんなスクリプトも２つの異なる保全デバイスにロードされることはない。仮に、ストレージキーが他の保全デバイスにロードされていた後に格納されると、以前にロードされなかったかのように本発明の方法が適用されても、保全デバイスはストレージキーを解読することは不可能である。より正確にいうと、保全デバイスキーを用いた解読は、正しいストレージキーではなく他の保全デバイスキーを用いて暗号化されたストレージキーを与えるからである。
スクリプトは、読み出されず、実行されることもないので、対応のサブスクリプションのクローニングは発生しない。
【０００８】
キーのトランス暗号化とＡＰＤＵ＿ＰＵＴＫＥＹコマンドを作成するためにＨＳＭを使用することによりセキュリティレベルを上げることができる。
ある実施例では、ハードウェアセキュリティモジュールのロードおよびリロード関数は、ＡＰＤＵ＿ｐｕｔｋｅｙコマンドが、保全デバイスキーと保全デバイスと交換されるランダムデータとを用いて計算されたセッションキーを用いて暗号化される。
【０００９】
この実施例では、ロード及びリロード関数の各出力について異なるキーを持つことが出来る。
特定の形態では、保全デバイスキーは、少なくとも２つの静的サブキーで構成され、一方のサブキーは、ロード及びリロード関数によりストレージキーを暗号化するのに使用され、他方のサブキーは、ロード及びリロード関数によりセッションキーを計算するのに使用される。
この形態は、一般的に提供されている保全素子キーの構造に利用される。
【００１０】
好ましい形態では、保全デバイスキーは暗号化サブキーと解読サブキーとからなる少なくとも２つのサブキーから構成され、
プロビジョニングサーバと保全デバイスとは、暗号化サブキーとプロビジョニングサーバ及び保全デバイスのみが知っているある疑似ランダムデータとから得られたセッション暗号化サブキーを用いて通信しており、
前のステップで、ハードウェアセキュリティモジュールのロード関数は、以前に格納されたキーを上書きするために、ＨＳＭキーを用いて解読し、提供された保全デバイス解読サブキーとＨＳＭキーとを用いて暗号化した後に、ストレージキーを戻し、提供された保全デバイスに送られるように提供された保全デバイス解読サブキーを用いて暗号化されたストレージキーを保全デバイスに付加するＡＰＤＵ＿ｐｕｔｋｅｙコマンドを戻し、
ハードウェアセキュリティモジュールのリロード関数は、
提供された保全デバイス解読サブキーとＨＳＭキーとを用いて暗号化されたストレージキーと得られたセッション暗号化サブキーによって暗号化された提供された保全デバイス解読サブキーを用いて暗号化されたストレージキーを保全デバイスに付加するＡＰＤＵ＿ｐｕｔｋｅｙコマンドとを戻す。
【００１１】
この実施例は、本発明による異なる暗号／解読を行う旧式の保全デバイスキーの構成を示している。保全デバイスキーの異なるサブキーが、本発明の方法のステップに従って同一キーが使用されるのを常に避けるように使用されている。
【００１２】
特定の形態では、所定のスクリプトがいずれかの保全デバイスにロードされているかをチェックするステップは、プロビジョニングサーバに格納されたスクリプトローディングのヒストリ（履歴）を用いる。
この形態は、プロビジョニングサーバがローカルに、スクリプトが保全デバイスに既にロードされているか否かをチェックすることができる。
【００１３】
他の特定の形態では、所定のスクリプトが所定の保全デバイスにロードされているかをチェックするステップは、目標となる保全デバイスに格納されたスクリプトローディングの履歴を用いる。
この形態では、プロビジョニングサーバがメモリ内にすべての履歴を保存するタスクを開放し、各保全デバイスがロードされている異なるスクリプトの典型的には識別子を保有している。各保全デバイスはこの識別子を要請があればプロビジョニングサーバに送ることもできる。
【００１４】
本発明は、また、少なくともＨＳＭキーと、ロード要請とリロード要請とによってそれぞれトリガされるロード及びリロード関数とを備えたハードウェアセキュリティモジュールであって、
ロード関数は、ＨＳＭキーを使用して暗号化された２つのキーを受信し、第１キーを使用して第２キーを暗号化し、ＨＳＭキーを使用してさらに暗号化された暗号化キーと、第１キーを用いて暗号化され、保全デバイスに検索されたストレージキーを与えるＡＰＤＵ＿ｐｕｔｋｅｙコマンドとを出力し、
リロード関数は、ＨＳＭキーを使用して暗号化された２つのキーを受信し、第１キーを使用して暗号化された第２キーと、保全デバイスキーを用いて暗号化され、保全デバイスに第１キーを使用して暗号化された検索されたストレージキーを与えるＡＰＤＵ＿ｐｕｔｋｅｙコマンドとを出力するハードウェアセキュリティモジュールである。
【００１５】
このようなハードウェアセキュリティモジュール（ＨＳＭ）により本発明を実行することができる。
ＨＳＭはプロビジョニングサーバに格納されているキーを受け取り、受け取ったキーに対して２つの関数の一方を適用してＡＰＤＵ＿ＰＵＴＫＥＹコマンドとトランス暗号化後のストレージを出力する。
【００１６】
特定の実施例では、ロードおよびリロード関数は、ＡＰＤＵ＿ｐｕｔｋｅｙコマンドが、保全デバイスキーと保全デバイスと交換されるランダムデータとを用いて計算されたセッションキー（Ｋｅ１−ｓｅｎｃ）を用いて暗号化される。
【００１７】
特定の形態では、保全デバイスキーは、少なくとも２つの静的サブキーで構成され、一方のサブキーは、ロード及びリロード関数によりストレージキーを暗号化するのに使用され、他方のサブキーは、ロード及びリロード関数によりセッションキーを計算するのに使用される。
【００１８】
好ましい形態では、保全デバイスキーは暗号化サブキーと解読サブキーとからなる少なくとも２つのサブキーから構成され、
プロビジョニングサーバと保全デバイスとは、暗号化サブキーとプロビジョニングサーバ及び保全デバイスのみが知っているある疑似ランダムデータとから得られたセッション暗号化サブキーを用いて通信しており、
前のステップで、ハードウェアセキュリティモジュールのロード関数は、以前に格納されたキーを上書きするために、ＨＳＭキーを用いて解読し、提供された保全デバイス解読サブキーとＨＳＭキーとを用いて暗号化した後に、ストレージキーを戻し、提供された保全デバイスに送られるように提供された保全デバイス解読サブキーを用いて暗号化されたストレージキーを保全デバイスに付加するＡＰＤＵ＿ｐｕｔｋｅｙコマンドを戻し、
ハードウェアセキュリティモジュールのリロード関数は、
提供された保全デバイス解読サブキーとＨＳＭキーとを用いて暗号化されたストレージキーと得られたセッション暗号化サブキーによって暗号化された提供された保全デバイス解読サブキーを用いて暗号化されたストレージキーを保全デバイスに付加するＡＰＤＵ＿ｐｕｔｋｅｙコマンドとを戻す。
【００１９】
前述のおよび関連する目的を達成するために、１つまたは複数の実施形態は、以下に完全に記載され、特に請求項で指摘される特徴を備えている。
【図面の簡単な説明】
【００２０】
以下の説明および添付の図面は、特定の例示的な態様を詳細に示し、実施形態の原理を使用することができる種々の方法のうちのいくつかを示す。
他の利点および新規な特徴は図面を参照した以下の詳細な説明から明らかになるであろう。開示されている実施例はそのような観点とその均等物をすべて含むよう意図されている。
【００２１】
【図１】ハードウェアセキュリティモジュール、プロビジョニングサーバおよび少なくとも１つの保全デバイスを含む、本発明が有利に実行される環境を示す。
【図２Ａ】異なるローディング状況での本発明の異なるステップを示すシーケンスダイヤグラムである。
【図２Ｂ】異なるローディング状況での本発明の異なるステップを示すシーケンスダイヤグラムである。
【図２Ｃ】異なるローディング状況での本発明の異なるステップを示すシーケンスダイヤグラムである。
【発明を実施するための形態】
【００２２】
本発明をより完全に理解するために、添付の図面を参照して本発明を詳細に説明する。異なる図面に於いて、同一の要素は同一の参照符号を付して示されている。
明瞭化のために、本発明の理解に役立つ要素とステップのみを図面に示して説明する。
図１は、本発明が有利に実行される環境を示し、ハードウェアセキュリティモジュールＨＳＭ、プロビジョニングサーバＰＳ、そしてここでは、２つの保全デバイスＳＥ１、ＳＥ２を備えている。ＳＥ１とＳＥ２とは典型的には保全素子である。
【００２３】
本発明ではＨＳＭは少なくとも１つのＨＳＭキーを備え、少なくとも２つのトランス暗号関数Ｌｏａｄ，Ｒｅｌｏａｄを有している。
トランス暗号ロード関数は、２つの暗号文［Ｋ１］Ｋと［Ｋ２］Ｋとが与えられると、
Ｋ２をＫ１とＫとで暗号化するＡＰＤＵ＿ＰＵＴＫＥＹコマンドを戻す：［［Ｋ２］Ｋ１］Ｋ。
Ｋ１とＫとを使用して暗号化されたキーＫ２も出力される。トランス暗号リロード関数は、２つの暗号文［Ｋ１］Ｋと［［Ｋ２］Ｋ１］Ｋとが与えられると、
Ｋ２をＫ１とＫとで暗号化するＡＰＤＵ＿ＰＵＴＫＥＹコマンドを戻す：［［Ｋ２］Ｋ１］Ｋ。
【００２４】
プロビジョニングサーバＰＳは、異なるサブスクリプションの作成に対応するスクリプト（Ｓｃｒ）Ｋｓを格納している。このスクリプト（Ｓｃｒ）Ｋｓは、ストレージキーＫｓを使用して暗号化された後に格納されている。
プロビジョニングサーバＰＳは、また、ＨＳＭキーＫを使用してＨＳＭによって暗号化した後のストレージキーＫｓと本発明が実行される環境内に存在する多くの保全素子の保全素子キー（Ｋｅ１）Ｋ，（Ｋｅ２）Ｋを格納している。これらの保全素子キーは、ＨＳＭキーＫを使用してＨＳＭによって暗号化された後に格納される。
最後に、各保全素子ＳＥｉは自身の保全素子キーＫｅｉを格納している。
【００２５】
図２Ａは、ｅＵＩＣＣ  ＳＥ１に以前にロードしたことのないスクリプトＳｃｒＡをロードする要請があった場合の、本発明のステップシーケンスを示したものである。このｅＵＩＣＣ  ＳＥ１は典型的には保全素子である。
ステップＳ０で、サブスクリプションに対応するスクリプトを格納しているプロビジョニングサーバＰＳはスクリプトＳｃｒＡが既にロードされているか否かをチェックする。
【００２６】
図２Ａは、以前にロードされていなかったケースＮに対応している。
ステップＳ１で、プロビジョニングサーバＰＳは、ＨＳＭキーＫを使用して暗号化されて、格納されているストレージキーＫｓと保全素子キーＫｅ１とをハードウェアセキュリティモジュールＨＳＭのロード関数に送る。
保全素子キーが少なくとも２つのサブキー：暗号化サブキーＫｅ１−ｅｎｃと解読化サブキーＫｅ１−ｄｅｋで構成されるキーセットの場合には、一対の値（Ｋｅ１−ｅｎｃ，Ｋｅ１−ｄｅｋ）がＨＳＭキーを使用して事前に保全素子キーＫｅ１として暗号化されている。
【００２７】
Ｋｅ１−ｅｎｃはセッション暗号化キーであるＫｅ１−Ｓｅｎｃを作成するのに使用される。ステップＳ２で、ＨＳＭのロード関数は、受信した２つの暗号化キーをトランス暗号化する。ＨＳＭは保全素子キーＫｅ１とＨＳＭキーＫとによって暗号化されたストレージキーＫｓと、保全素子ＳＥ１に保全素子キーＫｅ１によって暗号化されたストレージキーＫｓを与えるコマンドＡＰＤＵ＿ＰＵＴＫＥとを出力する。このコマンドは保全素子キーＫｅ１によって更に暗号化されている。
【００２８】
保全素子キーＫｅ１がキーセットの場合には、ＨＳＭのロード関数は、キーセットＫｅ１の静的サブキーの１つ、例えば保全素子解読サブキーＫｅ１−ｄｅｋとＨＳＭキーＫとを使用して暗号化されたストレージキーＫｓと、保全素子ＳＥ１に保全素子解読サブキーＫｅ１−ｄｅｋによって暗号化されたストレージキーＫｓを与えるコマンドＡＰＤＵ＿ＰＵＴＫＥＹとを出力する。このコマンドは保全素子上で、検索されたセッション保全素子暗号化サブキーＫｅ１−ｓｅｎｃによって更に暗号化されている。
【００２９】
ステップＳ３で、暗号化されたストレージキー（（Ｋｓ）Ｋｅ１）ＫとコマンドＡＰＤＵ＿ＰＵＴＫＥＹとは、プロビジョニングサーバＰＳに送られる。
プロビジョニングサーバＰＳはステップＳ４でＡＰＤＵ＿ＰＵＴＫＥＹを保全素子ＳＥ１に送る。有利には、スクリプト（ＳｃｒＡ）ＫｓもステップＳ４で保全素子ＳＥ１に送られる。このスクリプトはプロビジョニングサーバに変更されることなく、ストレージキーＫｓによって暗号化されて格納されているものである。
【００３０】
注目すべきは、スクリプトＳｃｒＡとＡＰＤＵとは明確なメッセージ、厳密に言えば厳密なステップで送ることができる。
保全素子ＳＥ１は保全素子キーＫｅ１を有しているので、ＡＰＤＵ＿ＰＵＴＫＥＹとストレージキーＫｓとをアクセスする。ステップＳ５で、ストレージキーＫｓは、保全素子ＳＥ１中の保全素子キーＫｅ１を使用して解読された後に、レジスタｒｅｇに格納される。
保全素子ＳＥ１は次いでＫｓを使用してスクリプトを解読し、スクリプトＳｃｒＡを実行し保全素子ＳＥ１にサブスクリプションを作成する。保全素子キーとしてキーセットが使用されている場合、保全素子ＳＥ１は２つのサブキーを持っているので、スクリプトＳｃｒＡに続いて同様にストレージキーを解読することができる。
【００３１】
ステップＳ６で、プロビジョニングサーバＰＳは、ロードのヒストリを格納しているデータベース中で、ＨＳＭキーＫを使用して暗号化され、以前格納されたストレージキーをＨＳＭから受信した、ストレージキー、即ち、保全素子キーとＨＳＭキーＫとを使用して暗号化したストレージキー（［Ｋｓ］Ｋｅ１）Ｋによって上書きする。
並行して、スクリプトＳｃｒＡが保全素子ＳＥ１にロードされていることで有利にデータベースに記録する。この情報は保全素子にも格納され、ステップＳ０中で、プロビジョニングサーバＰＳによって質問される。
【００３２】
図２Ｂは、以前にｅＵＩＣＣ  ＳＥ１にロードされたサブスクリプションのスクリプトＳｃｒＡのロードが要請されたときの本発明のステップシーケンスを示したものである。
図は、ステップＳ０で、スクリプトＳｃｒＡが既にロードされているとして検出されたケースＹに対応している。次いでステップＳ７で、保全素子ＳＥ１にロードがなされているかがチェックされる。仮にＹｅｓ（ケースＹ）の場合には、プロビジョニングサーバＰＳが保全素子ＳＥ１に再度スクリプトＳｃｒＡをロードする要請を受信したことを意味する。
【００３３】
この場合、プロビジョニングサーバＰＳは、格納されているストレージキーＫｓと保全素子キーＫｅ１とをハードウェアセキュリティモジュールＨＳＭのリロード関数に送る。このようにして、ＨＳＭキーＫを使用して暗号化された保全素子キーＫｅ１と、保全素子キーＫｅ１とＨＳＭキーＫとを使用して暗号化されたストレージキーとがステップＳ８で、リロード関数によって受信される。ステップＳ９で、ＨＳＭのリロード関数は２つの暗号化キーをトランス暗号化する。そして、ＨＳＭは、実際に以前に格納されている、保全素子キーＫｅ１とＨＳＭキーＫとで暗号化されたストレージキーＫｓを出力する。保全素子ＳＥ１に保全素子キーＫｅ１によって暗号化されたストレージキーＫｓを与えるコマンドＡＰＤＵ＿ＰＵＴＫＥＹも出力される。このコマンドは、さらに、保全素子キーＫｅ１で暗号化されている。保全素子キーＫｅ１は常にコマンドを暗号化するのに効率的に使用される。しかし、実際には、Ｋｅ１は暗号化自体に使用される動的キーを生成するのに使用される。
【００３４】
従って、保全素子キーＫｅ１がキーセットの場合、ＡＰＤＵコマンドが生成される毎に、新しいセッションキーＫｅ１-Ｓｅｎｃが新しいランダムデータと１つの静的サブキー、典型的にはサブキーＫｅ１−ｅｎｃ、とで計算される。注目すべきは、暗号化には異なるセッションキーが実際に使用されるのでロード及びリロード関数の出力は常に明確である。実際に、出力は、Ｋｓを使用して暗号化されたスクリプト［ＳｃｒＡ］ＫｓとＡＰＤＵ＿ＰＵＴＫＥＹコマンド［［ＡＰＤＵ＿ＰＵＴＫＥＹ（Ｋｓ）］Ｋｅ１＿ｄｅｋ］Ｋｅ１＿Ｓｅｎｃ．とから構成されている。ＡＰＤＵ＿ＰＵＴＫＥＹコマンドは動的セッションキーＫｅ１−Ｓｅｎｃを用いて暗号化されている。ここでキーＫｓ自身も静的なサブキーの１つ、ここでは解読キーＫｅ１＿ｄｅｋを使って暗号化されている。
【００３５】
ステップ１０で、出力されたストレージキーと出力されたコマンドとはプロビジョニングサーバＰＳに送られ、以前にデータベースに格納された値［Ｋｓ］Ｋｅ１とされ、コマンドＡＰＤＵ＿ＰＵＴＫＥＹは、有利には、ストレージキーを使用して暗号化されたスクリプト（ＳｃｒＡ）Ｋｓと共に保全素子ＳＥ１に送られる。
保全素子ＳＥ１はストレージキーＫｓを持つのでスクリプトＳｃｒＡを解読することができる。次いで、スクリプトＳｃｒＡを実行することで、保全素子ＳＥ１に対応するサブスクリプションを作成する。
【００３６】
ここで、図２ＢにステップＳ７にケースＮとして概略的に図示されているケース、即ち、スクリプトＳｃｒＡが既に他の保全素子にロードされている場合について考察する。
通常の動作では、チェックステップＳ７は、スクリプトは以前にロードされているが、保全素子ＳＥ１にではない（ケースＮ）と検出する。そして、要請はステップＳ１２で、直接に拒否される。
【００３７】
本発明は、アタッカ（攻撃者）がロードのヒストリが格納されているデータベースを変更することが出来て、スクリプトが保全素子ＳＥ１にロードされているという記録を除去するという状況を特に解決するものである。そこで、図２Ｃに図示されているように、ロードのヒストリがステップＳ０で実行されたチェックの出力が、スクリプトＳｃｒＡがロードされたことがなくキーＫｅ２を持つ他の保全素子ＳＥ２には以前にロードされたケースＮに対応するように破損されている場合について考察する。
【００３８】
ステップＳ１で、プロビジョニングサーバＰＳは、以前に格納されたストレージキーとして（（Ｋｓ）Ｋｅ２）Ｋを、即ち、ＨＳＭキーＫを使用して暗号化された保全素子キーＫｅ１と他の保全素子キーＫｅ２とを使用して暗号化したストレージキーをＨＳＭのロード関数に送る。ステップＳ２のロード関数は他の保全素子キーＫｅ２、保全素子キーＫｅ１及びＨＳＭキーＫによって暗号化されたストレージキー（（（Ｋｓ）Ｋｅ２）Ｋｅ１）Ｋを出力する。この出力と送出されるコマンドＡＰＤＵ＿ＰＵＴＫＥＹはＫｓではなく（Ｋｓ）Ｋｅ２のキーを有している。
【００３９】
送られたスクリプトは、変わらず、Ｋｓのみによって暗号化されて保全素子ＳＥ１にある。保全素子は（Ｋｓ）Ｋｅ２を有するスクリプトを解読出来ず、スクリプトは実行に失敗する。したがってサブスクリプションはＳＥ１にはインストールされない。従って、本発明では、スクリプトが保全素子に以前にロードされたが、その記録がそのヒストリから除去された時には、Ｋｓが検出されないため、サブスクリプションは他のカードにインストールされることはない。
【００４０】
スクリプトＳｃｒＡが保全素子ＳＥ１にロードされていると、ＳＥ１はサブスクリプション識別子のヒストリ（履歴）を保持することが出来る。プロビジョニングサーバＰＳが同一のサブスクリプションプロファイルをダウンロードしようとするたびに、プロビジョニングサーバＰＳは保全素子ＳＥ１に、そのようなプロファイルが既にダウンロードされているか否かと質問する。仮に否であれば、新しいスクリプトＳｃｒＢが使用される。是であれば、保全素子ＳＥ１は使用するサブスクリプションの識別子を送る。プロビジョニングサーバＰＳは、次いで、受信した識別子に対応するスクリプトを検索し、以前に格納された［Ｋｓ］Ｋｅ１を再使用する。
【００４１】
上述の詳細な説明では、添付の図面を一例として参照して本発明が実施される特定の実施例を示した。これらの実施例は、当業者が本発明を実施できるに十分な程度に詳細に記載されている。もちろん、種々その変形がフォームや詳細について本発明の本質からはなれることなく容易に行うことができることは理解されるべきである。
従って、本発明はここで示し、説明したそのままの形態に限定されるものでもなく、ここで説明され、クレームされている本発明の全体以内に限定されるものではない。
【００４２】
さらに、本発明を説明する詳細な説明、図面及びクレームに記載された特徴は発明にとってそれ自体又は組合わせにおいて必須であるかも知れない。したがって、上述の詳細な説明は、制限的に取るべきではなく、本発明の範囲は、添付のクレームによってのみ規定され、適切に解釈され、クレームが規定する均等物の全範囲を含むものである。
特に、クレーム中の参照符号は本発明の範囲を制限するものとして解釈してはならない。“comprising（＝備える）”の文言は、他の素子やステップがあることを除外してはおらず、単数形冠詞“ａ”や“ａｎ”は複数も含む。
【図１】
0006318305.tif 000002
【図２Ａ】
0006318305.tif 000003
【図２Ｂ】
0006318305.tif 000004
【図２Ｃ】
0006318305.tif 000005