(57)【要約】【課題】  仮想トラステッド・プラットフォーム・モジュールに関するマイグレーション方式を提供することにある。【解決手段】  この手順は、ある物理プラットフォームから他の物理プラットフォームへ仮想トラステッド・プラットフォーム・モジュールのインスタンスを確実にマイグレーションすることができる。仮想トラステッド・プラットフォーム・モジュール・インスタンスの状態はソース仮想トラステッド・プラットフォーム・モジュールからダウンロードされ、その状態情報はすべて、公開および対称鍵暗号方式のハイブリッドを使用して暗号化される。暗号化された状態は、ターゲット物理プラットフォームに転送され、暗号化解除され、仮想トラステッド・プラットフォーム・モジュール・インスタンスの状態が再構築される。【選択図】  図４
2009530743.tif 000002
【特許請求の範囲】
【請求項１】
仮想トラステッド・プラットフォーム・モジュール・インスタンスをマイグレーションするためのコンピュータによって実行される方法であって、
ソース・プラットフォーム上の親仮想トラステッド・プラットフォーム・モジュール・インスタンスを介して仮想トラステッド・プラットフォーム・モジュール・インスタンスの状態をエクスポートするステップと、
宛先プラットフォーム上の親仮想トラステッド・プラットフォーム・モジュール・インスタンスを介して前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態をインポートするステップと、
を含む、コンピュータによって実行される方法。
【請求項２】
前記ソース・プラットフォームと前記宛先プラットフォームが異なる物理プラットフォーム上にある、請求項１に記載のコンピュータによって実行される方法。
【請求項３】
前記ソース・プラットフォーム上の前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態を削除するステップ
をさらに含む、請求項１に記載のコンピュータによって実行される方法。
【請求項４】
前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態が、ネットワーク伝送プロトコルに基づく転送プロトコルを使用して、前記ソース・プラットフォームから前記宛先プラットフォームにストリーミングされる、請求項１に記載のコンピュータによって実行される方法。
【請求項５】
前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態が複数のステップでエクスポートされ、前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態が複数のステップでインポートされる、請求項１に記載のコンピュータによって実行される方法。
【請求項６】
前記ソース・プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスにより前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態に保全性データを追加するステップと、
前記宛先プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスにより前記保全性データを妥当性検査するステップと、
をさらに含む、請求項１に記載のコンピュータによって実行される方法。
【請求項７】
前記保全性データがマイグレーション・ダイジェストである、請求項６に記載のコンピュータによって実行される方法。
【請求項８】
前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態をエクスポートする前記ステップが、前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態の各部分をバイト・ストリームにシリアル化するステップを含み、前記ソース・プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスがそれぞれのシリアル化されたバイト・ストリームをソース・ダイジェストに形成し、
すべてのソース・ダイジェストを累積して最終ソース・ダイジェストを形成するステップと、
前記最終ソース・ダイジェストをエクスポートするステップと、
前記宛先プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスにより前記シリアル化されたバイト・ストリームを受信するステップであって、前記宛先プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスがそれぞれのシリアル化されたバイト・ストリームを宛先ダイジェストに形成するステップと、
すべての前記宛先ダイジェストを累積して最終宛先ダイジェストを形成するステップと、
前記最終ソース・ダイジェストを前記最終宛先ダイジェストと比較するステップと、
をさらに含む、請求項７に記載のコンピュータによって実行される方法。
【請求項９】
前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態が複数の親仮想トラステッド・プラットフォーム・モジュール・インスタンスによってインポートされるのを防止するステップ
をさらに含む、請求項１に記載のコンピュータによって実行される方法。
【請求項１０】
前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態が複数の親仮想トラステッド・プラットフォーム・モジュール・インスタンスによってインポートされるのを防止する前記ステップが、
固有のマイグレーションＩＤを生成するステップと、
前記トラステッド・プラットフォーム・モジュール・インスタンスの前記状態に前記固有のマイグレーションＩＤを追加するステップと、
前記宛先トラステッド・プラットフォーム・モジュール・インスタンスにより前記マイグレーションＩＤを検証するステップと、
を含む、請求項９に記載のコンピュータによって実行される方法。
【請求項１１】
前記宛先プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスが前記固有のマイグレーションＩＤを生成し、前記固有のマイグレーションＩＤが前記ソース・プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスに送信され、前記ソース・プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスが前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態に前記固有のマイグレーションＩＤを追加する、請求項１０に記載のコンピュータによって実行される方法。
【請求項１２】
前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態がエクスポートされる前に、前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態を暗号化するステップと、
前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態がインポートされた後に、前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態を暗号化解除するステップと、
をさらに含む、請求項１に記載のコンピュータによって実行される方法。
【請求項１３】
前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態をエクスポートする前記ステップと、前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態をインポートする前記ステップが、
前記ソース・プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスと前記宛先プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスとの間で対称鍵を交換するステップと、
前記対称鍵により前記ソース・プラットフォーム上の前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態を暗号化するステップと、
前記対称鍵により前記宛先プラットフォーム上の前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態を暗号化解除するステップと、
を含む、請求項１２に記載のコンピュータによって実行される方法。
【請求項１４】
前記ソース・プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスと前記宛先プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスとの間で対称鍵を交換する前記ステップが、
前記ソース・プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスによりランダム対称鍵を生成するステップと、
公開鍵を使用して、前記ランダム対称鍵を暗号化するステップと、
前記宛先プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスに前記暗号化されたランダム対称鍵をエクスポートするステップであって、前記宛先プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスが、前記公開鍵に関連する秘密鍵を使用することにより、前記暗号化されたランダム対称鍵を暗号化解除するステップと、
を含む、請求項１３に記載のコンピュータによって実行される方法。
【請求項１５】
前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態にメッセージ認証コードを付加するステップと、
前記メッセージ認証コードを検証するステップと、
をさらに含む、請求項１に記載のコンピュータによって実行される方法。
【請求項１６】
前記ソース・プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスにより前記メッセージ認証コードに使用される鍵を生成するステップと、
前記ソース・プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュールと前記宛先プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュールとの間で前記鍵を交換するステップと、
前記鍵が、前記宛先プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスにより前記メッセージ認証コードの検証に使用されるステップと、
をさらに含む、請求項１５に記載のコンピュータによって実行される方法。
【請求項１７】
前記メッセージ認証コード用の前記鍵を生成する前記ステップと、前記ソース・プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュールと前記宛先プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュールとの間で前記鍵を交換する前記ステップが、
前記ソース・プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスにより認証鍵を生成するステップと、
前記ソース・プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスにより、公開鍵により前記認証鍵を暗号化するステップと、
前記宛先プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスにより、前記公開鍵に関連する秘密鍵を使用して、前記認証鍵を暗号化解除するステップと、
を含む、請求項１６に記載のコンピュータによって実行される方法。
【請求項１８】
前記仮想トラステッド・プラットフォーム・モジュール・インスタンスをロックするステップであって、前記仮想トラステッド・プラットフォーム・モジュール・インスタンスがロックされた後で前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態をエクスポートすることができ、前記仮想トラステッド・プラットフォーム・モジュール・インスタンスがロックされると前記仮想トラステッド・プラットフォーム・モジュール・インスタンスをアンロックすることができないステップ
をさらに含む、請求項１に記載のコンピュータによって実行される方法。
【請求項１９】
前記宛先プラットフォーム上の子仮想トラステッド・プラットフォーム・モジュール・インスタンスをロックするステップであって、前記宛先プラットフォーム上の前記子仮想トラステッド・プラットフォーム・モジュール・インスタンスがロックされた後で前記仮想トラステッド・プラットフォーム・モジュールの前記状態がインポートされ、前記仮想トラステッド・プラットフォーム・モジュールの前記状態のすべてがインポートされない限り、前記宛先プラットフォーム上の前記子仮想トラステッド・プラットフォーム・モジュール・インスタンスをアンロックすることができないステップ
をさらに含む、請求項１に記載のコンピュータによって実行される方法。
【請求項２０】
仮想トラステッド・プラットフォーム・モジュール・インスタンスをマイグレーションするためのコンピュータ使用可能プログラム・コードを含むコンピュータ使用可能媒体を含むコンピュータ・プログラムであって、
ソース・プラットフォーム上の親仮想トラステッド・プラットフォーム・モジュール・インスタンスを介して仮想トラステッド・プラットフォーム・モジュール・インスタンスの状態をエクスポートするコンピュータ使用可能プログラム・コードと、
宛先プラットフォーム上の親仮想トラステッド・プラットフォーム・モジュール・インスタンスを介して前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態をインポートするコンピュータ使用可能プログラム・コードと、
を含む、コンピュータ・プログラム。
【請求項２１】
前記ソース・プラットフォーム上の前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態を削除するコンピュータ使用可能プログラム・コード
をさらに含む、請求項２０に記載のコンピュータ・プログラム。
【請求項２２】
前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態をエクスポートする前記コンピュータ使用可能プログラム・コードが、前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態を複数のステップでエクスポートするコンピュータ使用可能プログラム・コードを含み、前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態をインポートする前記コンピュータ使用可能プログラム・コードが、前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態を複数のステップでインポートするコンピュータ使用可能プログラム・コードを含む、請求項２０に記載のコンピュータ・プログラム。
【請求項２３】
前記ソース・プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスにより前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態に保全性データを追加するコンピュータ使用可能プログラム・コードと、
前記宛先プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスにより前記保全性データを妥当性検査するコンピュータ使用可能プログラム・コードと、
をさらに含む、請求項２０に記載のコンピュータ・プログラム。
【請求項２４】
前記保全性データがマイグレーション・ダイジェストであり、
前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態をエクスポートする前記コンピュータ使用可能プログラム・コードが、前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態の各部分をバイト・ストリームにシリアル化するコンピュータ使用可能プログラム・コードを含み、前記ソース・プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスがそれぞれのシリアル化されたバイト・ストリームをソース・ダイジェストに形成し、
すべてのソース・ダイジェストを累積して最終ソース・ダイジェストを形成するコンピュータ使用可能プログラム・コードと、
前記最終ソース・ダイジェストをエクスポートするコンピュータ使用可能プログラム・コードと、
前記宛先プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスにより前記シリアル化されたバイト・ストリームを受信するコンピュータ使用可能プログラム・コードであって、前記宛先プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスがそれぞれのシリアル化されたバイト・ストリームを宛先ダイジェストに形成するコンピュータ使用可能プログラム・コードと、
すべての前記宛先ダイジェストを累積して最終宛先ダイジェストを形成するコンピュータ使用可能プログラム・コードと、
前記最終ソース・ダイジェストを前記最終宛先ダイジェストと比較するコンピュータ使用可能プログラム・コードと、
をさらに含む、請求項２３に記載のコンピュータ・プログラム。
【請求項２５】
前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態が複数の親仮想トラステッド・プラットフォーム・モジュール・インスタンスによってインポートされるのを防止するコンピュータ使用可能プログラム・コード
をさらに含む、請求項２０に記載のコンピュータ・プログラム。
【請求項２６】
前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態が複数の親仮想トラステッド・プラットフォーム・モジュール・インスタンスによってインポートされるのを防止する前記コンピュータ使用可能プログラム・コードが、
固有のマイグレーションＩＤを生成するコンピュータ使用可能プログラム・コードと、
前記トラステッド・プラットフォーム・モジュール・インスタンスの前記状態に前記固有のマイグレーションＩＤを追加するコンピュータ使用可能プログラム・コードと、
前記宛先トラステッド・プラットフォーム・モジュール・インスタンスにより前記マイグレーションＩＤを検証するコンピュータ使用可能プログラム・コードと、
を含む、請求項２５に記載のコンピュータ・プログラム。
【請求項２７】
前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態がエクスポートされる前に、前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態を暗号化するコンピュータ使用可能プログラム・コードと、
前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態がインポートされた後に、前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態を暗号化解除するコンピュータ使用可能プログラム・コードと、
をさらに含む、請求項２０に記載のコンピュータ・プログラム。
【請求項２８】
前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態を暗号化する前記コンピュータ使用可能プログラム・コードと、前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態を暗号化解除する前記コンピュータ使用可能プログラム・コードが、
前記ソース・プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスによりランダム対称鍵を生成するコンピュータ使用可能プログラム・コードと、
公開鍵を使用して、前記ランダム対称鍵を暗号化するコンピュータ使用可能プログラム・コードと、
前記宛先プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスに前記暗号化されたランダム対称鍵をエクスポートするコンピュータ使用可能プログラム・コードであって、前記宛先プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスが、前記公開鍵に関連する秘密鍵を使用することにより、前記暗号化されたランダム対称鍵を暗号化解除するコンピュータ使用可能プログラム・コードと、
前記ランダム対称鍵を使用して、前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスにより前記ソース・プラットフォーム上の前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態を暗号化するコンピュータ使用可能プログラム・コードと、
前記ランダム対称鍵を使用して、前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスにより前記宛先プラットフォーム上の前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態を暗号化解除するコンピュータ使用可能プログラム・コードと、
を含む、請求項２７に記載のコンピュータ・プログラム。
【請求項２９】
前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態にメッセージ認証コードを付加するコンピュータ使用可能プログラム・コードと、
前記メッセージ認証コードを検証するコンピュータ使用可能プログラム・コードと、
をさらに含む、請求項２０に記載のコンピュータ・プログラム。
【請求項３０】
前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態にメッセージ認証コードを付加する前記コンピュータ使用可能プログラム・コードと、前記メッセージ認証コードを検証する前記コンピュータ使用可能プログラム・コードが、
前記ソース・プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスにより認証鍵を生成するコンピュータ使用可能プログラム・コードと、
前記ソース・プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスにより、公開鍵により前記認証鍵を暗号化するコンピュータ使用可能プログラム・コードと、
前記ソース・プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスにより前記暗号化された認証鍵をエクスポートするコンピュータ使用可能プログラム・コードと、
前記宛先プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスにより前記暗号化された認証鍵をインポートするコンピュータ使用可能プログラム・コードと、
前記宛先プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスにより、前記公開鍵に関連する秘密鍵を使用して、前記認証鍵を暗号化解除するコンピュータ使用可能プログラム・コードと、
前記認証鍵を使用して、前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスにより前記ソース・プラットフォーム上の仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態にメッセージ認証コードを付加するコンピュータ使用可能プログラム・コードと、
前記認証鍵を使用して、前記宛先プラットフォーム上の前記親仮想トラステッド・プラットフォーム・モジュール・インスタンスにより前記付加されたメッセージ認証コードを検証するコンピュータ使用可能プログラム・コードと、
を含む、請求項２９に記載のコンピュータ・プログラム。
【請求項３１】
前記仮想トラステッド・プラットフォーム・モジュール・インスタンスをロックするコンピュータ使用可能プログラム・コードであって、前記仮想トラステッド・プラットフォーム・モジュール・インスタンスがロックされた後で前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態がエクスポートされ、前記仮想トラステッド・プラットフォーム・モジュール・インスタンスがロックされると前記仮想トラステッド・プラットフォーム・モジュール・インスタンスをアンロックすることができないコンピュータ使用可能プログラム・コード
をさらに含む、請求項２０に記載のコンピュータ・プログラム。
【請求項３２】
前記宛先プラットフォーム上の子仮想トラステッド・プラットフォーム・モジュール・インスタンスをロックするコンピュータ使用可能プログラム・コードであって、前記宛先プラットフォーム上の前記子仮想トラステッド・プラットフォーム・モジュール・インスタンスがロックされた後で前記仮想トラステッド・プラットフォーム・モジュールの前記状態がインポートされ、前記仮想トラステッド・プラットフォーム・モジュールの前記状態のすべてがインポートされない限り、前記宛先プラットフォーム上の前記子仮想トラステッド・プラットフォーム・モジュール・インスタンスをアンロックすることができないコンピュータ使用可能プログラム・コード
をさらに含む、請求項２０に記載のコンピュータ・プログラム。
【請求項３３】
仮想トラステッド・プラットフォーム・モジュール・インスタンスをマイグレーションするためのシステムであって、
コンピュータ使用可能プログラム・コードを保管する記憶装置と、
ソース・プラットフォーム上の親仮想トラステッド・プラットフォーム・モジュール・インスタンスを介して仮想トラステッド・プラットフォーム・モジュール・インスタンスの状態をエクスポートし、宛先プラットフォーム上の親仮想トラステッド・プラットフォーム・モジュール・インスタンスを介して前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態をインポートするためのコンピュータ使用可能プログラム・コードを実行するプロセッサと、
を含む、システム。
【請求項３４】
仮想トラステッド・プラットフォーム・モジュール・インスタンスをマイグレーションするための方法であって、
クライアントから仮想トラステッド・プラットフォーム・モジュール・インスタンスをマイグレーションするための要求を受信するステップと、
前記クライアントにマイグレーション・アプリケーションを送信するステップであって、前記マイグレーション・アプリケーションがソース・プラットフォームと宛先プラットフォームの両方にインストールされるものであり、前記マイグレーション・アプリケーションが、前記仮想トラステッド・プラットフォーム・モジュール・インスタンスの前記状態をシリアル化するために親仮想トラステッド・プラットフォーム・モジュールにコマンドを送信し、拡張トラステッド・プラットフォーム・モジュール・コマンド・セットの使用を可能にし、前記拡張トラステッド・プラットフォーム・モジュール・コマンド・セットにより仮想トラステッド・プラットフォーム・モジュール・インスタンスの完全な状態のダウンロードが可能になるステップと、
を含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にデータ処理分野に関する。具体的には、本発明は、仮想トラステッド・プラットフォーム・モジュール・インスタンス（virtual Trusted Platform Module  instance）をマイグレーションするためのコンピュータによって実行される方法、データ処理システム、およびコンピュータ・プログラム（computer program product）を提供する。
【背景技術】
【０００２】
トラステッド・コンピューティング・グループは、トラステッド・プラットフォーム・モジュール（ＴＰＭ：Trusted Platform Module）と呼ばれるハードウェア・モジュールに関する機能およびプロトコルを定義した。この部分のハードウェアは、たとえば、非対称鍵生成、暗号化解除、暗号化、署名、シーリング、ＴＰＭの状態へのデータのバインディング、ＴＰＭ間の鍵のマイグレーション、乱数発生、およびハッシュ機能などのセキュリティおよび暗号機能をコンピュータ・システムに提供するものである。また、ＴＰＭは、保管された鍵、不揮発性メモリ領域、およびプラットフォーム構成レジスタの形で状態を保持する。
【０００３】
多くのハードウェア・ベンダは、マザーボードにはんだ付けされたＴＰＭを装備したコンピューティング・システムを出荷し、それにより、Ｌｉｎｕｘ（商標）またはＷｉｎｄｏｗｓ（商標）などのオペレーティング・システムによるＴＰＭの広範囲に及ぶ使用が可能になる。
【０００４】
ハードウェアの仮想化が一般的な在庫ハードウェア（off the shelf hardware）に使用可能になるにつれて、仮想化可能システム上のトラステッド・コンピューティングのサポートに対する関心は増大している。１台のマシン上で複数のオペレーティング・システムを実行できることにより、ハイエンド・サーバ用に予約された領域が残存しなくなるが、広く使用可能なものになる。仮想化されたシステム上の各オペレーティング・システムについてトラステッド・コンピューティングをサポートするために、このようなオペレーティング・システムのそれぞれに、それがそれ専用のプライベートＴＰＭと会話していると思わせるような仮想トラステッド・プラットフォーム・モジュールが使用可能になることが好ましい。
【０００５】
オペレーティング・システムに関する仮想化サポートは、あるプラットフォーム上で実行されているオペレーティング・システムの下の追加ソフトウェア層を介して可能になる。通常、オペレーティング・システムはハードウェアのすぐ上で実行されるが、仮想化可能システムでは、「ハイパーバイザ（hypervisor）」または「仮想計算機モニター（virtual machinemonitor）」と呼ばれる層が仮想計算機を実装し、その内部でオペレーティング・システムを実行することができる。ハイパーバイザはシステム内の最下位ソフトウェア層になる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
最新の仮想化技術により、あるプラットフォームから他のプラットフォームへの仮想計算機のマイグレーションが可能になる。仮想計算機内部のオペレーティング・システムが仮想ＴＰＭに関連付けられる場合、その仮想ＴＰＭは、ＴＰＭ機能がターゲット・プラットフォーム上で使用可能になるように、その状態を新しいプラットフォームにマイグレーションできることが望まれている。
【課題を解決するための手段】
【０００７】
本発明の様々な態様は、あるプラットフォームから他のプラットフォームへ仮想ＴＰＭのインスタンスを確実にマイグレーションするためのコンピュータによって実行される方法およびデータ処理システムを記述するものである。マイグレーションのプロセス中、仮想ＴＰＭインスタンスの独自性は保存される。また、仮想ＴＰＭインスタンスの状態を除外または変更しようという試みが検出されるように、仮想ＴＰＭインスタンスの完全かつ未修正の状態のみがマイグレーションされることも保証される。転送されるすべての状態情報は、ソース・プラットフォーム上の仮想ＴＰＭによって暗号化され、宛先プラットフォーム上の仮想ＴＰＭによって暗号化解除される。
【０００８】
本発明に特有と思われる新規な特徴は特許請求の範囲に明記されている。しかし、本発明のそのもの、ならびにその好ましい使用態様、追加の目的および利点は、添付図面に併せて読んだときに例示的な一実施形態に関する以下の詳細な説明を参照することによって最も良く理解されるであろう。
【発明を実施するための最良の形態】
【０００９】
図１〜図２は、本発明の諸実施形態を実装可能なデータ処理環境の模範的な図として示されている。図１〜図２は、模範的なものに過ぎず、本発明の諸態様または諸実施形態を実装可能な環境に関するいかなる制限も表明または暗示するためのものではないことを認識されたい。本発明の精神または範囲を逸脱せずに、描かれている環境に対して多くの変更を行うことができる。
【００１０】
次に添付図面に関して説明すると、図１は、本発明の諸態様を実装可能なデータ処理システムのネットワークの図表現を描いている。ネットワーク・データ処理システム１００は、本発明の諸実施形態を実装可能なコンピュータのネットワークである。ネットワーク・データ処理システム１００は、ネットワーク・データ処理システム１００内でまとめて接続された様々な装置およびコンピュータ間の通信リンクを提供するために使用するための媒体であるネットワーク１０２を含む。ネットワーク１０２は、ワイヤ、ワイヤレス通信リンク、または光ファイバ・ケーブルなどの接続部を含むことができる。
【００１１】
描かれている例では、サーバ１０４およびサーバ１０６は、記憶装置１０８とともにネットワーク１０２に接続する。加えて、クライアント１１０、１１２、および１１４もネットワーク１０２に接続する。これらのクライアント１１０、１１２、および１１４は、たとえば、パーソナル・コンピュータまたはネットワーク・コンピュータにすることができる。描かれている例では、サーバ１０４は、ブート・ファイル、オペレーティング・システム・イメージ、アプリケーションなどのデータをクライアント１１０、１１２、および１１４に提供する。クライアント１１０、１１２、および１１４は、この例ではサーバ１０４に対するクライアントである。ネットワーク・データ処理システム１００は、図示されていない追加のサーバ、クライアント、およびその他の装置を含むことができる。
【００１２】
描かれている例では、ネットワーク・データ処理システム１００は、相互に通信するために伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）というプロトコル・スイートを使用するネットワークおよびゲートウェイの世界的集合を表すネットワーク１０２を有するインターネットである。インターネットの中心には、データおよびメッセージを経路指定する何千もの商用、行政、教育、およびその他のコンピュータ・システムからなる、大ノードまたはホスト・コンピュータ間の高速データ通信回線のバックボーンが存在する。当然のことながら、ネットワーク・データ処理システム１００は、たとえば、イントラネット、ローカル・エリア・ネットワーク（ＬＡＮ）、または広域ネットワーク（ＷＡＮ）などのいくつかの異なるタイプのネットワークとしても実装することができる。図１は、一例としてのものであり、本発明の種々の実施形態に関するアーキテクチャ上の制限としてのものではない。
【００１３】
次に図２に関して説明すると、本発明の諸態様を実装可能なデータ処理システムのブロック図が示されている。データ処理システム２００は、図１のサーバ１０４またはクライアント１１０などのコンピュータの一例であり、本発明の諸実施形態用のプロセスを実装するコンピュータ使用可能コードまたは命令はそこに位置することができる。
【００１４】
描かれている例では、データ処理システム２００は、ノース・ブリッジおよびメモリ・コントローラ・ハブ（ＮＢ／ＭＣＨ：north bridge and memory controller hub）２０２と、サウス・ブリッジおよび入出力（Ｉ／Ｏ）コントローラ・ハブ（ＳＢ／ＩＣＨ：south bridge and input/output controller hub）２０４とを含む、ハブ・アーキテクチャを使用する。処理装置２０６、メイン・メモリ２０８、およびグラフィックス・プロセッサ２１０は、ノース・ブリッジおよびメモリ・コントローラ・ハブ２０２に接続されている。グラフィックス・プロセッサ２１０は、アクセラレィティッド・グラフィックス・ポート（ＡＧＰ：accelerated graphics port）を介してノース・ブリッジおよびメモリ・コントローラ・ハブ２０２に接続することができる。
【００１５】
描かれている例では、ＬＡＮアダプタ２１２はサウス・ブリッジおよびＩ／Ｏコントローラ・ハブ２０４に接続する。オーディオ・アダプタ２１６、キーボードおよびマウス・アダプタ２２０、ＴＰＭ２２２、読み取り専用メモリ（ＲＯＭ）２２４、ハード・ディスク・ドライブ（ＨＤＤ）２２６、ＣＤ−ＲＯＭドライブ２３０、ユニバーサル・シリアル・バス（ＵＳＢ：universal serial bus）ポートおよびその他の通信ポート２３２、ならびにＰＣＩ／ＰＣＩｅ装置２３４は、バス２３８およびバス２４０を介してサウス・ブリッジおよびＩ／Ｏコントローラ・ハブ２０４に接続する。ＰＣＩ／ＰＣＩｅ装置は、たとえば、イーサネット・アダプタ、ノートブック・コンピュータ用のアドイン・カードおよびＰＣカード、ならびにＴＰＭ２２２を含むことができる。ＰＣＩはカード・バス・コントローラを使用するが、ＰＣＩｅはそれを使用しない。ＲＯＭ２２４は、たとえば、フラッシュ・バイナリ入出力システム（ＢＩＯＳ：binary input/output system）にすることができる。
【００１６】
ハード・ディスク・ドライブ２２６およびＣＤ−ＲＯＭドライブ２３０は、バス２４０を介してサウス・ブリッジおよびＩ／Ｏコントローラ・ハブ２０４に接続する。ハード・ディスク・ドライブ２２６およびＣＤ−ＲＯＭドライブ２３０は、たとえば、インテグレーテッド・ドライブ・エレクトロニクス（ＩＤＥ：integrated drive electronics）またはシリアル・アドバンスド・テクノロジ・アタッチメント（ＳＡＴＡ：serial advanced technology attachment）インターフェースを使用することができる。スーパ入出力（ＳＩＯ：super I/O）装置２３６は、サウス・ブリッジおよびＩ／Ｏコントローラ・ハブ２０４に接続することができる。
【００１７】
オペレーティング・システムは、処理装置２０６上で実行され、図２のデータ処理システム２００内の様々なコンポーネントを調整し、それを制御する。クライアントとしてのオペレーティング・システムは、Ｍｉｃｒｏｓｏｆｔ（商標）Ｗｉｎｄｏｗｓ（商標）ＸＰ（ＭｉｃｒｏｓｏｆｔおよびＷｉｎｄｏｗｓは、米国、その他の国、またはその両方におけるマイクロソフト社の商標である）などの市販のオペレーティング・システムにすることができる。Ｊａｖａ（商標）プログラミング・システムなどのオブジェクト指向プログラミング・システムは、オペレーティング・システムに併せて実行することができ、データ処理システム２００上で実行されるＪａｖａプログラムまたはアプリケーションからオペレーティング・システムへの呼び出しを提供する（Ｊａｖａは、米国、その他の国、またはその両方におけるサン・マイクロシステムズ社の商標である）。
【００１８】
サーバとしてのデータ処理システム２００は、たとえば、Ａｄｖａｎｃｅｄ  Ｉｎｔｅｒａｃｔｉｖｅ  Ｅｘｅｃｕｔｉｖｅ（ＡＩＸ（商標））オペレーティング・システムまたはＬＩＮＵＸオペレーティング・システムを実行する、ＩＢＭ  ｅＳｅｒｖｅｒ（商標）ｐＳｅｒｉｅｓ（商標）コンピュータ・システムにすることができる（ｅＳｅｒｖｅｒ、ｐＳｅｒｉｅｓ、およびＡＩＸは、米国、その他の国、またはその両方におけるインターナショナル・ビジネス・マシーンズ社の商標であり、ＬＩＮＵＸは、米国、その他の国、またはその両方におけるＬｉｎｕｓ  Ｔｏｒｖａｌｄｓの商標である）。データ処理システム２００は、処理装置２０６内の複数のプロセッサを含む、対称マルチプロセッサ（ＳＭＰ：symmetric multiprocessor）システムにすることができる。代わって、シングル・プロセッサ・システムを使用することもできる。
【００１９】
オペレーティング・システム、オブジェクト指向プログラミング・システム、およびアプリケーションまたはプログラムに関する命令は、ハード・ディスク・ドライブ２２６などの記憶装置上に位置し、処理装置２０６によって実行するためにメイン・メモリ２０８にロードすることができる。本発明の諸実施形態用のプロセスは、たとえば、メイン・メモリ２０８、読み取り専用メモリ２２４などのメモリ内あるいは１つまたは複数の周辺装置２２６および２３０内に位置することができるコンピュータ使用可能プログラム・コードを使用して処理装置２０６によって実行される。
【００２０】
当業者であれば、図１〜図２のハードウェアが実装例に応じて様々になる可能性があることを認識するであろう。図１〜図２に描かれているハードウェアに加えてまたはその代わりに、フラッシュ・メモリ、同等の不揮発性メモリ、または光ディスク・ドライブなどのその他の内部ハードウェアまたは周辺装置を使用することもできる。また、本発明のプロセスは、マルチプロセッサ・データ処理システムに適用することもできる。
【００２１】
いくつかの例示的な例では、データ処理システム２００は、オペレーティング・システム・ファイルまたはユーザ生成データあるいはその両方を保管するための不揮発性メモリを提供するようにフラッシュ・メモリとともに構成された携帯情報端末（ＰＤＡ）にすることができる。
【００２２】
バス・システムは、図２に図示されているバス２３８またはバス２４０などの１つまたは複数のバスで構成することができる。当然のことながら、バス・システムは、任意のタイプの通信ファブリックまたはアーキテクチャに接続された種々のコンポーネントまたは装置間のデータの転送を可能にする通信ファブリックまたはアーキテクチャを使用して実装することができる。通信装置は、図２のネットワーク・アダプタ２１２など、データを送受信するために使用される１つまたは複数の装置を含むことができる。メモリは、たとえば、メイン・メモリ２０８、読み取り専用メモリ２２４、または図２のノース・ブリッジおよびメモリ・コントローラ・ハブ２０２内に検出されるようなキャッシュにすることができる。図１〜図２に描かれている例および上記の例は、アーキテクチャ上の制限を暗示するためのものではない。たとえば、データ処理システム２００は、ＰＤＡの形を取ることに加えて、タブレット・コンピュータ、ラップトップ・コンピュータ、または電話機にすることもできる。
【００２３】
図３を参照すると、本発明の好ましい一実施形態によるサーバ・クライアント・システム用の典型的なソフトウェア・アーキテクチャが、参照番号３００で全体が示され、描かれている。オペレーティング・システム３０２は、ユーザおよびその他のソフトウェアに高レベル機能を提供するために使用される。オペレーティング・システム３０２は、図１のサーバ１０４またはクライアント１１０内に実装することができ、本発明の諸実施形態用のプロセスを実装するコンピュータ使用可能コードまたは命令はそこに位置することができる。このようなオペレーティング・システムは典型的にはＢＩＯＳを含む。通信ソフトウェア３０４は、オペレーティング・システム機能を直接呼び出すかまたはオペレーティング・システムを間接的に迂回して、ネットワークによる通信のためのハードウェアにアクセスすることにより、物理的通信リンクを介して外部ポートからインターネットなどのネットワークへの通信を可能にする。
【００２４】
アプリケーション・プログラミング・インターフェース（ＡＰＩ：applicationprogramming interface）３０６により、システムのユーザ、一個人、またはソフトウェア・ルーチンは、特定の機能がどのように実装されるかを懸念せずに規格整合インターフェースを使用してシステム機能を呼び出すことができる。ネットワーク・アクセス・ソフトウェア３０８は、システムがネットワークにアクセスできるようにするために使用可能な任意のソフトウェアを表す。このアクセスは、ＬＡＮ、ＷＡＮ、またはインターネットなどのネットワークに対して行うことができる。インターネットの場合、このソフトウェアは、Ｗｅｂブラウザなどのプログラムを含むことができる。
【００２５】
アプリケーション・ソフトウェア３１０は、ユーザが探し求めている所望の機能を提供するために通信ポートを介してデータに対して反応するように設計された任意の数のソフトウェア・アプリケーションを表す。このレベルのアプリケーションは、インターネットのユーザがアクセスできる、データ、ビデオ、グラフィックス、写真、またはテキストを処理するために必要なものを含むことができる。ハイパーバイザ３１２は、プラットフォーム上で実行されるソフトウェアの層であって、オペレーティング・システムの複数インスタンスが同時に実行できるようにするものである。
【００２６】
ＴＰＭは、トラステッド・コンピューティング・グループによって定義されたセキュリティ指定である。ＴＰＭの実装例は、プラットフォームのマザーボードに物理的に接続され、明確なコマンドを使用してシステム上で実行されるソフトウェアによって制御されるチップとして入手可能である。ＴＰＭは、非対称鍵生成、暗号化解除、暗号化、署名、ＴＰＭ間の鍵のマイグレーション、ならびに乱数発生およびハッシュなどの暗号動作を提供する。また、ＴＰＭは、暗号鍵などの少量の情報のための安全な記憶域を提供する。
【００２７】
複数のオペレーティング・システムを同時に実行する機能を有するコンピュータ・システムは、単一オペレーティング・システム環境のために使用可能になった場合と同様に、トラステッド・コンピューティングのサポートを拡張することを望むであろう。このような場合、各仮想計算機は、それ専用のＴＰＭにアクセスできることが必要である。この出願のために、このようなＴＰＭは、仮想ＴＰＭと呼ばれるエンティティによって作成（spawn）される仮想ＴＰＭインスタントという。
【００２８】
各オペレーティング・システムには、それ専用の仮想ＴＰＭインスタンスが提供される。本発明の模範的な一実施形態では、ＴＰＭが理解する標準コマンド・セットは、たとえば、不揮発性ＲＡＭ（ＮＶＲＡＭ）領域などの仮想ＴＰＭインスタンスの完全な状態および内部で保持された鍵のファイルへのダウンロードと、他のマルチインスタンス対応仮想ＴＰＭ内の仮想ＴＰＭ状態の再作成、ならびにそこでの動作の再開を可能にするように拡張される。
【００２９】
この特定の拡張により、仮想計算機の内部で実行されるオペレーティング・システムとともに、ある物理プラットフォームから他の物理プラットフォームへの仮想ＴＰＭインスタンスのマイグレーションが可能になる。仮想ＴＰＭインスタンスからのすべてのダウンロードされた状態は対称鍵によって暗号化される。対称鍵もダウンロードされるが、それ自体はマイグレーション可能な記憶鍵（storage key）によって暗号化されることになる。他のシステム上で仮想ＴＰＭインスタンスの状態を再作成するために、暗号化形式で確実に保持される対称鍵を使用できるようにするために、マイグレーション可能な記憶鍵をまずそこで使用可能なものにすることが好ましい。システム間の仮想ＴＰＭインスタンス・マイグレーションが可能であるかどうかは複数のレベルで相互運用が可能であることが必要である。第一に、仮想ＴＰＭの実装例では、仮想ＴＰＭインスタンスのマイグレーションを可能にするものと同じ拡張コマンド・セットを実装しなければならない。第二に、ソース・プラットフォーム・アプリケーションがファイルに書き込む仮想ＴＰＭインスタンス状態は、ターゲット・システム上のツールまたはアプリケーションによって読み取り可能なものでなければならない。
【００３０】
本発明の模範的な一実施形態の場合、仮想ＴＰＭインスタンスの階層がすでに形成されており、親仮想ＴＰＭインスタンスがその子インスタンスのライフサイクルを制御しているものと想定される。親仮想ＴＰＭインスタンスは、たとえば、新しい仮想ＴＰＭ子インスタンスを作成するとともに、その状態情報を検索するかまたはそれを削除することができる。
【００３１】
本発明の模範的な一実施形態では、仮想ＴＰＭインスタンスはソース・プラットフォームからダウンロードされ、その状態情報はすべて、公開および対称鍵暗号方式のハイブリッドを使用して、ソース・プラットフォーム上の親仮想ＴＰＭインスタンスによって暗号化される。暗号化された状態は、ターゲット物理プラットフォームに転送され、暗号化解除され、仮想ＴＰＭインスタンスの状態が再構築される。
【００３２】
他の模範的な実施形態では、マイグレーションされた仮想ＴＰＭインスタンスの独自性は、トラステッド・プラットフォーム・モジュールが１つのシングル・ターゲット・プラットフォーム上でのみ再作成できることを保証することにより、保存される。他の模範的な実施形態では、保全性データにより、マイグレーションされた仮想ＴＰＭインスタンスの完全かつ未修正の状態のみが再作成できることが保証される。本発明の他の模範的な実施形態では、マイグレーションすべき仮想ＴＰＭインスタンスの状態はソース・プラットフォーム上で破棄される。
【００３３】
本発明の他の模範的な実施形態では、クライアント・システムのサポートが提供される。クライアントは、仮想ＴＰＭインスタンスをマイグレーションするよう要求できるであろう。模範的な一実施形態では、マイグレーション・アプリケーションを含む応答パッケージがクライアントに送信される。マイグレーション・アプリケーションは、ソース・プラットフォームと宛先プラットフォームの両方にインストールする必要がある。マイグレーション・アプリケーションは、仮想ＴＰＭインスタンスの状態のシリアル化を引き起こすためのコマンドを親仮想トラステッド・プラットフォーム・モジュールに送信し、仮想ＴＰＭインスタンスの状態のダウンロードを可能にする拡張コマンド・セットをユーザが使用できるようにするプログラムである。他の模範的な実施形態では、マイグレーション・アプリケーションは、仮想ＴＰＭインスタンスの状態を自動的にダウンロードし、そこでその状態を再作成するために宛先プラットフォームにその状態を転送するためのコンピュータ使用可能プログラム・コードを含むことができる。他の模範的な実施形態では、マイグレーション・アプリケーションは、仮想ＴＰＭインスタンスの状態を１つのステップでダウンロードできるかどうかまたは複数のステップが必要であるかどうかを判断するために、バッファ・サイズを含むクライアント・システムに関する情報を収集するためのコンピュータ使用可能プログラム・コードも含むことができる。
【００３４】
図４は、本発明の模範的な一実施形態により、物理的に分離された宛先プラットフォームに仮想ＴＰＭインスタンスをマイグレーションする一例を描くブロック図である。図４は、コンピュータＡ  ４０２とコンピュータＢ  ４０４という２つの物理的に分離されたコンピュータを有し、参照番号４００で全体が示されたシステムを描いている。コンピュータＡ  ４０２は、ハイパーバイザ４０６と、オペレーティング・システム４１０、４１２、および４１４と、仮想ＴＰＭ４２０とを含む。仮想ＴＰＭ４２０は、仮想ＴＰＭインスタンスｖＴＰＭ４３０、４３２、および４３４に対するホストである。各仮想ＴＰＭインスタンスは、唯一のオペレーティング・システムに関連付けられる。システム４００は、オペレーティング・システム４１０およびｖＴＰＭ４３２がコンピュータＡ  ４０２からコンピュータＢ  ４０４にマイグレーションされることを示している。矢印が示す通り、オペレーティング・システム４１０およびｖＴＰＭ４３２の状態情報が凍結され保管される。オペレーティング・システム４１０およびｖＴＰＭ４３２は、ハイパーバイザ４０６を介してコンピュータＢ  ４０４のハイパーバイザ４０８にマイグレーションする。オペレーティング・システム４１０およびｖＴＰＭ４３２の状態情報は、図示の通り、復元される。仮想ＴＰＭインスタンスｖＴＰＭ４３２は、コンピュータＢ  ４０４の仮想ＴＰＭ４２２上に復元される。
【００３５】
図５は、本発明の模範的な一実施形態により、ソース・プラットフォームから宛先プラットフォームに仮想ＴＰＭインスタンスをマイグレーションする高レベル手順を記述する情報フローの図である。仮想ＴＰＭインスタンス・マイグレーションの基礎は、ソース・プラットフォーム上の仮想ＴＰＭインスタンスと宛先プラットフォーム上の仮想ＴＰＭインスタンスとの間の非対称鍵ペアのマイグレーションである。この例では、ソース・プラットフォーム上のマイグレーションすべき仮想ＴＰＭインスタンスの親仮想ＴＰＭインスタンスは、宛先プラットフォーム上のマイグレーションすべき仮想ＴＰＭインスタンスの親になる仮想ＴＰＭインスタンスに非対称鍵をマイグレーションする（ステップ５０２）。非対称鍵マイグレーションは、ＴＰＭの指定の標準的特徴であり、したがって、この標準によって実装される仮想ＴＰＭインスタンスの機能の一部である。非対称鍵マイグレーションは、同じ鍵ペアを両方の親仮想ＴＰＭインスタンスにとって使用可能なものにする。
【００３６】
仮想ＴＰＭマイグレーションは、さらに、ソース・プラットフォーム上の親仮想ＴＰＭインスタンスから宛先プラットフォーム上の親仮想ＴＰＭインスタンスへの対称鍵のマイグレーションに基づいて行われる。ソース・プラットフォーム上のマイグレーション・アプリケーションは、ソース・プラットフォーム上の親仮想ＴＰＭインスタンスから対称鍵を要求する（ステップ５０４）。受信された要求に応答して、ソース・プラットフォーム上の親仮想ＴＰＭインスタンスは、マイグレーションされた非対称鍵の公開鍵部分によって生成され内部で保持された対称鍵を暗号化し、ソース・プラットフォーム上のマイグレーション・アプリケーションに暗号化された対称鍵を返す（ステップ５０６）。暗号化された対称鍵は、ソース・プラットフォーム上のマイグレーション・アプリケーションから宛先プラットフォーム上のマイグレーション・アプリケーションに転送される（ステップ５０８）。宛先プラットフォーム上のマイグレーション・アプリケーションは、宛先プラットフォーム上の親仮想ＴＰＭインスタンスに暗号化された対称鍵を提示する（ステップ５１０）。暗号化された対称鍵は、マイグレーションされた非対称鍵の秘密鍵によって暗号化解除され、マイグレーションされた状態情報を受信する仮想ＴＰＭインスタンス内部に保持される（ステップ５１２）。暗号化解除の成否を示す結果コードは、宛先プラットフォーム上の親仮想ＴＰＭインスタンスによって宛先プラットフォーム上のマイグレーション・アプリケーションに返される（ステップ５１４）。
【００３７】
さらに、ソース・プラットフォーム上のマイグレーションすべき仮想ＴＰＭインスタンスの状態は、対称鍵を使用して親仮想ＴＰＭインスタンスによって暗号化される（ステップ５１６）。次に、マイグレーションすべき仮想ＴＰＭインスタンスの暗号化された状態情報は、宛先プラットフォームに転送され（ステップ５１８）、マイグレーションされた対称鍵を使用して親仮想ＴＰＭインスタンス内部で暗号化解除される（ステップ５２０）。
【００３８】
図６は、本発明の模範的な一実施形態により、仮想ＴＰＭインスタンスをマイグレーションするための情報フローの図である。このフローは、仮想ＴＰＭインスタンス状態のマイグレーション先になるインスタンスを作成するためのコマンドを宛先プラットフォーム上のマイグレーション・アプリケーションが宛先プラットフォーム上の親仮想ＴＰＭインスタンスに送信することから始まる（ステップ６０２）。宛先プラットフォーム上の親仮想ＴＰＭインスタンスは、固有のマイグレーションＩＤを宛先プラットフォーム上のマイグレーション・アプリケーションに返す（ステップ６０４）。宛先プラットフォーム上のマイグレーション・アプリケーションは、ソース・プラットフォーム上のマイグレーション・アプリケーションに固有のＩＤを転送する（ステップ６０６）。次に、ソース・プラットフォーム上のマイグレーション・アプリケーションはソース・プラットフォーム上の親仮想ＴＰＭインスタンスと通信して、まず仮想ＴＰＭインスタンスをロックし（ステップ６０８）、次にインスタンス鍵（instance key）を取得する（ステップ６１０）。仮想ＴＰＭインスタンスの「ロック（locking）」とは、仮想ＴＰＭインスタンスの状態が凍結され、仮想ＴＰＭインスタンスがもはや通常のＴＰＭコマンドを受け入れなくなることを意味する。ロックされた仮想ＴＰＭインスタンスは、仮想ＴＰＭインスタンスのマイグレーションに関するコマンドのみを受け入れることになる。次に、仮想ＴＰＭインスタンスの状態は、ソース・プラットフォーム上の親仮想ＴＰＭインスタンスを介してソース・プラットフォーム上のマイグレーション・アプリケーションにダウンロードされる（ステップ６１２）。状態情報は、ダウンロードされる間に、マイグレーションすべき仮想ＴＰＭインスタンスから削除される。ソース・プラットフォーム上のマイグレーション・アプリケーションは、状態情報の最終部分として、マイグレーション・ダイジェストを受信する。次に、ソース・プラットフォーム上のマイグレーション・アプリケーションは、ソース仮想ＴＰＭインスタンスを削除する（ステップ６１４）。ソース・プラットフォーム上のマイグレーション・アプリケーションは、仮想ＴＰＭインスタンスの状態を宛先プラットフォーム上のマイグレーション・アプリケーションに転送する（ステップ６１６）。宛先プラットフォーム上のマイグレーション・アプリケーションは、親仮想ＴＰＭインスタンスと通信し、ＴＰＭインスタンス鍵を設定する（ステップ６１８）。次に、仮想ＴＰＭインスタンスの状態を使用して、宛先プラットフォーム上の親仮想ＴＰＭインスタンスを介して仮想ＴＰＭインスタンスを再作成する（ステップ６２０）。宛先プラットフォーム上のマイグレーション・アプリケーションは、宛先プラットフォーム上の親仮想ＴＰＭインスタンスと通信し、マイグレーション・ダイジェストも転送しながらそのインスタンスをアンロックする（ステップ６２２）。
【００３９】
図７は、本発明の模範的な一実施形態により、複数のステップで仮想ＴＰＭインスタンスの状態情報をエクスポートするための情報フローの図である。データ処理システムは、そのバッファ・サイズに限界がある場合が多い。インスタンスによっては、バッファ・サイズに関するこの制限により、単一のステップで仮想ＴＰＭインスタンスの状態をダウンロードすることが妨げられる可能性がある。このような場合、仮想ＴＰＭインスタンスの状態は複数のステップでマイグレーションする必要がある。参照番号７００で全体が示された情報フローは、図５のステップ５１８を複数のステップで実行する例示的な一例である。通信はソース・プラットフォーム上のマイグレーション・アプリケーションとマイグレーションすべき仮想ＴＰＭインスタンスの親仮想ＴＰＭインスタンスとの間で行われるが、返される状態はマイグレーションすべき仮想ＴＰＭインスタンスの状態である。情報フロー７００は、使用可能なＮＶＲＡＭ領域の数を決定することから始まる。どのＮＶＲＡＭ領域が使用可能であるかを判断するために、ソース・プラットフォーム上のマイグレーション・アプリケーションは、ソース・プラットフォーム上の親仮想ＴＰＭインスタンスにＧｅｔＣａｐａｂｉｌｉｔｙ（ＮＶＲＡＭ領域）というコマンドを送信し、ソース・プラットフォーム上の親仮想ＴＰＭインスタンスは、マイグレーションすべき仮想ＴＰＭインスタンス上で使用可能なＮＶＲＡＭ領域インデックスの配列でソース・プラットフォーム上のマイグレーション・アプリケーションに応答する（ステップ７０２）。次に、すべてのＮＶＲＡＭ領域をダウンロードするために、ソース・プラットフォーム上のマイグレーション・アプリケーションは、ＧｅｔＩｎｓｔａｎｃｅＤａｔａ（ＮＶＲＡＭ領域“Ｎ”）というコマンドを送信し、ソース・プラットフォーム上の親仮想ＴＰＭインスタンスは、マイグレーションすべき仮想ＴＰＭインスタンスのシリアル化されたＮＶＲＡＭ領域“Ｎ”でソース・プラットフォーム上のマイグレーション・アプリケーションに応答する（ステップ７０４）。それぞれの応答がソース・プラットフォーム上のマイグレーション・アプリケーションによって受信されると、領域“Ｎ”というその特定の部分のデータが削除される。どの所有者追い立て鍵（owner-evict key）が使用可能であるかを判断するために、ソース・プラットフォーム上のマイグレーション・アプリケーションは、ＧｅｔＣａｐａｂｉｌｉｔｙ（所有者追い立て鍵のリスト）というコマンドを送信し、ソース・プラットフォーム上の親仮想ＴＰＭインスタンスは、マイグレーションすべき仮想ＴＰＭインスタンスの使用可能な所有者追い立て鍵のリストでソース・プラットフォーム上のマイグレーション・アプリケーションに応答する（ステップ７０６）。所有者追い立て鍵とは、ＴＰＭのリブート後も存続する鍵である。次に、ソース・プラットフォーム上のマイグレーション・アプリケーションは、ＧｅｔＩｎｓｔａｎｃｅＤａｔａ（所有者追い立て鍵Ｋ）というコマンドを送信することにより、すべての所有者追い立て鍵をダウンロードし、ソース・プラットフォーム上の親仮想ＴＰＭインスタンスは、マイグレーションすべき仮想ＴＰＭインスタンスのシリアル化された所有者追い立て鍵でソース・プラットフォーム上のマイグレーション・アプリケーションに応答する（ステップ７０８）。次に、ソース・プラットフォーム上のマイグレーション・アプリケーションは、マイグレーションすべき仮想ＴＰＭインスタンスのすべての他のＴＰＭ状態情報をダウンロードする。
【００４０】
図８は、本発明の模範的な一実施形態により、単一のステップで仮想ＴＰＭインスタンスの状態情報をエクスポートするための情報フローの図である。図８は、図５のステップ５１８を単一のステップで実行する例示的な一例である。ソース・プラットフォームは、ソース・プラットフォーム上のマイグレーション・アプリケーションがソース・プラットフォーム上の親仮想ＴＰＭインスタンスにＧｅｔＩｎｓｔａｎｃｅＤａｔａ（すべて）というコマンドを送信することにより、マイグレーションすべき仮想ＴＰＭインスタンスのすべての状態情報を１つのステップでダウンロードし、ソース・プラットフォーム上の親仮想ＴＰＭインスタンスが応答する。
【００４１】
図９は、本発明の模範的な一実施形態により、ＴＰＭコマンド、特に仮想ＴＰＭ管理に関連するものを処理する動作を例示する流れ図である。動作は、ＴＰＭがコマンドを受信するのを待つことから始まる（ステップ９０２）。コマンドが受信されると、そのコマンドが「ＴＰＭインスタンス作成（create TPM instance）」コマンドであるかどうかをＴＰＭが判断する（ステップ９０４）。そのコマンドがＴＰＭインスタンス作成コマンドである場合（ステップ９０４に対するＹＥＳの出力）、図１０により詳細に説明する通り、仮想ＴＰＭインスタンスを作成する。そのコマンドがＴＰＭインスタンス作成コマンドではない場合（ステップ９０４に対するＮＯの出力）、そのコマンドが「ＴＰＭインスタンス・ロック（lock TPM instance）」コマンドであるかどうかをＴＰＭが判断する（ステップ９０６）。
【００４２】
そのコマンドがＴＰＭインスタンス・ロック・コマンドである場合（ステップ９０６に対するＹＥＳの出力）、図１１により詳細に説明する通り、仮想ＴＰＭインスタンスをロックする。そのコマンドがＴＰＭインスタンス・ロック・コマンドではない場合（ステップ９０６に対するＮＯの出力）、そのコマンドが「ＴＰＭインスタンス鍵取得（get TPM instance key）」コマンドであるかどうかをＴＰＭが判断する（ステップ９０８）。
【００４３】
そのコマンドがＴＰＭインスタンス鍵取得コマンドである場合（ステップ９０８に対するＹＥＳの出力）、図１２により詳細に説明する通り、仮想ＴＰＭインスタンス鍵を取得する。そのコマンドがＴＰＭインスタンス鍵取得コマンドではない場合（ステップ９０８に対するＮＯの出力）、そのコマンドが「ＴＰＭインスタンス・データ取得（get TPM instance data）」コマンドであるかどうかをＴＰＭが判断する（ステップ９１０）。
【００４４】
そのコマンドがＴＰＭインスタンス・データ取得コマンドである場合（ステップ９１０に対するＹＥＳの出力）、図１３により詳細に説明する通り、仮想ＴＰＭインスタンス・データを取得する。そのコマンドがＴＰＭインスタンス・データ取得コマンドではない場合（ステップ９１０に対するＮＯの出力）、そのコマンドが「ＴＰＭインスタンス削除（delete TPM instance）」コマンドであるかどうかをＴＰＭが判断する（ステップ９１２）。
【００４５】
そのコマンドがＴＰＭインスタンス削除コマンドである場合（ステップ９１２に対するＹＥＳの出力）、図１４により詳細に説明する通り、仮想ＴＰＭインスタンス・データを削除する。そのコマンドがＴＰＭインスタンス削除コマンドではない場合（ステップ９１２に対するＮＯの出力）、そのコマンドが「ＴＰＭインスタンス鍵設定（set TPM instance key）」コマンドであるかどうかをＴＰＭが判断する（ステップ９１４）。
【００４６】
そのコマンドがＴＰＭインスタンス鍵設定コマンドである場合（ステップ９１４に対するＹＥＳの出力）、図１５により詳細に説明する通り、仮想ＴＰＭインスタンス鍵を設定する。そのコマンドがＴＰＭインスタンス鍵設定コマンドではない場合（ステップ９１４に対するＮＯの出力）、そのコマンドが「ＴＰＭインスタンス・データ設定（set TPM instance data）」コマンドであるかどうかをＴＰＭが判断する（ステップ９１６）。
【００４７】
そのコマンドがＴＰＭインスタンス・データ設定コマンドである場合（ステップ９１６に対するＹＥＳの出力）、図１６により詳細に説明する通り、仮想ＴＰＭインスタンス・データを設定する。そのコマンドがＴＰＭインスタンス・データ設定コマンドではない場合（ステップ９１６に対するＮＯの出力）、そのコマンドが「ＴＰＭインスタンス・アンロック（unlock TPM instance）」コマンドであるかどうかをＴＰＭが判断する（ステップ９１８）。
【００４８】
そのコマンドがＴＰＭインスタンス・アンロック・コマンドである場合（ステップ９１８に対するＹＥＳの出力）、図１７により詳細に説明する通り、仮想ＴＰＭインスタンスをアンロックする。そのコマンドがＴＰＭインスタンス・アンロック・コマンドではない場合（ステップ９１８に対するＮＯの出力）、ＴＰＭは、コマンドの妥当性を検証し、それを通常のＴＰＭコマンドとして処理し（ステップ９２０）、最終的にステップ９０２に戻る。
【００４９】
図１０は、本発明の模範的な一実施形態により、ＴＰＭインスタンス作成コマンドを処理する動作を例示する流れ図である。この例では、宛先プラットフォームで空の仮想ＴＰＭインスタンスが作成される。動作は、インスタンスＰの子としてインスタンスを作成するためのコマンドを受信することから始まり、インスタンスＰは親インスタンスである（ステップ１００２）。次に、動作は、このコマンドに関する所有者許可が有効であるかどうかを検証する（ステップ１００４）。このコマンドに関する所有者許可が有効ではない場合（ステップ１００４に対するＮＯの出力）、適切なエラー・コードが結果値として送信され（ステップ１０１６）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。このコマンドに関する所有者許可が有効である場合（ステップ１００４に対するＹＥＳの出力）、動作は、インスタンスＰが処理仮想ＴＰＭインスタンスの子孫であるかどうかを判断する（ステップ１００６）。
【００５０】
インスタンスＰが処理仮想ＴＰＭインスタンスの子孫ではない場合（ステップ１００６に対するＮＯの出力）、適切なエラー・コードが結果値として送信され（ステップ１０１６）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。インスタンスＰが処理仮想ＴＰＭインスタンスの子孫である場合（ステップ１００６に対するＹＥＳの出力）、動作は、インスタンスＰが特権インスタンスであるかどうかを判断する（ステップ１００８）。特権インスタンスとは、他の子インスタンスを作成する許可を得ているインスタンスである。
【００５１】
インスタンスＰが特権インスタンスではない場合（ステップ１００８に対するＮＯの出力）、適切なエラー・コードが結果値として送信され（ステップ１０１６）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。インスタンスＰが特権インスタンスである場合（ステップ１００８に対するＹＥＳの出力）、動作は、インスタンスＰの子として仮想ＴＰＭインスタンスを作成する（ステップ１０１０）。その仮想ＴＰＭには、固有のインスタンス・ハンドルＨと固有のマイグレーションＩＤが割り当てられる（ステップ１０１０）。インスタンスＨのために宛先ロックが係合（engage）される（ステップ１０１２）。ロックが係合されているので、インスタンスＨは、仮想ＴＰＭインスタンスのマイグレーションに関連するコマンドのみを受け入れることになり、その結果、他の仮想ＴＰＭインスタンスがマイグレーションされるまで、またはそれがアンロックされるまで、空のままになる。固有のインスタンス・ハンドルＨとマイグレーションＩＤは呼び出し側に返され（ステップ１０１４）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。
【００５２】
図１１は、本発明の模範的な一実施形態により、ＴＰＭインスタンス・ロック・コマンドを処理する動作を例示する流れ図である。動作は、固有のマイグレーションＩＤに関連する仮想ＴＰＭインスタンスであるインスタンスＨをロックするためのコマンドを受信することから始まる（ステップ１１０２）。次に、動作は、このコマンドに関する所有者許可が有効であるかどうかを検証する（ステップ１１０４）。このコマンドに関する所有者許可が有効ではない場合（ステップ１１０４に対するＮＯの出力）、適切なエラー・コードが結果値として送信され（ステップ１１２０）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。このコマンドに関する所有者許可が有効である場合（ステップ１１０４に対するＹＥＳの出力）、動作は、インスタンスＨが処理仮想ＴＰＭインスタンスの子孫であるかどうかを判断する（ステップ１１０６）。インスタンスＨが処理仮想ＴＰＭインスタンスの子孫ではない場合（ステップ１１０６に対するＮＯの出力）、適切なエラー・コードが結果値として送信され（ステップ１１２０）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。
【００５３】
インスタンスＨが処理仮想ＴＰＭインスタンスの子孫である場合（ステップ１１０６に対するＹＥＳの出力）、動作は、宛先ロックが係合されるかどうかを判断する（ステップ１１１０）。宛先ロックが係合される場合（ステップ１１１０に対するＹＥＳの出力）、適切なエラー・コードが結果値として送信され（ステップ１１２０）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。宛先ロックが係合されない場合（ステップ１１１０に対するＮＯの出力）、動作はインスタンスＰのためにソース・ロックを係合し、それによりインスタンスＰがＴＰＭのマイグレーションに関連するコマンドを除く任意のＴＰＭコマンドを受け入れるのを防止する（ステップ１１１２）。動作は、インスタンスＨに関する固有のマイグレーションＩＤにマイグレーション・セッションを初期設定する（ステップ１１１４）。次に動作はマイグレーション・ダイジェストを初期設定する（ステップ１１１６）。マイグレーション・ダイジェストは、仮想ＴＰＭインスタンスのエクスポートされた状態の変化を検出するために使用される保全性データの一例である。動作の成否を示す結果コードが返され（ステップ１１１８）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。
【００５４】
図１２は、本発明の模範的な一実施形態により、ＴＰＭインスタンス鍵取得コマンドを処理する動作を例示する流れ図である。動作は、暗号化のために記憶鍵Ｓを使用して、仮想ＴＰＭインスタンスであるインスタンスＨに関するインスタンス鍵を取得するためのコマンドを受信することから始まる（ステップ１２０２）。次に、動作は、このコマンドに関する所有者許可が有効であるかどうかを検証する（ステップ１２０４）。このコマンドに関する所有者許可が有効ではない場合（ステップ１２０４に対するＮＯの出力）、適切なエラー・コードが結果値として送信され（ステップ１２２０）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。このコマンドに関する所有者許可が有効である場合（ステップ１２０４に対するＹＥＳの出力）、動作は、インスタンスＨが処理仮想ＴＰＭインスタンスの子孫であるかどうかを判断する（ステップ１２０６）。インスタンスＨが処理仮想ＴＰＭインスタンスの子孫ではない場合（ステップ１２０６に対するＮＯの出力）、適切なエラー・コードが結果値として送信され（ステップ１２２０）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。
【００５５】
インスタンスＨが処理仮想ＴＰＭインスタンスの子孫である場合（ステップ１２０６に対するＹＥＳの出力）、動作は、記憶鍵Ｓの許可が有効であるかどうかを判断する（ステップ１２０８）。記憶鍵Ｓの許可が有効ではない場合（ステップ１２０８に対するＮＯの出力）、適切なエラー・コードが結果値として送信され（ステップ１２２０）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。記憶鍵Ｓの許可が有効である場合（ステップ１２０８に対するＹＥＳの出力）、インスタンスＨ上で、動作はランダム対称鍵（random symmetric key）を作成し、ランダム対称鍵を有する対称鍵構造体を形成する（ステップ１２１０）。次に、インスタンスＨ上で、動作はインスタンスＨ用のＨＭＡＣ鍵として使用すべき乱数を作成する（ステップ１２１２）。動作はインスタンスＨ上でランダム対称鍵を保管する（ステップ１２１４）。次に動作は、インスタンスＨ上でＨＭＡＣ鍵を保管する（ステップ１２１６）。インスタンスＨ上で、動作は、対称鍵構造体とＨＭＡＣ鍵を連結し、鍵Ｓにより連結項目（concatenated item）を暗号化する（ステップ１２１８）。動作は暗号化項目（encrypteditem）を呼び出し側に返し（ステップ１２２２）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。
【００５６】
図１３は、本発明の模範的な一実施形態により、ＴＰＭインスタンス・データ取得コマンドを処理する動作を例示する流れ図である。動作は、仮想ＴＰＭインスタンスであるインスタンスＨからインスタンス・データを取得するためのコマンドを受信することから始まる（ステップ１３０２）。次に、動作は、このコマンドに関する所有者許可が有効であるかどうかを検証する（ステップ１３０４）。このコマンドに関する所有者許可が有効ではない場合（ステップ１３０４に対するＮＯの出力）、適切なエラー・コードが結果値として送信され（ステップ１３２６）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。このコマンドに関する所有者許可が有効である場合（ステップ１３０４に対するＹＥＳの出力）、動作は、インスタンスＨが処理仮想ＴＰＭインスタンスの子孫であるかどうかを判断する（ステップ１３０６）。インスタンスＨが処理仮想ＴＰＭインスタンスの子孫ではない場合（ステップ１３０６に対するＮＯの出力）、適切なエラー・コードが結果値として送信され（ステップ１３２６）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。
【００５７】
インスタンスＨが処理仮想ＴＰＭインスタンスの子孫である場合（ステップ１３０６に対するＹＥＳの出力）、動作は、インスタンス鍵が設定されているかどうかを判断する（ステップ１３０８）。インスタンス鍵が設定されていない場合（ステップ１３０８に対するＮＯの出力）、適切なエラー・コードが結果値として送信され（ステップ１３２６）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。インスタンス鍵が設定されている場合（ステップ１３０８に対するＹＥＳの出力）、動作は、ソース・ロックが係合されているかどうかを判断する（ステップ１３１０）。ソース・ロックが係合されていない場合（ステップ１３１０に対するＮＯの出力）、適切なエラー・コードが結果値として送信され（ステップ１３２６）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。ソース・ロックが係合されている場合（ステップ１３１０に対するＹＥＳの出力）、動作は、インスタンスＨの要求された部分のデータをシリアル化する（ステップ１３１２）。動作は、その鍵としてインスタンスＨＭＡＣ鍵を使用して、シリアル化されたデータに関するＨＭＡＣを計算する（ステップ１３１４）。動作は、シリアル化されたデータのハッシュによりその現行値を拡張することにより、マイグレーション・ダイジェストを更新する（ステップ１３１６）。動作は、シリアル化されたデータにＨＭＡＣを付加する（ステップ１３１８）。動作は、インスタンス鍵を使用して、ＨＭＡＣを含むシリアル化されたデータを暗号化する（ステップ１３２０）。このデータがダウンロードされた情報の最後のブロックであると判断された場合、動作はマイグレーション・ダイジェストを返す（ステップ１３２２）。動作は暗号化されたデータを呼び出し側に返し（ステップ１３２４）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。
【００５８】
図１４は、本発明の模範的な一実施形態により、ＴＰＭインスタンス削除コマンドを処理する動作を例示する流れ図である。動作は、固有のハンドルＨを有する仮想ＴＰＭインスタンスであるインスタンスＨを削除するためのコマンドを受信することから始まる（ステップ１４０２）。次に、動作は、このコマンドに関する所有者許可が有効であるかどうかを検証する（ステップ１４０４）。このコマンドに関する所有者許可が有効ではない場合（ステップ１４０４に対するＮＯの出力）、適切なエラー・コードが結果値として送信され（ステップ１４１４）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。このコマンドに関する所有者許可が有効である場合（ステップ１４０４に対するＹＥＳの出力）、動作は、インスタンスＨが処理仮想ＴＰＭインスタンスの子孫であるかどうかを判断する（ステップ１４０６）。インスタンスＨが処理仮想ＴＰＭインスタンスの子孫ではない場合（ステップ１４０６に対するＮＯの出力）、適切なエラー・コードが結果値として送信され（ステップ１４１４）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。
【００５９】
インスタンスＨが処理仮想ＴＰＭインスタンスの子孫である場合（ステップ１４０６に対するＹＥＳの出力）、動作は、インスタンスＨに子孫があるかどうかを判断する（ステップ１４０８）。インスタンスＨに子孫がある場合（ステップ１４０８に対するＹＥＳの出力）、適切なエラー・コードが結果値として送信され（ステップ１４１４）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。インスタンスＨに子孫がない場合（ステップ１４０８に対するＮＯの出力）、動作はインスタンスＨに関連するすべてのデータを削除する（ステップ１４１０）。動作は、インスタンスＨの直系の親からインスタンスＨに対するすべての参照を削除し（ステップ１４１２）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。
【００６０】
図１５は、本発明の模範的な一実施形態により、ＴＰＭインスタンス鍵設定コマンドを処理する動作を例示する流れ図である。動作は、暗号化のために記憶鍵Ｓを使用して、仮想ＴＰＭインスタンスであるインスタンスＨに関するインスタンス鍵を設定するためのコマンドを受信することから始まる（ステップ１５０２）。次に、動作は、このコマンドに関する所有者許可が有効であるかどうかを検証する（ステップ１５０４）。このコマンドに関する所有者許可が有効ではない場合（ステップ１５０４に対するＮＯの出力）、適切なエラー・コードが結果値として送信され（ステップ１５１８）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。このコマンドに関する所有者許可が有効である場合（ステップ１５０４に対するＹＥＳの出力）、動作は、インスタンスＨが処理仮想ＴＰＭインスタンスの子孫であるかどうかを判断する（ステップ１５０６）。インスタンスＨが処理仮想ＴＰＭインスタンスの子孫ではない場合（ステップ１５０６に対するＮＯの出力）、適切なエラー・コードが結果値として送信され（ステップ１５１８）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。
【００６１】
インスタンスＨが処理仮想ＴＰＭインスタンスの子孫である場合（ステップ１５０６に対するＹＥＳの出力）、動作は、記憶鍵Ｓの許可が有効であるかどうかを判断する（ステップ１５０８）。記憶鍵Ｓの許可が有効ではない場合（ステップ１５０８に対するＮＯの出力）、適切なエラー・コードが結果値として送信され（ステップ１５１８）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。記憶鍵Ｓの許可が有効である場合（ステップ１５０８に対するＹＥＳの出力）、動作は、記憶鍵Ｓの秘密鍵を使用して所与の暗号化項目を暗号化解除し、対称鍵構造体およびＨＭＡＣ鍵を抽出する（ステップ１５１０）。次に動作は、対称鍵構造体が有効であるかどうかを判断する（ステップ１５１２）。対称鍵構造体が有効ではない場合（ステップ１５１２に対するＮＯの出力）、適切なエラー・コードが結果値として送信され（ステップ１５１８）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。対称鍵構造体が有効である場合（ステップ１５１２に対するＹＥＳの出力）、動作は、インスタンスＨの状態の一部として対称鍵を保管する（ステップ１５１４）。次に動作はインスタンスＨの状態の一部としてＨＭＡＣ鍵を保管し（ステップ１５１６）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。
【００６２】
図１６は、本発明の模範的な一実施形態により、ＴＰＭインスタンス・データ設定コマンドを処理する動作を例示する流れ図である。動作は、仮想ＴＰＭインスタンスであるインスタンスＨに関するインスタンス・データを設定するためのコマンドを受信することから始まる（ステップ１６０２）。次に、動作は、このコマンドに関する所有者許可が有効であるかどうかを検証する（ステップ１６０４）。このコマンドに関する所有者許可が有効ではない場合（ステップ１６０４に対するＮＯの出力）、適切なエラー・コードが結果値として送信され（ステップ１６２２）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。このコマンドに関する所有者許可が有効である場合（ステップ１６０４に対するＹＥＳの出力）、動作は、インスタンスＨが処理仮想ＴＰＭインスタンスの子孫であるかどうかを判断する（ステップ１６０６）。インスタンスＨが処理仮想ＴＰＭインスタンスの子孫ではない場合（ステップ１６０６に対するＮＯの出力）、適切なエラー・コードが結果値として送信され（ステップ１６２２）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。
【００６３】
インスタンスＨが処理仮想ＴＰＭインスタンスの子孫である場合（ステップ１６０６に対するＹＥＳの出力）、動作は、インスタンス鍵が設定されているかどうかを判断する（ステップ１６０８）。インスタンス鍵が設定されていない場合（ステップ１６０８に対するＮＯの出力）、適切なエラー・コードが結果値として送信され（ステップ１６２２）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。インスタンス鍵が設定されている場合（ステップ１６０８に対するＹＥＳの出力）、動作は、宛先ロックが係合されているかどうかを判断する（ステップ１６１０）。宛先ロックが係合されていない場合（ステップ１６１０に対するＮＯの出力）、適切なエラー・コードが結果値として送信され（ステップ１６２２）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。宛先ロックが係合されている場合（ステップ１６１０に対するＹＥＳの出力）、動作は、インスタンス鍵を使用してデータを暗号化解除する（ステップ１６１２）。次に動作は、暗号化解除されたデータ内で検出されたＨＭＡＣが正しいかどうかを判断する（ステップ１６１４）。暗号化解除されたデータ内で検出されたＨＭＡＣが正しくない場合（ステップ１６１４に対するＮＯの出力）、適切なエラー・コードが結果値として送信され（ステップ１６２２）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。暗号化解除されたデータ内で検出されたＨＭＡＣが正しい場合（ステップ１６１４に対するＹＥＳの出力）、動作は、暗号化解除されたデータ内で検出された固有のマイグレーションＩＤが正しいかどうかを判断する（ステップ１６１６）。暗号化解除されたデータ内で検出された固有のマイグレーションＩＤが正しくない場合（ステップ１６１６に対するＮＯの出力）、適切なエラー・コードが結果値として送信され（ステップ１６２２）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。暗号化解除されたデータ内で検出された固有のマイグレーションＩＤが正しい場合（ステップ１６１６に対するＹＥＳの出力）、動作は、暗号化解除されたバイト・ストリームを非シリアル化することにより、インスタンスＨの状態を再作成する（ステップ１６１８）。動作は暗号化解除されたデータによりインスタンスＨのマイグレーション・ダイジェストを拡張し（ステップ１６２０）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。
【００６４】
図１７は、本発明の模範的な一実施形態により、ＴＰＭインスタンス・アンロック・コマンドを処理する動作を例示する流れ図である。動作は、マイグレーション・ダイジェストに関連する仮想ＴＰＭインスタンスであるインスタンスＨをアンロックするためのコマンドを受信することから始まる（ステップ１７０２）。次に、動作は、このコマンドに関する所有者許可が有効であるかどうかを検証する（ステップ１７０４）。このコマンドに関する所有者許可が有効ではない場合（ステップ１７０４に対するＮＯの出力）、適切なエラー・コードが結果値として送信され（ステップ１７１６）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。このコマンドに関する所有者許可が有効である場合（ステップ１７０４に対するＹＥＳの出力）、動作は、インスタンスＨが処理仮想ＴＰＭインスタンスの子孫であるかどうかを判断する（ステップ１７０６）。インスタンスＨが処理仮想ＴＰＭインスタンスの子孫ではない場合（ステップ１７０６に対するＮＯの出力）、適切なエラー・コードが結果値として送信され（ステップ１７１６）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。
【００６５】
インスタンスＨが処理仮想ＴＰＭインスタンスの子孫である場合（ステップ１７０６に対するＹＥＳの出力）、動作は、渡されたマイグレーション・ダイジェストと内部マイグレーション・ダイジェストが一致するかどうかを判断する（ステップ１７０８）。渡されたマイグレーション・ダイジェストと内部マイグレーション・ダイジェストが一致しない場合（ステップ１７０８に対するＮＯの出力）、適切なエラー・コードが結果値として送信され（ステップ１７１６）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。渡されたマイグレーション・ダイジェストと内部マイグレーション・ダイジェストが一致する場合（ステップ１７０８に対するＹＥＳの出力）、動作は、インスタンスＨの固有のマイグレーションＩＤを有するマイグレーション・セッションをクリアする（ステップ１７１０）。動作は、インスタンスＨの宛先ロックを解放する（ステップ１７１２）。動作はインスタンスＨのソース・ロックを解放し（ステップ１７１４）、動作は図９のステップ９０２に戻り、新しいコマンドが処理されるのを待つ。
【００６６】
したがって、本発明は、トラステッド・プラットフォーム・モジュール・インスタンスをマイグレーションするためのコンピュータによって実行される方法、データ処理システム、およびコンピュータ・プログラムを提供する。また、この方法は、マイグレーションされたトラステッド・プラットフォーム・モジュール・インスタンスの独自性および完全性も保証する。
【００６７】
本発明は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、またはハードウェアとソフトウェアの両方の要素を含む実施形態の形を取ることができる。好ましい一実施形態では、本発明は、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むがこれらに限定されないソフトウェアで実装される。
【００６８】
さらに、本発明は、コンピュータまたは任意の命令実行システムによりあるいはそれに関連して使用するためのプログラム・コードを提供するコンピュータ使用可能媒体またはコンピュータ可読媒体からアクセス可能なコンピュータ・プログラムの形を取ることができる。この説明のために、コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、装置、またはデバイスによりあるいはそれに関連して使用するためのプログラムを収容、保管、通信、伝搬、または伝送可能な任意の有形装置にすることができる。
【００６９】
この媒体は、電子、磁気、光、電磁、赤外線、または半導体システム（あるいは装置またはデバイス）もしくは伝搬媒体にすることができる。コンピュータ可読媒体の例としては、半導体またはソリッド・ステート・メモリ、磁気テープ、取り外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、剛性磁気ディスク、および光ディスクを含む。光ディスクの現在の例としては、コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、書き換え可能コンパクト・ディスク（ＣＤ−Ｒ／Ｗ）、およびデジタル多用途ディスク（ＤＶＤ）を含む。
【００７０】
プログラム・コードの保管または実行あるいはその両方に適したデータ処理システムは、システム・バスを介して記憶素子に直接または間接的に結合された少なくとも１つのプロセッサを含むことになる。記憶素子としては、プログラム・コードの実際の実行中に使用されるローカル・メモリと、大容量記憶装置と、好ましくは実行中に大容量記憶装置からコードを検索しなければならない回数を削減するために少なくとも何らかのプログラム・コードの一時記憶を提供するキャッシュ・メモリとを含むことができる。
【００７１】
入出力またはＩ／Ｏ装置（キーボード、ディスプレイ、ポインティング・デバイスなどを含むがこれらに限定されない）は、直接あるいは介在する入出力コントローラを介してシステムに結合することができる。
【００７２】
データ処理システムが介在する私設網または公衆網を介してその他のデータ処理システムあるいはリモート・プリンタまたは記憶装置に結合された状態になれるようにするために、ネットワーク・アダプタもシステムに結合することができる。モデム、ケーブル・モデム、およびイーサネット・カードは、現在使用可能なタイプのネットワーク・アダプタのうちのいくつかに過ぎない。
【００７３】
本発明の説明は、例示および解説のために提示されたものであり、網羅するためまたは開示された形式に本発明を限定するためのものではない。多くの変更および変形は当業者にとって明白である可能性がある。この実施形態は、本発明の原理、実用的な適用例を最も良く説明するため、ならびにその他の当業者が企図された特定の用途に適した様々な変更を含む様々な実施形態について本発明を理解できるようにするために、選択され記載されたものである。
【図面の簡単な説明】
【００７４】
【図１】本発明の模範的な諸態様を実装可能なデータ処理システムのネットワークの図表現である。
【図２】本発明の模範的な諸態様を実装可能なデータ処理システムのブロック図である。
【図３】本発明の好ましい一実施形態によるサーバまたはクライアント・システム用の典型的なソフトウェア・アーキテクチャを示すブロック図である。
【図４】本発明の模範的な一実施形態により、物理的に分離された宛先プラットフォームに仮想ＴＰＭインスタンスをマイグレーションする一例を描くブロック図である。
【図５】本発明の模範的な一実施形態により、ソース・プラットフォームから宛先プラットフォームに仮想ＴＰＭインスタンスをマイグレーションする高レベル手順を記述する情報フローの図である。
【図６】本発明の模範的な一実施形態により、仮想ＴＰＭインスタンスをマイグレーションするための情報フローの図である。
【図７】本発明の模範的な一実施形態により、複数のステップで仮想ＴＰＭインスタンスの状態情報をエクスポートするための情報フローの図である。
【図８】本発明の模範的な一実施形態により、単一のステップで仮想ＴＰＭインスタンスの状態情報をエクスポートするための情報フローの図である。
【図９】本発明の模範的な一実施形態により、ＴＰＭコマンドを処理する動作を例示する流れ図である。
【図１０】本発明の模範的な一実施形態により、仮想ＴＰＭインスタンスの作成のためのコマンドを処理する動作を例示する流れ図である。
【図１１】本発明の模範的な一実施形態により、仮想ＴＰＭインスタンスをロックするためのコマンドを処理する動作を例示する流れ図である。
【図１２】本発明の模範的な一実施形態により、仮想ＴＰＭインスタンス鍵を取得するためのコマンドを処理する動作を例示する流れ図である。
【図１３】本発明の模範的な一実施形態により、仮想ＴＰＭインスタンス・データを取得するためのコマンドを処理する動作を例示する流れ図である。
【図１４】本発明の模範的な一実施形態により、仮想ＴＰＭインスタンスを削除するためのコマンドを処理する動作を例示する流れ図である。
【図１５】本発明の模範的な一実施形態により、仮想ＴＰＭインスタンス鍵を設定するためのコマンドを処理する動作を例示する流れ図である。
【図１６】本発明の模範的な一実施形態により、仮想ＴＰＭインスタンス・データを設定するためのコマンドを処理する動作を例示する流れ図である。
【図１７】本発明の模範的な一実施形態により、仮想ＴＰＭインスタンスをアンロックするためのコマンドを処理する動作を例示する流れ図である。
【図１】
2009530743.tif 000003
【図２】
2009530743.tif 000004
【図３】
2009530743.tif 000005
【図４】
2009530743.tif 000006
【図５】
2009530743.tif 000007
【図６】
2009530743.tif 000008
【図７】
2009530743.tif 000009
【図８】
2009530743.tif 000010
【図９】
2009530743.tif 000011
【図１０】
2009530743.tif 000012
【図１１】
2009530743.tif 000013
【図１２】
2009530743.tif 000014
【図１３】
2009530743.tif 000015
【図１４】
2009530743.tif 000016
【図１５】
2009530743.tif 000017
【図１６】
2009530743.tif 000018
【図１７】
2009530743.tif 000019
【国際調査報告】
2009530743.tif 000020