(57)【要約】【課題】ネットワーク上のデバイスが、ネットワークを介した単一のラウンドトリップで交換を実行できるようにするための相互認証を使用した安全な鍵交換を提供すること。【解決手段】確立される鍵を含まない鍵交換イニシエータパケットが、ネットワークを介して開始デバイスから他のデバイスに送られる。鍵交換イニシエータパケットが妥当性検査され、他方のデバイスが鍵を生成するために開始デバイスからいかなる追加のパケットも受け取る必要なしに鍵を生成する。鍵を含まない鍵交換応答パケットが開始デバイスに戻され、これが鍵交換応答パケットを妥当性検査し、いかなる追加のパケットも他方のデバイスに送るかまたは他方のデバイスから受け取る必要なしに鍵を生成する。【選択図】　　　　図２
2004015813.tif 000002
【特許請求の範囲】
【請求項１】
１つまたは複数の処理装置によって実行されると、
ネットワークを介した単一のラウンドトリップで、デバイスとの相互認証およびパーフェクトフォワードシークレシの両方を達成するネットワーク上のデバイスとの鍵交換を前記１つまたは複数の処理装置に実行させる複数の命令を格納したことを特徴とする１つまたは複数のコンピュータ読取り可能媒体。
【請求項２】
前記相互認証は、ケルベロス認証プロトコルに基づいて達成されることを特徴とする請求項１に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項３】
前記パーフェクトフォワードシークレシは、前記ネットワークを介した前記単一のラウンドトリップに含まれるＤｉｆｆｉｅ−Ｈｅｌｌｍａｎ値に基づいて達成されることを特徴とする請求項１に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項４】
前記ネットワークを介した前記単一のラウンドトリップは鍵交換イニシエータメッセージを含み、前記命令は、前記１つまたは複数の処理装置によって実行されると、前記鍵交換イニシエータメッセージが不正変更されていないことを検証するために前記鍵交換イニシエータメッセージのダイジェストを前記１つまたは複数の処理装置に検証させることを特徴とする請求項１に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項５】
前記命令は、前記１つまたは複数の処理装置によって実行されると、さらに、鍵付きハッシュを使用して前記鍵交換イニシエータメッセージのダイジェストを前記１つまたは複数の処理装置に生成させることを特徴とする請求項４に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項６】
前記ネットワークを介した前記単一のラウンドトリップは鍵交換応答メッセージを含み、前記命令は前記１つまたは複数の処理装置によって実行されると、前記鍵交換応答メッセージが不正変更されていないことを検証するために前記鍵交換応答メッセージのダイジェストを前記１つまたは複数の処理装置に検証させることを特徴とする請求項１に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項７】
前記命令は、前記１つまたは複数の処理装置によって実行されると、さらに、鍵付きハッシュを使用して前記鍵交換応答メッセージのダイジェストを前記１つまたは複数の処理装置に生成させることを特徴とする請求項６に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項８】
前記ネットワークを介した前記単一のラウンドトリップは鍵交換イニシエータメッセージを含み、前記命令は前記１つまたは複数の処理装置によって実行されると、前記１つまたは複数の処理装置に、前記鍵交換イニシエータメッセージに含まれたタイムスタンプが現在時刻からの時間しきい値の範囲内であるかどうかを調べさせ、前記タイムスタンプが前記現在時刻からの前記時間しきい値の範囲内である場合にのみ、前記鍵交換イニシエータメッセージに応答させることを特徴とする請求項１に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項９】
前記ネットワークを介した前記単一のラウンドトリップは鍵交換イニシエータメッセージを含み、前記命令は、前記１つまたは複数の処理装置によって実行されると、前記１つまたは複数の処理装置に、前記鍵交換イニシエータメッセージに含まれたタイムスタンプが前記デバイスから受信した最後のタイムスタンプより新しいかどうかを調べさせ、前記タイムスタンプが前記デバイスから受信した前記最後のタイムスタンプより新しい場合にのみ、前記鍵交換イニシエータメッセージに応答させることを特徴とする請求項１に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項１０】
前記ネットワークはインターネットを含むことを特徴とする請求項１に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項１１】
前記１つまたは複数の処理装置はゲームコンソールで実施されることを特徴とする請求項１に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項１２】
前記複数の命令は、前記１つまたは複数の処理装置に、さらに
前記鍵を含まない鍵交換イニシエータパケットを前記デバイスに送信させ、
前記鍵を含まない鍵交換応答パケットを前記デバイスから受信させ、
前記鍵交換応答パケットの妥当性を検査させ、
少なくとも一部は前記鍵交換応答パケット中のデータに基づいて、前記鍵を生成するためにいかなる追加のパケットも前記デバイスに送信するかまたは前記デバイスから受信する必要なしに、前記鍵を生成させることを特徴とする請求項１に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項１３】
前記複数の命令は、前記１つまたは複数の処理装置に、さらに
前記鍵を含まない鍵交換イニシエータパケットを前記デバイスから受信させ、
前記鍵交換イニシエータパケットの妥当性を検査させ、
少なくとも一部は前記鍵交換イニシエータパケット中のデータに基づいて、前記鍵を生成するためにいかなる追加のパケットも前記デバイスから受信する必要なしに、前記鍵を生成させ、
前記鍵を含まない鍵交換応答パケットを前記デバイスに送信させることを特徴とする請求項１に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項１４】
デバイス内で実施される方法であって、
セキュリティ鍵を安全に交換し、前記デバイスを相互に認証し、ならびにパーフェクトフォワードシークレシを達成するために、ネットワークを介した単一のラウンドトリップにより他のデバイスと通信するステップを備えることを特徴とする方法。
【請求項１５】
前記方法はゲームコンソール内で実施されることを特徴とする請求項１４に記載の方法。
【請求項１６】
前記ネットワーク上の他のデバイスは、前記ネットワークを介した前記単一のラウンドトリップから前記鍵を推定することができないことを特徴とする請求項１４に記載の方法。
【請求項１７】
ゲームコンソール内で実施される、デバイスとの通信で使用するために相互鍵を確立する方法であって、前記方法は、
前記相互鍵を含まない鍵交換イニシエータパケットをネットワークを介して前記デバイスに送信するステップと、
前記相互鍵を含まない鍵交換応答パケットをネットワークを介して前記デバイスから受信するステップと、
前記鍵交換応答パケットの妥当性を検査するステップと、
少なくとも一部は前記鍵交換応答パケット中のデータに基づいて、前記相互鍵を生成するためにいかなる追加のパケットも前記デバイスに送信するかまたは前記デバイスから受信する必要なしに、前記相互鍵を生成するステップとを備えることを特徴とする方法。
【請求項１８】
前記鍵交換イニシエータパケットは、前記鍵を生成するためにいかなる追加のパケットも前記デバイスに送信する必要なしに、同じ相互鍵を生成するために前記デバイスが前記鍵交換応答パケットを送信できるようにすることを特徴とする請求項１７に記載の方法。
【請求項１９】
鍵交換イニシエータメッセージを生成するステップと、
前記鍵交換イニシエータメッセージのダイジェストを算出するステップと、
少なくとも一部は前記ダイジェストに基づいて認証子を生成するステップと、
前記認証子を暗号化するステップと、
前記鍵交換イニシエータメッセージと、前記暗号化された認証子と、セキュリティチケットとを含む鍵交換イニシエータパケットを生成することによって、前記鍵交換イニシエータパケットを生成するステップとをさらに備えることを特徴とする請求項１７に記載の方法。
【請求項２０】
前記鍵交換応答パケットを妥当性検査するステップは、
前記デバイスから鍵交換応答パケットを受け取るステップと、
前記鍵交換応答パケットに含まれた回答メッセージを復号するステップと、
前記回答メッセージ中のタイムスタンプが、以前に前記デバイスに送信されたタイプスタンプと同じであるかどうかを調べるステップと、
前記鍵交換応答パケットに含まれた鍵交換応答メッセージのダイジェスト値を算出するステップと、
前記回答メッセージ中の前記タイムスタンプが以前に前記デバイスに送信された前記タイムスタンプと同じである場合、および前記鍵交換応答パケットの前記算出されたダイジェスト値が前記鍵交換応答パケットに含まれたダイジェスト値と同じである場合にのみ前記鍵交換応答パケットが有効であると決定するステップとを含むことを特徴とする請求項１７に記載の方法。
【請求項２１】
前記鍵を生成するステップは、
前記鍵交換応答パケットから、Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ値（ｇＹ　ｍｏｄ　Ｎ）を取り出すステップと、
以前にランダムに生成された値（Ｘ）を取得するステップと、
Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ値（ｇＸＹ　ｍｏｄ　Ｎ）を算出するステップと、
少なくとも一部はＤｉｆｆｉｅ−Ｈｅｌｌｍａｎ値（ｇＸＹ　ｍｏｄ　Ｎ）に基づいて前記鍵を生成するステップとを含むことを特徴とする請求項１７に記載の方法。
【請求項２２】
前記鍵交換イニシエータパケットおよび前記鍵交換応答パケットは、パーフェクトフォワードシークレシを達成可能にすることを特徴とする請求項１７に記載の方法。
【請求項２３】
ゲームコンソールとの通信で使用するために鍵を確立する方法であって、
前記鍵を含まない鍵交換イニシエータパケットを、ネットワークを介して前記ゲームコンソールから受信するステップと、
前記鍵交換イニシエータパケットの妥当性を検査するステップと、
少なくとも一部は前記鍵交換イニシエータパケット中のデータに基づいて、前記鍵を生成するためにいかなる追加のパケットも前記ゲームコンソールから受信する必要なしに、前記鍵を生成するステップと、
前記鍵を含まない鍵交換応答パケットを前記ネットワークを介して前記ゲームコンソールに送信するステップとを備えることを特徴とする方法。
【請求項２４】
前記鍵交換応答パケットは、前記ゲームコンソールが前記鍵を生成するためにいかなる追加のパケットも前記ゲームコンソールに送信する必要なしに前記鍵を生成できるようにする情報を含むことを特徴とする請求項２３に記載の方法。
【請求項２５】
前記鍵交換イニシエータパケットを妥当性検査するステップは、
前記鍵交換イニシエータパケット中のセキュリティチケットを復号するステップと、
前記鍵交換イニシエータパケット中の認証子を復号するステップと、
前記鍵交換イニシエータパケット中の鍵交換メッセージのダイジェストを算出するステップと、
前記セキュリティチケットが失効していないこと、
前記認証子中のタイムスタンプが受入れ可能であること、
前記鍵交換メッセージの前記算出されたダイジェストが前記認証子の一部として含まれるダイジェスト値に等しいこと、および
前記認証子が再実行されていないこと
という条件をすべて満たしている場合にのみ前記鍵交換イニシエータパケットが有効であると決定するステップとを含むことを特徴とする請求項１７に記載の方法。
【請求項２６】
鍵交換応答メッセージを生成するステップと、
前記鍵交換応答メッセージのダイジェストを算出するステップと、
回答メッセージを生成するステップと、
前記回答メッセージを暗号化するステップと、
前記鍵交換応答メッセージおよび前記暗号化された回答メッセージの両方を含む、鍵交換応答パケットを生成することによって、前記鍵交換応答パケットを生成するステップとをさらに備えることを特徴とする請求項２３に記載の方法。
【請求項２７】
前記鍵を生成するステップは、
前記鍵交換イニシエータパケットから、Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ値（ｇＸ　ｍｏｄ　Ｎ）を取り出すステップと、
ランダムなＤｉｆｆｉｅ−Ｈｅｌｌｍａｎ値（Ｙ）を生成するステップと、
前記鍵交換応答の一部としてｇＹ　ｍｏｄ　Ｎを含めるステップと、
Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ値（ｇＸＹ　ｍｏｄ　Ｎ）を算出するステップと、
少なくとも一部はＤｉｆｆｉｅ−Ｈｅｌｌｍａｎ値（ｇＸＹ　ｍｏｄ　Ｎ）に基づいて前記鍵を生成するステップとを含むことを特徴とする請求項２３に記載の方法。
【請求項２８】
前記鍵交換イニシエータパケットおよび前記鍵交換応答パケットは、パーフェクトフォワードシークレシを達成可能にすることを特徴とする請求項２３に記載の方法。
【請求項２９】
前記ゲームコンソールとサーバデバイスとの間で続いて行なわれる安全な通信で使用するための鍵の確立を開始するために、ゲームコンソールで実施される方法であって、前記方法は、
鍵交換イニシエータメッセージを生成するステップと、
前記鍵交換イニシエータメッセージのダイジェストを算出するステップと、
少なくとも一部は前記ダイジェストに基づいて認証子を生成するステップと、
前記認証子を暗号化するステップと、
前記鍵交換イニシエータメッセージと、前記暗号化された認証子と、セキュリティチケットとを含む鍵交換イニシエータパケットを生成するステップと、
前記鍵交換イニシエータパケットを前記サーバデバイスに送信するステップとを備えることを特徴とする方法。
【請求項３０】
前記鍵交換イニシエータメッセージを生成するステップは、
第１の値ＮｏｎｃｅＩｎｉｔを生成するステップと、
第２の値Ｘを生成すること、
前記第２の値Ｘを使用してＤｉｆｆｉｅ−Ｈｅｌｌｍａｎ値（ｇＸ　ｍｏｄ　Ｎ）を生成するステップと、
前記鍵交換イニシエータメッセージに前記第１の値ＮｏｎｃｅＩｎｉｔおよびＤｉｆｆｉｅ−Ｈｅｌｌｍａｎ値（ｇＸ　ｍｏｄ　Ｎ）を含めるステップとを含むことを特徴とする請求項２９に記載の方法。
【請求項３１】
前記鍵交換イニシエータメッセージの前記ダイジェストを算出するステップは、
前記ダイジェストを算出するために以前に鍵配布センタから受信したケルベロスセッション鍵ＫＣＡおよびハッシング機能を使用するステップを含むことを特徴とする請求項２９に記載の方法。
【請求項３２】
前記認証子を生成するステップは、
現在のタイムスタンプを生成するステップと、
前記現在のタイムスタンプおよび前記鍵交換イニシエータメッセージの前記ダイジェストを前記認証子に含めるステップとを含むことを特徴とする請求項２９に記載の方法。
【請求項３３】
前記認証子を暗号化するステップは、少なくとも一部は以前に鍵配布センタから受信したケルベロスセッション鍵ＫＣＡに基づいて、前記認証子を暗号化するステップを含むことを特徴とする請求項２９に記載の方法。
【請求項３４】
前記鍵交換イニシエータパケットを生成するステップは、
前記鍵交換イニシエータメッセージと、
新しいセキュリティアソシエーションの確立が開始されたことを示すための所定のセキュリティパラメータインデックス（ＳＰＩ）値と、
前記暗号化された認証子と、
前記セキュリティチケットとを、前記鍵交換イニシエータパケットに含めるステップを含むことを特徴とする請求項２９に記載の方法。
【請求項３５】
前記セキュリティチケットはケルベロスチケットを含むことを特徴とする請求項２９に記載の方法。
【請求項３６】
前記鍵交換イニシエータパケットは、パーフェクトフォワードシークレシを達成可能にすることを特徴とする請求項２９に記載の方法。
【請求項３７】
前記サーバデバイスとゲームコンソールとの間で続いて行なわれる安全な通信で使用するための鍵を確立するサーバデバイスで実施される方法であって、前記方法は、
鍵交換イニシエータパケットを前記ゲームコンソールから受信するステップと、
前記鍵交換イニシエータパケット中のセキュリティチケットを復号するステップと、
前記鍵交換イニシエータパケット中の認証子を復号するステップと、
前記鍵交換イニシエータパケット中の鍵交換メッセージのダイジェストを算出するステップと、
セキュリティチケットが失効していないこと、
前記認証子中のタイムスタンプが受入れ可能であること、
前記鍵交換メッセージの前記算出されたダイジェストが前記認証子の一部として含まれるダイジェスト値に等しいこと、および
前記認証子が再実行されていないこと
という条件をすべて満たしている場合にのみ前記鍵交換イニシエータパケットが有効であると決定するステップとを備えることを特徴とする方法。
【請求項３８】
前記セキュリティチケットを復号するステップは、
前記サーバデバイスと前記セキュリティチケットを前記ゲームコンソールに提供した鍵配布センタとで共用する鍵を使用して、前記セキュリティチケットを復号するステップを含むことを特徴とする請求項３７に記載の方法。
【請求項３９】
現在時刻が前記セキュリティチケットで識別された期間内に含まれていない場合、前記セキュリティチケットが失効していると決定するステップをさらに備えることを特徴とする請求項３７に記載の方法。
【請求項４０】
前記タイムスタンプが現在時刻からの時間しきい値の範囲内にある場合、前記認証子中の前記タイムスタンプが受入れ可能であると決定するステップをさらに備えることを特徴とする請求項３７に記載の方法。
【請求項４１】
前記タイムスタンプが、前記ゲームコンソールから前記サーバデバイスが受信した最後のタイムスタンプよりも新しくない場合、前記認証子が再実行されたと決定するステップをさらに備えることを特徴とする請求項３７に記載の方法。
【請求項４２】
前記鍵交換イニシエータパケットから、Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ値（ｇＸ　ｍｏｄ　Ｎ）を取り出すステップと、
ランダムな値（Ｙ）を生成するステップと、
前記鍵交換イニシエータパケットに応答してＤｉｆｆｉｅ−Ｈｅｌｌｍａｎ値（ｇＹ　ｍｏｄ　Ｎ）を送信するステップと、
Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ値（ｇＸＹ　ｍｏｄ　Ｎ）を算出するステップと、
少なくとも一部はＤｉｆｆｉｅ−Ｈｅｌｌｍａｎ値（ｇＸＹ　ｍｏｄ　Ｎ）に基づいて前記鍵を生成するステップとをさらに備えることを特徴とする請求項３７に記載の方法。
【請求項４３】
前記鍵交換イニシエータパケットは、パーフェクトフォワードシークレシを達成可能にすることを特徴とする請求項３７に記載の方法。
【請求項４４】
複数の命令を格納した１つまたは複数のコンピュータ読取り可能媒体であって、サーバとゲームコンソールとの間で続いて行なわれる安全な通信で使用するために鍵を確立する際に、サーバデバイスの１つまたは複数の処理装置によって実行されると、前記複数の命令は前記１つまたは複数の処理装置に、
鍵交換イニシエータパケットを受信させ、
前記鍵交換イニシエータパケット中のセキュリティチケットを復号させ、
現在時刻が前記セキュリティチケットで識別された期間内にあるかどうかを調べさせ、前期現在時刻が前記セキュリティチケットで識別された前記期間内にない場合は、前記鍵が確立できないことを表示させ、
前記鍵交換イニシエータパケット中の認証子を復号させ、
前記認証子中のタイムスタンプが前記現在時刻からの時間しきい値の範囲内にあるかどうかを調べさせ、前記タイムスタンプが前記現在時刻からの時間しきい値の範囲内にない場合は、前記鍵が確立できないことを表示させ、
前記鍵交換イニシエータパケット中の鍵交換メッセージのダイジェスト値を算出させ、
前記算出されたダイジェスト値が前記認証子の一部として含められたダイジェスト値に等しいかどうかを調べさせ、前記算出されたダイジェスト値が前記認証子の一部として含められたダイジェスト値に等しくない場合は、前記鍵が確立できないことを表示させることを特徴とする１つまたは複数のコンピュータ読取り可能媒体。
【請求項４５】
前記命令は前記１つまたは複数の処理装置に、さらに
前記タイムスタンプが前記ゲームコンソールから前記サーバデバイスが受信した最後のタイムスタンプよりも新しいかどうかを調べさせ、前記タイムスタンプが前記最後のタイムスタンプよりも新しくない場合は、前記鍵が確立できないことを表示させることを特徴とする請求項４４に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項４６】
前記命令は前記１つまたは複数の処理装置に、さらに
前記鍵交換イニシエータパケットから、Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ値（ｇＸ　ｍｏｄ　Ｎ）を取り出させ、
ランダムな値（Ｙ）を生成させ、
前記鍵交換イニシエータパケットへの応答の一部としてＤｉｆｆｉｅ−Ｈｅｌｌｍａｎ値（ｇＹ　ｍｏｄ　Ｎ）を送信させ、
Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ値（ｇＸＹ　ｍｏｄ　Ｎ）を算出させ、
少なくとも一部はＤｉｆｆｉｅ−Ｈｅｌｌｍａｎ値（ｇＸＹ　ｍｏｄ　Ｎ）に基づいて前記鍵を生成させることを特徴とする請求項４４に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項４７】
前記鍵交換イニシエータパケットは、パーフェクトフォワードシークレシを達成可能にすることを特徴とする請求項４４に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項４８】
サーバデバイスとゲームコンソールとの間の今後の安全な通信で使用するための鍵を確立するサーバデバイスで実施される方法であって、前記方法は、
鍵交換応答メッセージを生成するステップと、
前記鍵交換応答メッセージのダイジェストを算出するステップと、
回答メッセージを生成するステップと、
前記回答メッセージを暗号化するステップと、
前記鍵交換応答メッセージおよび前記暗号化された回答メッセージの両方を含む鍵交換応答パケットを生成するステップと、
前記鍵交換応答パケットを前記ゲームコンソールに送信するステップとを備えることを特徴とする方法。
【請求項４９】
前記鍵交換応答メッセージを生成するステップは、
第１の値ＮｏｎｃｅＲｅｓｐを生成するステップと、
第２の値Ｙを生成するステップと、
前記第２の値Ｙを使用してＤｉｆｆｉｅ−Ｈｅｌｌｍａｎ値（ｇＹ　ｍｏｄ　Ｎ）を生成するステップと、
前記鍵交換応答メッセージに
前記ゲームコンソールから以前に受信したＮｏｎｃｅＩｎｉｔ値と、
前記第１の値ＮｏｎｃｅＲｅｓｐと、
前記Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ値（ｇＹ　ｍｏｄ　Ｎ）と、
前記ゲームコンソールから以前に受信したタイムスタンプ値とを含めるステップとを含むことを特徴とする請求項４８に記載の方法。
【請求項５０】
前記鍵交換応答メッセージの前記ダイジェストを算出するステップは、
前記ダイジェストを算出するためにケルベロスチケットの一部として前記ゲームコンソールから以前に受信したケルベロスセッション鍵ＫＣＡおよびハッシング機能を使用するステップを含むことを特徴とする請求項４８に記載の方法。
【請求項５１】
前記回答メッセージを生成するステップは、前記ゲームコンソールから以前に受信したタイムスタンプ、および前記鍵交換応答メッセージの前記ダイジェストの両方を、前記回答メッセージに含めるステップを含むことを特徴とする請求項４８に記載の方法。
【請求項５２】
前記回答メッセージを暗号化するステップは、少なくとも一部は以前にケルベロスチケットの一部として前記ゲームコンソールから受信したケルベロスセッション鍵ＫＣＡに基づいて、前記回答メッセージを暗号化するステップを含むことを特徴とする請求項４８に記載の方法。
【請求項５３】
前記鍵交換応答パケットを生成するステップは、
前記鍵交換応答メッセージと、
前記暗号化された回答メッセージと、
前記サーバデバイスから前記ゲームコンソールへの今後の安全な通信を識別するために使用されるセキュリティパラメータインデックス（ＳＰＩ）値とを、前記鍵交換応答パケットに含めるステップを含むことを特徴とする請求項４８に記載の方法。
【請求項５４】
前記鍵交換応答パケットは、パーフェクトフォワードシークレシを達成可能にすることを特徴とする請求項４８に記載の方法。
【請求項５５】
複数の命令を格納した１つまたは複数のコンピュータ読取り可能媒体であって、サーバデバイスとゲームコンソールとの間の今後の安全な通信で使用するために鍵を確立する際に、１つまたは複数の処理装置によって実行されると、前記複数の命令は前記１つまたは複数の処理装置に、
鍵交換応答メッセージを生成させ、
前記鍵交換応答メッセージのダイジェストを算出させ、
前記ダイジェストと前記ゲームコンソールから以前に受信したタイムスタンプとを含む回答メッセージを生成させ、
前記回答メッセージを暗号化させ、
前記鍵交換応答メッセージと前記暗号化された回答メッセージの両方を含む鍵交換応答パケットを生成させ、
前記鍵交換応答パケットを前記ゲームコンソールに送信させることを特徴とする１つまたは複数のコンピュータ読取り可能媒体。
【請求項５６】
前記１つまたは複数の処理装置に前記鍵交換応答メッセージの前記ダイジェストを算出させる前記命令は、前記１つまたは複数の処理装置に少なくとも一部はケルベロスセッション鍵に基づいて前記鍵交換応答メッセージの前記ダイジェストを算出させる命令を含むことを特徴とする請求項５５に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項５７】
前記１つまたは複数の処理装置に前記鍵交換応答メッセージを生成させる前記命令は、前記１つまたは複数の処理装置に、
第１の値ＮｏｎｃｅＲｅｓｐを生成させ、
第２の値Ｙを生成させ、
前記第２の値Ｙを使用してＤｉｆｆｉｅ−Ｈｅｌｌｍａｎ値（ｇＹ　ｍｏｄ　Ｎ）を生成させ、
前記鍵交換応答メッセージに
前記ゲームコンソールから以前に受信したＮｏｎｃｅＩｎｉｔ値と、
前記第１の値ＮｏｎｃｅＲｅｓｐと、
前記Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ値（ｇＹ　ｍｏｄ　Ｎ）と、
前記タイムスタンプ値とを含めさせる命令を含むことを特徴とする請求項５５に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項５８】
前記１つまたは複数の処理装置に前記回答メッセージを暗号化させる前記命令は、前記１つまたは複数の処理装置に少なくとも一部はケルベロスセッション鍵に基づいて前記回答メッセージを暗号化させる命令を含むことを特徴とする請求項５５に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項５９】
前記１つまたは複数の処理装置に前記鍵交換応答パケットを生成させる前記命令は、前記１つまたは複数の処理装置に、
前記鍵交換応答メッセージと、
前記暗号化された回答メッセージと、
前記サーバデバイスから前記ゲームコンソールへの今後の安全な通信を識別するために使用されるセキュリティパラメータインデックス（ＳＰＩ）値とを、前記鍵交換応答パケットに含めさせる命令を含むことを特徴とする請求項５５に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項６０】
前記鍵交換応答パケットは、パーフェクトフォワードシークレシを達成可能にすることを特徴とする請求項５５に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項６１】
ゲームコンソールとサーバデバイスとの間の今後の安全な通信で使用するための鍵を確立するゲームコンソールで実施される方法であって、前記方法は、
前記サーバデバイスから鍵交換応答パケットを受信するステップと、
前記鍵交換応答パケットに含まれた回答メッセージを復号するステップと、
前記回答メッセージ中のタイムスタンプは、以前に前記ゲームコンソールによって前記サーバデバイスに送信されたタイムスタンプと同じであるかどうかを調べるステップと、
前記鍵交換応答パケットに含まれた鍵交換応答メッセージのダイジェスト値を算出するステップと、
前記回答メッセージ中の前記タイムスタンプが以前に前記ゲームコンソールによって前記サーバデバイスに送信された前記タイムスタンプと同じである場合、および前記鍵交換応答パケットの前記算出されたダイジェスト値が前記鍵交換応答パケットに含まれたダイジェスト値と同じである場合にのみ前記鍵交換応答パケットが有効であると決定するステップとを備えることを特徴とする方法。
【請求項６２】
前記回答メッセージを復号するステップは、以前に前記ゲームコンソールによって鍵配布センタから取得されたケルベロスセッション鍵を使用して、前記回答メッセージを復号するステップを含むことを特徴とする請求項６１に記載の方法。
【請求項６３】
前記鍵交換応答パケットから、Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ値（ｇＹ　ｍｏｄ　Ｎ）を取り出すステップと、
以前に生成された値（Ｘ）を使用して、Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ値（ｇＸＹ　ｍｏｄ　Ｎ）を算出するステップと、
少なくとも一部はＤｉｆｆｉｅ−Ｈｅｌｌｍａｎ値（ｇＸＹ　ｍｏｄ　Ｎ）に基づいて前記鍵を生成するステップとをさらに備えることを特徴とする請求項６１に記載の方法。
【請求項６４】
前記鍵交換応答パケットは、パーフェクトフォワードシークレシを達成可能にすることを特徴とする請求項６１に記載の方法。
【請求項６５】
鍵配布センタからセッション鍵を取得するように構成されたクライアントデバイスと、
ネットワークを介して前記クライアントデバイスに結合され、前記クライアントデバイスと通信し、前記ネットワークを介した単一のラウンドトリップで安全に鍵を交換し、相互に認証し合い、ならびにパーフェクトフォワードシークレシを達成するように構成されたサーバデバイスとを備えることを特徴とするシステム。
【請求項６６】
前記クライアントデバイスはゲームコンソールを含むことを特徴とする請求項６５に記載のシステム。
【請求項６７】
前記サーバデバイスはデータセンタセキュリティゲートウェイを含むことを特徴とする請求項６５に記載のシステム。
【請求項６８】
前記クライアントデバイスは、さらに
前記鍵を含まない鍵交換イニシエータパケットを前記サーバデバイスに送信し、
前記鍵を含まない鍵交換イニシエータパケットを前記サーバデバイスから受信し、
前記鍵交換応答パケットの妥当性を検査し、
少なくとも一部は前記鍵交換応答パケット中のデータに基づいて、前記鍵を生成するためにいかなる追加のパケットも前記サーバデバイスに送信するかまたは前記サーバデバイスから受信する必要なしに、前記鍵を生成するように構成されることを特徴とする請求項６５に記載のシステム。
【請求項６９】
前記サーバデバイスは、さらに
前記鍵を含まない鍵交換イニシエータパケットを前記クライアントデバイスから受信し、
前記鍵交換イニシエータパケットの妥当性を検査し、
少なくとも一部は前記鍵交換イニシエータパケット中のデータに基づいて、前記鍵を生成するためにいかなる追加のパケットも前記クライアントデバイスから受信する必要なしに、前記鍵を生成し、
前記鍵を含まない鍵交換応答パケットを前記クライアントデバイスに送信するように構成されることを特徴とする請求項６５に記載のシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、セキュリティおよび安全な（ｓｅｃｕｒｅ）ネットワーク通信に関し、さらに詳細には、相互認証を使用した安全な鍵交換（ｋｅｙ　ｅｘｃｈａｎｇｅ）に関する。
【０００２】
【従来の技術】
従来の専用コンソールを備えたゲームシステムは、限定数のプレーヤ（たとえば２〜４人）に対処するスタンドアロン型マシンであった。パーソナルコンピュータベースのゲーム人気が高まった原因は、一部には、インターネットを介して多くのリモートプレーヤとオンラインでゲームプレイができることからであった。したがって、専用ゲームシステムの傾向の１つは、インターネットベースのオンラインゲームなどのネットワークを介したゲームを容易にするための機能を提供することである。
【０００３】
オンラインゲームは、集中型サーバ方式またはピアツーピア方式で実施可能である。集中型サーバ方式では、ゲームシステムが１つまたは複数の集中型サーバに接続され、この集中型サーバを介して相互に対話する。ピアツーピア方式では、ゲームシステムが相互に接続され、相互に直接対話する。ただしピアツーピア方式の場合でも、ゲームシステムが相手を探すのを助ける初期対戦相手決定サービス（ｉｎｉｔｉａｌ　ｍａｔｃｈ−ｍａｋｉｎｇ　ｓｅｒｖｉｃｅ）などのように、集中型サーバを使用して通信を支援することができる。
【０００４】
【非特許文献１】
Ｂｒｕｃｅ　Ｓｃｈｎｅｉｅｒ，　”Ａｐｐｌｉｅｄ　Ｃｒｙｐｔｏｇｒａｐｈｙ：　Ｐｒｏｔｏｃｏｌｓ，　Ａｌｇｏｒｉｔｈｍｓ，　ａｎｄ　Ｓｏｕｒｃｅ　Ｃｏｄｅ　ｉｎ　Ｃ，”　Ｊｏｈｎ　Ｗｉｌｅｙ　＆　Ｓｏｎｓ，　ｃｏｐｙｒｉｇｈｔ　１９９４　（ｓｅｃｏｎｄ　ｅｄｉｔｉｏｎ１９９６）
【０００５】
【非特許文献２】
Ｗ．　Ｄｉｆｆｉｅ　ａｎｄ　Ｍ．　Ｅ．　Ｈｅｌｌｍａｎ，　”Ｎｅｗ　ｄｉｒｅｃｔｉｏｎｓ　ｉｎ　Ｃｒｙｐｔｏｇｒａｐｈｙ”，ＩＥＥＥ　Ｔｒａｎｓａｃｔｉｏｎｓ　ｏｎ　Ｉｎｆｏｒｍａｔｉｏｎ　Ｔｈｅｏｒｙ　ｖ．ＩＴ−１２，　ｎ．６　Ｎｏｖ　１９７６，　ｐｐ．６４４−６５４
【０００６】
【発明が解決しようとする課題】
こうした集中型サーバを使用する際に生じる問題の１つが、サーバとゲームシステムとの間のネットワークトラフィックが、ネットワーク上の他のデバイスによって不正変更または監視されるのを防ぐことである。ゲームをする人というのは、独創的な不正メカニズムを開発し、ネットワークトラフィックをそうしたユーザの絶好のターゲットにしてしまうものである、という悪い評判が広まっている。残念ながら、以前のコンソールベースのゲームシステムは、典型的には集中型サーバとの安全な通信を提供するものではなかった。もう１つの問題は、ゲームシステムのリソースはゲームプレイに充てなければならないため、ネットワークトラフィックの保護に使用されるいかなるメカニズムも、こうしたリソースを大量に必要とするものであってはならないことである。さらに、より少ない集中型サーバでより多くのゲームシステムを処理できるようにするために、メカニズムは集中型サーバのリソースを大量に必要とするものであってもならない。
【０００７】
【課題を解決するための手段】
これらおよびその他の問題を解決するのが、本明細書で論じる相互認証を使用した安全な鍵交換である。
【０００８】
本発明の一目的は、相互認証を使用した安全な鍵交換を提供することである。
【０００９】
ある実施形態によれば、ネットワーク上のデバイスとの鍵交換は、ネットワークを介した単一のラウンドトリップ（ｒｏｕｎｄｔｒｉｐ）で実行され、デバイスとの相互認証およびパーフェクトフォワードシークレシ（ｐｅｒｆｅｃｔ　ｆｏｒｗａｒｄ　ｓｅｃｒｅｃｙ）の両方を達成する。
【００１０】
ある実施形態によれば、確立される鍵を含まない鍵交換イニシエータパケット（ｋｅｙ　ｅｘｃｈａｎｇｅ　ｉｎｉｔｉａｔｏｒ　ｐａｃｋｅｔ）が、ネットワークを介してデバイスに送られる。同じく鍵を含まない鍵交換応答パケット（ｋｅｙ　ｅｘｃｈａｎｇｅ　ｒｅｓｐｏｎｓｅ　ｐａｃｋｅｔ）が、デバイスから受け取られる。鍵交換応答パケットが妥当性検査され、鍵は、少なくとも一部は鍵交換応答パケット中のデータに基づいて、鍵を生成するためにいかなる追加のパケットもデバイスに送るかまたはデバイスから受け取る必要なしに生成される。
【００１１】
ある実施形態によれば、確立される鍵を含まない鍵交換イニシエータパケットが、ネットワークを介してデバイスから受け取られ、妥当性検査される。鍵は、少なくとも一部は鍵交換イニシエータパケット中のデータに基づいて、鍵を生成するためにいかなる追加のパケットもデバイスから受け取る必要なしに生成される。さらに、鍵を含まない鍵交換応答パケットが、ネットワークを介してデバイスに送られる。
【００１２】
【発明の実施の形態】
本明細書全体にわたり、同じ構成要素および／または特徴を表すには同じ符号が使用される。
【００１３】
以下の議論は、ネットワーク化されたデバイスに関する相互認証を使用した安全な鍵交換メカニズムを対象とするものである。この議論では、読者が暗号化、復号、認証、ハッシング、およびデジタル署名などの基本的な暗号法に精通しているものと想定される。基本暗号法入門として、読者はたとえば非特許文献１を対象とする。
【００１４】
図１は、相互認証を使用した安全な鍵交換が使用可能な例示的環境１００を示す構成図である。クライアントデバイス１０２は、鍵配布センタ１０４およびサーバデバイス１０６に結合される。デバイス１０２と鍵配布センタ１０４との結合は、デバイス１０２とセンタ１０４との間の通信を可能にする任意の様々な結合が可能である。同様に、デバイス１０２と１０６の間の結合も、デバイス１０２とデバイス１０６との間の通信を可能にする任意の様々な結合が可能である。一実施では、結合はインターネットを含み、任意選択として１つまたは複数の他のネットワーク（たとえばローカルエリアネットワーク（ＬＡＮ）および／またはワイドエリアネットワーク（ＷＡＮ））を含むこともできる。
【００１５】
図１には単一のクライアントデバイス１０２、単一のセンタ１０４、および単一のサーバデバイス１０６のみが示されているが、環境１００はこうしたデバイスおよびセンタを複数含むことができる。たとえば、複数のクライアントデバイス１０２が、１つまたは複数の鍵配布センタ１０４および１つまたは複数のサーバデバイス１０６と通信することができる。
【００１６】
クライアントデバイス１０２とサーバデバイス１０６との間の通信、ならびにクライアントデバイス１０２と鍵配布センタ１０４との間の通信は、任意の様々な異なるパケット形式が可能である。一実施例では、通信はユーザデータグラムプロトコル（ＵＤＰ／Ｕｓｅｒ　Ｄａｔａｇｒａｍ　Ｐｒｏｔｏｃｏｌ）形式である。
【００１７】
鍵配布センタ１０４は鍵およびセキュリティチケットをクライアントデバイス１０２に配布し、これをサーバデバイス１０６との安全な鍵交換で使用することができる。サーバデバイス１０６はクライアントデバイス１０２にサービスを提供するか、またはクライアントデバイス１０２にサービスを提供する他のデバイス（図１には図示せず）へのゲートウェイとして動作する。
【００１８】
クライアントデバイス１０２は、任意の多種多様なデバイスであってよい。本明細書の考察の中には、クライアントデバイス１０２をゲームコンソールと呼ぶものもある。こうしたゲームコンソールは、専用ゲームコンソールであるかまたは追加の機能を含むものであってよい。たとえばゲームコンソールは、デジタルＶＣＲとして動作できるようにデジタルビデオレコーディング機能を含むこと、テレビジョン信号（同報通信信号、ケーブル信号、衛星放送信号などのいずれか）を同調および復号できるようにチャネル同調機能を含むこと、などが可能である。クライアントデバイス１０２は、デスクトップＰＣ、ポータブルコンピュータ、携帯電話、インターネット機器、サーバコンピュータなどの、他のタイプのコンピュータデバイスであってもよい。
【００１９】
環境１００では、クライアントデバイス１０２とサーバデバイス１０６との間の相互認証を使用した安全な鍵交換が望ましい。これにより、デバイス１０２および１０６が互いに認証し合うことが可能になり、さらに１つまたは複数の暗号鍵を確立し、安全でないネットワーク（たとえばインターネット）を介して相互に安全に通信するためにデバイス１０２および１０６の基礎として使用することが可能になる。
【００２０】
相互認証を使用した安全な鍵交換を実行するために、鍵配布センタ１０４からセキュリティチケットが取得される。一実施例では、セキュリティチケットは、単一チケットで、特定のクライアントデバイス１０２のアイデンティティおよびクライアントデバイス１０２の１つまたは複数のユーザのユーザアイデンティティを認証する、ケルベロスのような認証プロトコルを使用して、クライアントデバイス１０２によって取得されるケルベロスチケットである。クライアントデバイス１０２は、ケルベロスチケットを以下のように取得する。
【００２１】
考察上、クライアントデバイス１０２はゲームコンソールであると想定し、さらに４人のゲームコンソールユーザがいると想定する。それぞれのユーザにはアイデンティティＵ１、Ｕ２、Ｕ３、およびＵ４が与えられ、ユーザ鍵Ｋ１、Ｋ２、Ｋ３、およびＫ４が割り当てられる。ゲームコンソールには、それ自体のアイデンティティＣおよびゲームコンソール鍵ＫＣも割り当てられる。さらに、ゲームディスクなどのゲームコンソール上でプレイされるゲームタイトルには、別のアイデンティティＧが割り当てられる。同様の方法で、サーバデバイス１０６にはそれ自体のアイデンティティＡおよび鍵ＫＡが割り当てられる。本明細書に記載された認証は、ある程度、鍵Ｋ１、Ｋ２、Ｋ３、およびＫ４、ＫＣ、ならびに鍵ＫＡに依存するものであることに留意されたい。したがって、これらの鍵を選択および格納する際には、それらの鍵を割り当てられたエンティティのみがそれらを使用できることに注意を払わなければならない。
【００２２】
ゲームコンソールは、ユーザアイデンティティＵ１、Ｕ２、Ｕ３、およびＵ４ならびにユーザ鍵Ｋ１、Ｋ２、Ｋ３、およびＫ４に基づいて、妥当性検査済みのユーザアイデンティティを生成する。より具体的に言えば、妥当性検査済みのユーザアイデンティティには、ユーザ鍵から導出されたユーザアイデンティティおよび値が含まれる。妥当性検査済みのユーザアイデンティティは要求と共に鍵配布センタ１０４に提出され、ゲームコンソールがユーザ鍵の知識を持っているために暗黙的にユーザを認証することを、鍵配布センタに実証するために使用される。
【００２３】
様々なメッセージおよび鍵が算出される方法を簡単に説明するために、次の表記法を導入する。
【００２４】
Ｈ＝ＨＫｘ（Ｍ）：Ｈとは、鍵Ｋｘを使用するメッセージＭの鍵付き一方向ハッシュ（ＭＡＣ）である。いかなるＭＡＣアルゴリズムも使用できる。こうしたＭＡＣアルゴリズムの一例が、ＩＥＴＦ　ＲＦＣ２１０４に従ったＨＭＡＣアルゴリズムである。
【００２５】
ＥｎｃｒｙｐｔｅｄＭ＝ＥＫｘ（Ｍ）：ＥｎｃｒｙｐｔｅｄＭとは、鍵Ｋｘを使用するメッセージＭの暗号化形式である。いかなる暗号化アルゴリズムも使用できる。こうした暗号化アルゴリズムの例に、ＤＥＳ、トリプルＤＥＳ、およびＲＣ４−ＨＭＡＣが含まれる。
【００２６】
鍵導出値（ｋｅｙ　ｄｅｒｉｖａｔｉｖｅ　ｖａｌｕｅ）を生成する方法の１つが、ゲームコンソールの鍵を使用して、ユーザ鍵の暗号ハッシュを算出することである。鍵Ｋ１を持つユーザＵ１の場合、ハッシュＨ１は次のように算出される。
Ｈ１＝ＨＫｃ（Ｋ１）
【００２７】
ハッシュＨ１が鍵導出値を形成する。他の方法は、ユーザ鍵Ｋ１を使用して次のように現在時刻を暗号化することである。
Ｈ１＝ＥＫ１（Ｔ）
【００２８】
結果として生じる値Ｈ１が、鍵導出値を再度形成する。妥当性検査済みユーザアイデンティティは、次のように、ユーザアイデンティティＵ１および対応する鍵導出値Ｈ１の組合せである。
Ｖａｌｉｄａｔｅｄ　Ｕｓｅｒ　Ｉｄｅｎｔｉｔｙ＝（Ｕ１，Ｈ１）
【００２９】
ゲームコンソールは、ゲームコンソールアイデンティティＣ、ゲームタイトルアイデンティティＧ、サーバデバイス１０６のサーバアイデンティティＡ、ならびに複数の妥当性検査済みユーザアイデンティティ（Ｕ１，Ｈ１）、（Ｕ２，Ｈ２）、（Ｕ３，Ｈ３）、および（Ｕ４，Ｈ４）を含む要求を構築する。要求は、次のようなアイデンティティ文字列を有する。
Ｒｅｑｕｅｓｔ＝［Ｃ，Ｇ，Ａ，（Ｕ１，Ｈ１），（Ｕ２，Ｈ２），（Ｕ３，Ｈ３），（Ｕ４，Ｈ４）］
【００３０】
さらに要求は、あるバージョンの認証プロトコル、およびリプレイ攻撃を阻止するためにゲームコンソールによって生成されるランダムノンス（ｎｏｎｃｅ）を含むことができる。要求は、アイデンティティ文字列全体の受取りを検証するために使用される、チェックサム値も含むことができる。ゲームコンソールは、鍵配布センタ１０４への結合を介して要求を提出する。
【００３１】
鍵配布センタ１０４は、要求ならびに要求に含まれるアイデンティティを評価する。鍵配布センタ１０４は、サーバデバイス１０６用に使用されるランダムセッション鍵を生成する。この例では、鍵配布センタは、ゲームコンソール１０２がサーバデバイス１０６と通信しながら使用するためのランダムセッション鍵ＫＣＡを生成する。本明細書ではこのランダムセッション鍵ＫＣＡをケルベロスセッション鍵とも呼ぶ。
【００３２】
鍵配布センタがチケットを生成し、その後そのチケットがゲームコンソールによってサーバデバイス１０６に提示されることになる。サーバデバイス１０６向けに発行されるチケットは１つであるが、このチケットは複数のユーザに対して有効である。チケットには、要求で提出されたアイデンティティ文字列が含まれる。さらに、チケットが生成された時間ＴＧ、チケットの期間が満了するまでの時間長さを識別する時間ＴＬ、およびサーバデバイス１０６向けにランダムに生成されたケルベロスセッション鍵ＫＣＡも含まれる。チケットは、任意選択で、ゲームコンソールのユーザがアクセスを許可されているサーバデバイス１０６を介して使用可能なサービスおよび／またはサービスデバイスを識別する、サービスマップＳｍを含むこともできる。鍵配布センタは、どのユーザがどのサービスへのアクセスを許可されているか（たとえばどのユーザが、１つまたは複数の割増料金（ｐｒｅｍｉｕｍ）サービスにアクセスするための割増料金を払ったか）についての記録を維持するか、あるいは記録を維持する他のデバイスまたはセンタにアクセスする。チケットの内容は、サーバデバイスの鍵ＫＡを以下のように使用する対称鍵暗号（たとえばトリプルＤＥＳ）を介して暗号化される。
【００３３】
【数１】
2004015813.tif 000003
【００３４】
チケットは対応する鍵導出値Ｈｉを搬送するものでないことに留意されたい。鍵配布センタが鍵導出値を読み取り、ゲームコンソールがユーザ鍵を認識していると確信すると、鍵配布センタはユーザのアイデンティティを発行済のチケット内に配置する。その後サーバデバイス１０６はチケットが伝えるすべての内容を信頼することになるため、鍵導出値Ｈｉを確認する必要はない。
【００３５】
鍵配布センタは、生成されたチケットをゲームコンソールに戻す。ゲームコンソールはサーバデバイスの鍵ＫＡを知らないため、ゲームコンソールがチケットを開いて内容を変更することはできない。鍵配布センタは、添付の暗号化メッセージでセッションセキュリティ鍵も戻す。セッション鍵メッセージには、チケット生成時間ＴＧ、チケット満了長さＴＬ、およびセッションセキュリティ鍵ＫＣＡが含まれ、すべての内容は以下のようにゲームコンソールの鍵ＫＣを使用して暗号化される。
【００３６】
【数２】
2004015813.tif 000004
【００３７】
セッション鍵メッセージはゲームコンソールの鍵ＫＣで暗号化されるため、ゲームコンソールはセッション鍵メッセージを開いて、セッション時間パラメータおよびセッション鍵を回復することができる。
【００３８】
さらに図１を参照すると、いったんクライアントデバイス１０２（たとえばゲームコンソール）が鍵配布センタ１０４からチケットを受け取ると、クライアントデバイス１０２はこのチケットを使用してサーバデバイス１０６との相互認証を使用した安全な鍵交換を実行することができる。相互認証を使用した安全な鍵交換は、クライアントデバイス１０２およびサーバデバイス１０６にお互いを認証させることが可能であり、すなわちクライアントデバイス１０２はサーバデバイス１０６が自分の要求するサーバデバイスであることを検証可能であり、サーバデバイス１０６はクライアントデバイス１０２が自分の要求するクライアントデバイスであることを検証可能である。さらにデバイス１０２および１０６は、他方が特定鍵の知識を有することを検証可能である。
【００３９】
鍵交換により、２つのデバイス１０２および１０６が、これら２つのデバイス間で共用されるが２つのデバイス間で伝送されることはなく、第三者（たとえばデバイス１０２および１０６と同じネットワーク上にある他のデバイス）がデバイス間のラウンドトリップトラフィックに基づいて推定することのできない新しい秘密（ｓｅｃｒｅｔ）を、導出できるようにすることも可能である。一実施例では、デバイスは新しい秘密を導出するためにＤｉｆｆｉｅ−Ｈｅｌｌｍａｎ指数演算（ｅｘｐｏｎｅｎｔｉａｔｉｏｎ　ｏｐｅｒａｔｉｏｎｓ）を使用する。Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎに関する他の情報を見ることもできる（たとえば、非特許文献２参照）。デバイス１０２と１０６との間の通信は、通信を暗号化することによって保護可能であるか、あるいは暗号化なしに実行することができる。
【００４０】
図２は、クライアントデバイスとサーバデバイスとの間で相互認証を使用して安全な鍵交換を実行するための、例示的なプロセス１５０を示す流れ図である。図２のプロセスは、図２の左側に示されたクライアントデバイスによって実行されるオペレーションと、図２の右側に示されたサーバデバイスによって実行されるオペレーションにより、クライアントデバイスおよびサーバデバイスの両方によって実施される。図２のプロセスは、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せで実行可能である。図２のプロセスは、図１の構成要素を参照して論じられる。さらにプロセスは、クライアントデバイスとサーバデバイスとの間のプロセスとして示されているが、互いの間に安全な通信チャネルを確立することが望ましい任意の２つのデバイスによって実行することもできる（たとえば、プロセスは２つのクライアントデバイスまたは２つのサーバデバイスによって実行することができる）。
【００４１】
初めに、クライアントデバイス１０２は鍵交換イニシエータパケットを生成し、このパケットをサーバデバイス１０６に送信する（動作１５２）。サーバデバイス１０６は鍵交換イニシエータパケットを受け取り、受け取ったパケットの妥当性を検査する（動作１５４）。パケットの妥当性が検査されると、サーバデバイス１０６は、クライアントデバイス１０２との通信を安全にするために使用される暗号鍵を生成する（動作１５６）。一実施例では、これらの暗号鍵は、２つのデバイス間で２地点間通信を安全にするために使用されるセキュリティアソシエーション（ｓｅｃｕｒｉｔｙ　ａｓｓｏｃｉａｔｉｏｎ）鍵である。
【００４２】
次いでサーバデバイス１０６は鍵交換応答パケットを生成し、生成されたパケットをクライアントデバイス１０２に送信する（動作１５８）。クライアントデバイス１０２は鍵交換応答パケットを受け取り、受け取ったパケットの妥当性を検査する（動作１６０）。パケットの妥当性が検査されると、クライアントデバイス１０２は、サーバデバイス１０６との通信を安全にするために使用される暗号鍵を生成する（動作１６２）。暗号鍵は、動作１５６でサーバデバイス１０６によって生成されたものと同じである。したがって、クライアントデバイス１０２およびサーバデバイス１０６は最後にはどちらも同じ暗号鍵になるが、それらの間で実際に鍵を伝送しなくても終わる。
【００４３】
プロセス１５０は、パーフェクトフォワードシークレシを維持することに留意されたい。パーフェクトフォワードシークレシとは、たとえ第三者に以前の秘密の知識がある可能性があっても、その第三者は新しい秘密を推定できないことを言う。したがって、たとえば第三者（たとえば他のデバイス）がセッション鍵ＫＣＡ、またはクライアントデバイス１０２とサーバデバイス１０６との間で以前に確立された鍵を発見しても、その第三者は安全な鍵交換プロセス１５０から生成される新しい鍵を推定できないことになる。これは、たとえば第三者に、プロセス１５０で使用されるＤｉｆｆｉｅ−Ｈｅｌｌｍａｎ値（以下でより詳細に論じる）の知識がないためである。
【００４４】
さらに、クライアントデバイス１０２とサーバデバイス１０６との間では、２つのパケット、すなわち鍵交換イニシエータパケットおよび鍵交換応答パケットだけを通信すればよいことがわかる。したがって、相互認証を使用した安全な鍵交換を実行するために必要となるのは、単一のラウンドトリップ（クライアントデバイス１０２からサーバデバイス１０６へのパケット、およびサーバデバイス１０６からクライアントデバイス１０２への戻りパケット）のみである。この単一のラウンドトリップは、使用されるパケット数を減らすことによって、待ち時間を減らし、鍵の確立およびデバイスの相互認証において帯域幅オーバヘッドを減らす働きをする。
【００４５】
プロセス１５０について、図３〜６を参照しながら以下でより詳細に論じる。図３は動作１５２をより詳細に示し、図４は動作１５４をより詳細に示し、図５は動作１５６および１５８をより詳細に示し、図６は動作１６０および１６２をより詳細に示す。
【００４６】
図３は、鍵交換イニシエータパケットを生成および送信するための、例示的なプロセス２００を示す流れ図である。図３は、図２の動作１５２をより詳細に示す図である。図３のプロセスはクライアントデバイスによって実施され、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せで実行可能である。図３のプロセスは、図１の構成要素を参照して論じられる。
【００４７】
初めに、クライアントデバイス１０２が鍵交換イニシエータメッセージを生成する（動作２０２）。鍵交換イニシエータメッセージは、以下のように、ＮｏｎｃｅＩｎｉｔと呼ばれるクライアントデバイス１０２によって生成されるランダム（または擬似ランダム）値を含み、さらにＤｉｆｆｉｅ−Ｈｅｌｌｍａｎ（ｇＸ　ｍｏｄ　Ｎ）値も含み（この式のＸもクライアントデバイス１０２によって生成されるランダム（または擬似ランダム）値である）、さらに鍵交換プロセスが完了するとこのクライアント／サーバ通信チャネルを一意に定義する際に使用されることになる、セキュリティパラメータインデックス値（ＳＰＩ１）も含む。
ＩｎｉｔＭｅｓｓ＝［ＮｏｎｃｅＩｎｉｔ，ＳＰＩ１，（ｇＸ　ｍｏｄ　Ｎ）］
【００４８】
次いでクライアントデバイス１０２は、鍵配布センタ１０４から受け取ったケルベロスセッション鍵ＫＣＡを使用して、鍵交換イニシエータメッセージのダイジェストを算出する（動作２０４）。ダイジェストは以下のように生成される。
【００４９】
【数３】
2004015813.tif 000005
【００５０】
あるいは、ＨａｓｈＩｎｉｔＭｅｓｓの計算で、包括的一方向ハッシュ（鍵付きではない）を使用することもできる。鍵交換のセキュリティは、このハッシュが鍵付きであるか否かに依拠しない。
【００５１】
次いでクライアントデバイス１０２は、ケルベロス認証子（ａｕｔｈｅｎｔｉｃａｔｏｒ）を生成する（動作２０６）。ケルベロス認証子は、タイムスタンプ（たとえばクライアントデバイス１０２の現在時刻）と、動作２０４で算出されたＨａｓｈＩｎｉｔＭｅｓｓダイジェストを含む。タイムスタンプは、クライアントデバイス１０２がケルベロス認証子を生成するごとにクライアントデバイス１０２によって増分され、これにより、サーバデバイス１０６に再実行攻撃（ｒｅｐｌａｙ　ａｔｔａｃｋ）をより良く検出させることができる。クライアントデバイス１０２は、以下のように、ケルベロスセッション鍵ＫＣＡを使用してケルベロス認証子を暗号化する（動作２０８）。
【００５２】
【数４】
2004015813.tif 000006
【００５３】
次いでクライアントデバイス１０２は、鍵交換イニシエータパケットを生成する（動作２１０）。鍵交換イニシエータパケットは、鍵交換イニシエータメッセージＩｎｉｔＭｅｓｓ、暗号化されたケルベロス認証子ＡｕｔｈＴ、および鍵配布センタ１０４から受け取ったサーバデバイス１０６用のケルベロスチケットを含む。前述のように、ケルベロスチケットは、少なくともケルベロスセッション鍵（ＫＣＡ）、チケットが有効な期間、およびクライアントデバイス１０２を識別する一意の番号を含み、これらはすべて、鍵配布センタ１０４およびサーバデバイス１０６が共用する秘密鍵を使用して暗号化される。ＳＰＩ値は、クライアントデバイス１０２とサーバデバイス１０６との間のセキュリティアソシエーションまたは通信チャネルを識別する。ＳＰＩ１値はサーバデバイス１０６からクライアントデバイス１０２への通信に関連付けられ、ＳＰＩ２値はクライアントデバイス１０２からサーバデバイス１０６への通信に関連付けられる。したがって、鍵交換イニシエータパケットは以下のようになる。
ＩｎｉｔＰａｃｋｅｔ＝［ＩｎｉｔＭｅｓｓ，ＡｕｔｈＴ，Ｔｉｃｋｅｔ］
【００５４】
認証子とチケットの組合せは、ケルベロス用語でＡＰ　Ｒｅｑｕｅｓｔと呼ばれることに留意されたい。次いでクライアントデバイス１０２は、鍵交換イニシエータパケットをサーバデバイス１０６に送信する（動作２１２）。
【００５５】
図４は、鍵交換イニシエータパケットを受信および妥当性検査するための、例示的なプロセス２５０を示す流れ図である。図４は、図２の動作１５４をより詳細に示す図である。図４のプロセスはサーバデバイスによって実施され、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せで実行可能である。図４のプロセスは、図１の構成要素を参照して論じられる。
【００５６】
初めに、サーバデバイス１０６は鍵交換イニシエータパケットＩｎｉｔＰａｃｋｅｔを受信する（動作２５２）。一実施では、サーバデバイス１０６はすべての鍵交換イニシエータパケットが所定の形式および所定のサイズであることを予測する。サーバデバイス１０６は、この所定の形式および所定のサイズに当てはまらないいずれの鍵交換イニシエータパケットも無視する。あるいは、サーバデバイス１０６は、様々な形式および／または様々なサイズの鍵交換イニシエータパケットを可能にすることができる。
【００５７】
いったん鍵交換イニシエータパケットが受信されると、サーバデバイス１０６は、サーバデバイス１０６が鍵配布センタ１０４と共用する鍵を使用して、ケルベロスチケットを復号する（動作２５４）。次いでサーバデバイス１０６は、復号されたチケットをチェックして、チケットが失効（ｓｔａｌｅ）していないかどうかを判別する（動作２５６）。現在時刻が（チケットで識別された）チケットの有効な期間内に含まれる場合、チケットは失効していない。ただし、現在時刻がチケットの有効な期間内に含まれない場合、チケットは失効している。ケルベロスチケットが失効している場合、鍵交換プロセスは失敗し（動作２５８）、その結果、クライアントデバイス１０２とサーバデバイス１０６との間にセキュリティアソシエーションは確立されない。動作２５８の一部として、サーバデバイス１０６は、鍵交換プロセスが失敗したことをクライアントデバイス１０２に通知するか、あるいはサーバデバイス１０６は、受信したＩｎｉｔＰａｃｋｅｔを削除するだけでクライアントデバイス１０２に通知しないことができる。
【００５８】
ただし、ケルベロスチケットが失効していない場合、サーバデバイス１０６は、復号されたケルベロスチケットから回復されたケルベロスセッション鍵ＫＣＡを使用して、ケルベロス認証子ＡｕｔｈＴを復号する（動作２６０）。次いでサーバデバイス１０６は、ケルベロス認証子中のタイムスタンプＴｉｍｅにアクセスし、タイムスタンプが受入れ可能であるかどうかを調べる（動作２６２）。タイムスタンプは、サーバデバイス１０６の現在時刻とそれほど同期が外れていなければ、受入れ可能である。一実施例では、タイムスタンプがサーバデバイス１０６の現在時刻からの時間しきい値（たとえば、推奨されるケルベロス時間スキュー（ｓｋｅｗ）である５分）の範囲内であれば、タイムスタンプは受入れ可能である。タイムスタンプが受入れ可能でなければ、鍵交換プロセスは失敗する（動作２５８）。
【００５９】
タイムスタンプが受入れ可能な場合、サーバデバイス１０６は鍵交換メッセージＩｎｉｔＭｅｓｓのダイジェストを算出する（動作２６４）。サーバデバイス１０６は、図３の動作２０４でクライアントデバイス１０２がダイジェストを算出したのと同じ方法で、ダイジェストを算出する。次いでサーバデバイス１０６は、動作２６４で算出したダイジェスト値が、暗号化されたケルベロス認証子ＡｕｔｈＴの一部としてクライアントデバイス１０２から受信したダイジェスト値に一致する（等しい）かどうかを調べる（動作２６６）。２つのダイジェスト値が同じであれば、クライアントデバイス１０２とサーバデバイス１０６との間の鍵交換メッセージＩｎｉｔＭｅｓｓが変更されていない（たとえば、鍵交換メッセージＩｎｉｔＭｅｓｓが不正変更されていない）ことを確認する働きをする。２つのダイジェスト値が一致しない場合（言い換えれば、２つのダイジェスト値が等しくない場合）、鍵交換プロセスは失敗する（動作２５８）。
【００６０】
ただし、受信したダイジェスト値と算出されたダイジェスト値が一致した場合、サーバデバイス１０６はケルベロス認証子が再実行されたかどうかを調べる（動作２６８）。サーバデバイス１０６は、各クライアントデバイスＣから受信したそれぞれのケルベロス認証子（ケルベロスチケットに示されている）からのタイムスタンプの記録を維持する。サーバデバイス１０６が、サーバデバイス１０６によって記録された最後のタイプスタンプよりも新しくないタイムスタンプＴｉｍｅの付いたケルベロス認証子を受信すると、サーバデバイス１０６はケルベロス認証子が再実行されたものであることを知る。ケルベロス認証子が再実行されたものであれば、鍵交換イニシエータパケットは無効であり、鍵交換プロセスは失敗する（動作２５８）。ただし、ケルベロス認証子が再実行されたものでなければ、鍵交換イニシエータパケットはサーバデバイス１０６によって妥当性検査されている（動作２７０）。これらの試験すべてに適合し、動作２７０で鍵交換イニシエータパケットの妥当性が検査されると、サーバデバイス１０６はクライアントデバイス１０２が実際に自分の要求したデバイスであると認証し、サーバデバイス１０６は、クライアントデバイス１０２にケルベロスセッション鍵ＫＣＡの知識があることを検証し、クライアントにＫＣの知識があることも（鍵配布センタの信用を通じて間接的に）検証する。
【００６１】
図５は、暗号鍵を生成するため、ならびに鍵交換応答パケットを生成および送信するための例示的プロセス３００を示す流れ図である。図５は、図２の動作１５６および１５８をさらに詳細に示す図である。図５のプロセスはサーバデバイスによって実施され、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せで実行可能である。図５のプロセスは、図１の構成要素を参照して論じられる。
【００６２】
初めに、サーバデバイス１０６は、鍵交換イニシエータメッセージＩｎｉｔＭｅｓｓ、ケルベロスセッション鍵ＫＣＡ、クライアントデバイス１０２からのノンス（ＮｏｎｃｅＩｎｉｔ）、およびサーバデバイス１０６によって生成されたノンス（ＮｏｎｃｅＲｅｓｐ）に基づいて暗号鍵を生成する（動作３０２）。サーバデバイス１０６は、ランダム（または擬似ランダム）数Ｙ、ならびにＮｏｎｃｅＲｅｓｐと呼ばれるランダム値を生成する。さらにサーバデバイス１０６は、Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ値（ｇＸＹ　ｍｏｄ　Ｎ）ならびにＤｉｆｆｉｅ−Ｈｅｌｌｍａｎ値（ｇＹ　ｍｏｄ　Ｎ）を算出する。この時点で、サーバデバイス１０６はセキュリティアソシエーション鍵を算出するのに十分なデータを有する。セキュリティアソシエーション鍵は、２つのコンソール間での２地点間通信を安全にするために使用される。一実施例では、サーバデバイス１０６は２つのＤｉｆｆｉｅ−Ｈｅｌｌｍａｎ値（（ｇＸ　ｍｏｄ　Ｎ）および（Ｙ））を使用して関数（ｇＸＹ　ｍｏｄ　Ｎ）を算出する。次いでサーバデバイス１０６は、値ＮｏｎｃｅＩｎｉｔ、ＮｏｎｃｅＲｅｓｐ、（ｇＸＹ　ｍｏｄ　Ｎ）、およびケルベロスセッション鍵ＫＣＡに基づいて、様々なアルゴリズムを使用して様々なダイジェストを算出する。次いでこれらのダイジェストは、セキュリティアソシエーション鍵を形成するために使用される。一実施例では、サーバデバイス１０６が、ＮｏｎｃｅＩｎｉｔ、ＮｏｎｃｅＲｅｓｐ、（ｇＸＹ　ｍｏｄ　Ｎ）を入力として使用し、ケルベロスセッション鍵ＫＣＡを双方向ですべてのセキュアパケットを認証および暗号化／復号するためのセキュリティ鍵として使用して、４つの異なるダイジェスト（１つの鍵を認証用、１つの鍵を暗号用に、それぞれの方向用に２倍して合計４つ）を算出する。
【００６３】
次いでサーバデバイス１０６は、鍵交換応答メッセージを生成する（動作３０４）。鍵交換応答メッセージは、以下のように、ＮｏｎｃｅＩｎｉｔ、クライアントデバイス１０２から受信したタイムスタンプＴｉｍｅ、ＮｏｎｃｅＲｅｓｐ、Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ値（ｇＹ　ｍｏｄ　Ｎ）、およびＳＰＩ２値を含む。
ＲｅｓｐＭｅｓｓ＝［ＮｏｎｃｅＩｎｉｔ，ＳＰＩ２，ＮｏｎｃｅＲｅｓｐ，（ｇＹ　ｍｏｄ　Ｎ）］
【００６４】
ＳＰＩ２値はサーバデバイス１０６によって生成され、クライアントデバイス１０２からサーバデバイス１０６へのすべての通信に関連付けられる。次いでサーバデバイス１０６は、以下のように、ケルベロスセッション鍵を使用して応答メッセージのダイジェストおよびハッシュ関数Ｈを算出する（動作３０６）。
【００６５】
【数５】
2004015813.tif 000007
【００６６】
動作３０６のハッシュ関数Ｈは、動作２０４のハッシュ関数Ｈと同じであるか、または異なるハッシュ関数Ｈであってよい。
【００６７】
次いでサーバデバイス１０６は、以下のように、算出されたハッシュダイジェストおよびケルベロス認証子からのタイムスタンプＴｉｍｅの両方を含む、ケルベロス回答メッセージを生成する（動作３０８）。
ＲｅｐｌｙＭｅｓｓ＝［ＨａｓｈＲｅｓｐＭｅｓｓ，Ｔｉｍｅ］
【００６８】
次いでサーバデバイス１０６は、以下のように、暗号化アルゴリズムＥ（たとえばトリプルＤＥＳ）およびケルベロスセッション鍵ＫＣＡを使用してケルベロス回答メッセージＲｅｐｌｙＭｅｓｓを暗号化する（動作３１０）。
【００６９】
【数６】
2004015813.tif 000008
【００７０】
動作３０８の暗号化アルゴリズムＥは、図３の動作２０６で使用される暗号化アルゴリズムと同じであるか、または異なる暗号化アルゴリズムであってよい。
【００７１】
次いでサーバデバイス１０６は、以下のように、鍵交換応答メッセージＲｅｓｐＭｅｓｓおよび暗号化されたケルベロス回答メッセージＥｎｃｒｙｐｔｅｄＲｅｐｌｙＭｅｓｓを含む、鍵交換応答パケットを生成する。
ＲｅｓｐＰａｃｋｅｔ＝［ＲｅｓｐＭｅｓｓ，ＥｎｃｒｙｐｔｅｄＲｅｐｌｙＭｅｓｓ］
【００７２】
次いでサーバデバイス１０６は、鍵交換応答パケットＲｅｓｐＰａｃｋｅｔをクライアントデバイス１０２に送信する（動作３１４）。
【００７３】
図６は、鍵交換応答パケットを受信および妥当性評価するため、および暗号鍵を生成するための、例示的なプロセス３５０を示す流れ図である。図６は、図２の動作１６０および１６２をより詳細に示す図である。図６のプロセスはクライアントデバイスによって実施され、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せで実行可能である。図６のプロセスは、図１の構成要素を参照して論じられる。
【００７４】
初めに、クライアントデバイス１０２は、サーバデバイス１０６から鍵交換応答パケットＲｅｓｐＰａｃｋｅｔを受信する（動作３５２）。クライアントデバイス１０２は、ケルベロスセッション鍵ＫＣＡを使用して、ケルベロス回答メッセージＥｎｃｒｙｐｔｅｄＲｅｐｌｙＭｅｓｓを復号する（動作３５４）。次いでクライアントデバイス１０２は、復号された回答メッセージ中のタイムスタンプＴｉｍｅが、クライアントデバイス１０２がサーバデバイス１０６に送信したタイムスタンプＴｉｍｅと一致するかどうかを調べる（動作３５６）。タイムスタンプが一致する場合（言い換えれば、タイムスタンプが等しい場合）、その一致により、サーバデバイス１０６がケルベロスチケット（ＫＡの知識を証明する）およびケルベロス認証子（したがってケルベロスセッション鍵ＫＣＡの知識を有する）を復号できたことが確認され、実際にサーバデバイス１０６が自分の要求したものであることが確認される。したがってこれらのタイムスタンプ値が一致すれば、サーバデバイス１０６はクライアントデバイス１０２に対して認証され、この時点で、完全な相互認証が達成された（サーバはクライアントに対してＫＡの知識を証明し、クライアントはサーバに対してＫＣの知識を証明した）。
【００７５】
タイムスタンプ値が一致しなければ、図４の動作２５８と同様に、鍵交換プロセスは失敗する（動作３５８）。ただし、タイムスタンプ値が一致する場合、サーバデバイス１０６はクライアントデバイス１０２に対して認証され、続いてクライアントデバイス１０２は、ケルベロスセッション鍵ＫＣＡを使用して鍵交換応答メッセージＲｅｓｐＭｅｓｓのダイジェストを算出する（動作３６０）。クライアントデバイス１０２は、図５の動作３０６でサーバデバイス１０６がダイジェストを算出したのと同じ方法で、ダイジェストを算出する。次いでクライアントデバイス１０２は、自分が動作３６０で算出したダイジェスト値が、暗号化されたケルベロス回答メッセージＥｎｃｒｙｐｔｅｄＲｅｐｌｙＭｅｓｓの一部としてサーバデバイス１０６から受信したダイジェスト値と一致する（等しい）かどうかを調べる（動作３６２）。２つのダイジェスト値が同じであれば、サーバデバイス１０６とクライアントデバイス１０２との間の鍵交換応答メッセージＲｅｓｐＭｅｓｓが変更されていない（たとえば、鍵交換応答メッセージＲｅｓｐＭｅｓｓが不正変更されていない）ことを確認する働きをする。２つのダイジェスト値が一致しない場合（言い換えれば、２つのダイジェスト値が等しくない場合）、鍵交換プロセスは失敗する（動作３５８）。
【００７６】
ただし、２つのダイジェスト値が一致すれば、クライアントデバイス１０２は、ケルベロスセッション鍵ＫＣＡ、ＮｏｎｃｅＩｎｉｔ、ＮｏｎｃｅＲｅｓｐ、およびｇＸＹ　ｍｏｄ　Ｎに基づいて暗号鍵を生成する（動作３６４）。図５の動作３０２に関して上記で考察したのと同様に、この時点でクライアントデバイス１０２には、Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ値（ｇＸＹ　ｍｏｄ　Ｎ）を算出し、セキュリティアソシエーション鍵を算出するのに十分なデータがある。動作３６４でクライアントデバイス１０２によって算出されるセキュリティアソシエーション鍵は、図５の動作３０２でサーバデバイス１０６によって算出されるものと同じであり、同じ方法で算出される。ｇＸＹ　ｍｏｄ　Ｎは、クライアントデバイスのｇＹ　ｍｏｄ　ＮおよびＸから算出されることに留意されたい。
【００７７】
いったんクライアントデバイス１０２がセキュリティアソシエーション鍵を持てば、デバイス１０２は、鍵交換の完了を待っていたいかなるパケットも自由に伝送することができる。ただしサーバデバイス１０６は、たとえ同じ鍵セットを持っていてもその応答メッセージＲｅｓｐＭｅｓｓが失われたことを確認できないため、自由に伝送することはできない。サーバデバイス１０６は、算出されたセキュリティアソシエーション鍵で認証されたパケットをクライアントデバイス１０２から受信するまで、あるいは任意選択でクライアントデバイス１０２から肯定応答パケット（ＡｃｋＰａｃｋ）を受信するまで、待機する。
【００７８】
一般には、クライアントデバイス１０２がサーバデバイス１０６にパケットを送信するため、鍵交換プロセスは２つのパケット、すなわちＩｎｉｔＰａｃｋｅｔおよびＲｅｓｐＰａｃｋｅｔのみで構成される。あるいは、クライアントデバイス１０２がまだパケットを送信していなければ、クライアントデバイス１０２は人工の肯定応答パケット（「ＡｃｋＰａｃｋ」と表記される）を送信することになる。このパケットは他の２つの鍵交換パケットとは異なり、ケルベロスセッション鍵ＫＣＡの代わりに算出されたセキュリティアソシエーション鍵を使用してＡｃｋＰａｃｋがハッシュされる。
【００７９】
これ以降、２つのデバイス１０２および１０４はセキュリティアソシエーション鍵を使用して通信を安全にする。他方のデバイスに伝送する必要のあるすべてのネットワークパケットは、任意選択で暗号化された後、受信側デバイスがパケットのコンテンツを復号する前に認証データを検証することによって認証される。デバイス１０２および１０４はいずれも、同じノンスを含む他方側からの鍵交換パケットを無視することができる。
【００８０】
図７は、例示的なオンラインゲーム環境４００を示す構成図である。複数のゲームコンソール４０２（１）、４０２（２）、．．．、４０２（ｎ）が、ネットワーク４０６を介してセキュリティゲートウェイ４０４に結合される。ネットワーク４０６は、様々な従来のデータ通信ネットワークのうちの任意の１つまたは複数を表したものである。ネットワーク４０６は、典型的にはパケット交換ネットワークを含むが、回路交換ネットワークを含んでもよい。ネットワーク４０６は、有線および／または無線部分を含むことができる。一実施例では、ネットワーク４０６はインターネットを含み、任意選択で１つまたは複数のローカルエリアネットワーク（ＬＡＮ）および／またはワイドエリアネットワーク（ＷＡＮ）を含むことができる。ネットワーク４０６の少なくとも一部は、公然とアクセスできるネットワークを示す、公衆ネットワークである。仮想上はだれでも公衆ネットワークにアクセスすることができる。
【００８１】
状況によっては、ネットワーク４０６は、ゲームコンソール４０２とセキュリティゲートウェイ４０４との間に位置する経路指定デバイスを備えたＬＡＮ（たとえばホームネットワーク）を含む。この経路指定デバイスはネットワークアドレス変換（ＮＡＴ）を実行することが可能であり、これによって、ＬＡＮ上の複数のデバイスがインターネット上で同じＩＰアドレスを共用し、ＬＡＮ上のデバイスが悪意のユーザまたは有害なユーザによってインターネットを介してアクセスされるのを防ぐファイアウォールとして動作することもできる。
【００８２】
セキュリティゲートウェイ４０４は、公衆ネットワーク４０６と私設ネットワーク４０８との間のゲートウェイとして動作する。私設ネットワーク４０８は、ローカルエリアネットワークなどの多種多様な従来のネットワークのうちいずれであってもよい。私設ネットワーク４０８ならびに以下でより詳細に論じる他のデバイスは、セキュアゾーンとして動作するデータセンタ４１０内にある。データセンタ４１０は、信頼のある通信を介して通信する信頼のあるデバイスで構成される。したがって、セキュアゾーン４１０内での暗号および認証は不要である。ネットワーク４０８の私的な性格はネットワーク４０８の限られたアクセス可能性と呼ばれ、すなわちネットワーク４０８へのアクセスは一定の個人にのみ制限される（たとえば、データセンタ４１０の所有者またはオペレータによって制限される）。
【００８３】
セキュリティゲートウェイ４０４は、１つまたは複数のセキュリティゲートウェイコンピューティングデバイスのクラスタである。これらのセキュリティゲートウェイコンピューティングデバイスがまとまって、セキュリティゲートウェイ４０４を実施する。セキュリティゲートウェイ４０４は、任意選択で、セキュリティゲートウェイコンピューティングデバイスによって処理されるように、要求をそれらコンピューティングデバイスのうちの適切なものに向けて送るように動作する、１つまたは複数の従来の負荷バランシングデバイスを含むことが可能である。この送ることまたは負荷バランシングは、様々なセキュリティゲートウェイコンピューティングデバイスにかかる負荷のバランスをほぼ等しくしようとする方法で（あるいは何らかの他の基準に従って）実行される。
【００８４】
さらにデータセンタ４１０内には、１つまたは複数の監視サーバ４１２と、１つまたは複数のプレゼンス（ｐｒｅｓｅｎｃｅ）および通知フロントドア（ｆｒｏｎｔ　ｄｏｏｒ）４１４、１つまたは複数のプレゼンスサーバ４１６、ならびに１つまたは複数の通知サーバ４１８（まとまってプレゼンスおよび通知サービスを実施する）と、１つまたは複数のマッチ（ｍａｔｃｈ）フロントドア４２０および１つまたは複数のマッチサーバ４２２（まとまってマッチサービスを実施する）と、１つまたは複数の統計フロントドア４２４および１つまたは複数の統計サーバ４２６（まとまって統計サービスを実施する）がある。サーバ４１６、４１８、４２２、および４２６はゲームコンソール４０２にサービスを提供するため、サービスデバイスと呼ばれることもある。サーバ４１６、４１８、４２２、および４２６のうち１つまたは複数に加えて、および／またはその代わりに、他のサービスデバイスを含めることもできる。さらに、図７にはデータセンタが１つしか示されていないが、ゲームコンソール４０２と通信可能な複数のデータセンタが存在する場合もある。これらのデータセンタは独立して動作するか、あるいは集合的に動作する（たとえば、１つの大規模データセンタをゲームコンソール１０２が使用できるようにするため）ことができる。
【００８５】
ゲームコンソール４０２はデータセンタ４１０から離れた場所に位置し、ネットワーク４０６を介してデータセンタ４１０にアクセスする。データセンタ内の１つまたは複数のデバイスとの通信を希望するゲームコンソール４０２は、コンソール４０２とセキュリティゲートウェイ４０４との間にセキュア通信チャネルを確立する。ゲームコンソール４０２およびセキュリティゲートウェイ４０４は、行き来して渡されるデータパケットを暗号化および認証し、それによって、暗号を解読せずにデータパケットを取り込むかまたはコピーすることのできる任意の他のデバイスによって理解されることなく、それらの間でデータパケットを安全に伝送できるようにする。ゲームコンソール４０２からセキュリティゲートウェイ４０４へ送られる各データパケットに、データを埋め込むことができる。この埋め込まれたデータが、パケットのコンテンツまたはデータコンテンツと呼ばれる。パケットタイプに基づいて、パケットに追加の情報を固有に含めることもできる。
【００８６】
コンソール４０２とセキュリティゲートウェイ４０４との間のセキュア通信チャネルは、本明細書に記載された相互認証を使用した安全な鍵交換を使用して確立される。コンソール４０２はそれ自体および鍵配布センタに対するコンソール４０２の現在のユーザを認証し、鍵配布センタ４２８からセキュリティチケットを取得する。次いでコンソール４０２はこのセキュリティチケットを使用して、セキュリティゲートウェイ４０４とのセキュア通信チャネルを確立する。セキュリティゲートウェイ４０４とのセキュア通信チャネルを確立する際に、ゲームコンソール４０２およびセキュリティゲートウェイ４０４は、それ自体を他方に対して認証し、その特定のゲームコンソール４０２およびセキュリティゲートウェイ４０４のみに知られた１つまたは複数のセッションセキュリティ鍵を確立する。このセッションセキュリティ鍵は、ゲームコンソール４０２とセキュリティゲートウェイクラスタ４０４との間で転送されるデータを暗号化するために使用されるので、他のデバイス（他のゲームコンソール４０２を含む）は一切データを読み取ることができない。セッションセキュリティ鍵は、データパケットを、セキュリティゲートウェイ４０４からのもの、またはデータパケットが自分の発信元であると主張するゲームコンソール４０２からのものとして認証するためにも使用される。したがって、こうしたセッションセキュリティ鍵を使用して、セキュリティゲートウェイ４０４と様々なゲームコンソール４０２との間にセキュア通信チャネルを確立することができる。
【００８７】
ゲームコンソール４０２とセキュリティゲートウェイ４０４の間にセキュア通信チャネルが確立されると、暗号化されたデータパケットをこの２つの間で安全に伝送することができる。ゲームコンソール４０２がデータセンタ４１０内にある特定のサービスデバイスにデータを送信しようとする場合、ゲームコンソール４０２はそのデータを暗号化し、これをセキュリティゲートウェイ４０４に送信して、データパケットのターゲットである特定のサービスデバイスにこれを転送するように要求する。セキュリティゲートウェイ４０４はデータパケットを受信し、このデータパケットを認証および復号した後、パケットのデータコンテンツを他のメッセージにカプセル化して、私設ネットワーク４０８を介して適切なサービスに送信する。セキュリティゲートウェイ４０４は、データパケットのターゲットである要求されたサービスに基づいて、メッセージに適したサービスを決定する。
【００８８】
本明細書では、主に、暗号化されたデータパケットをセキュリティゲートウェイ４０４とゲームコンソール４０２との間で通信することについて論じたが、データパケットによっては部分的に暗号化する（データパケットの一部を暗号化し、他の部分は暗号化しない）こともできる。データパケットのどの部分を暗号化してどの部分を暗号化しないかは、データセンタ４１０および／またはゲームコンソール４０２の設計者の希望に基づいて変えることができる。たとえば設計者は、コンソール４０２のユーザが互いに会話できるように、コンソール４０２間で音声データを通信できるようにすることを選択し、さらに音声データは暗号化せずに、パケット内の任意の他のデータを暗号化するように選択することができる。さらに別法として、一部のデータパケットには暗号化された部分がないようにする（すなわち、データパケット全体が暗号化されない）ことができる。たとえデータパケットが暗号化されないかまたは部分的にのみ暗号化される場合でも、依然としてデータパケット全体は認証される。
【００８９】
同様に、データセンタ４１０内のサービスデバイスがゲームコンソール４０２にデータを送ろうとする場合、データセンタは、ゲームコンソール４０２に送信するデータコンテンツ、ならびにデータコンテンツの送信先である特定のゲームコンソール４０２のインジケーションを含むメッセージを、私設ネットワーク４０８を介してセキュリティゲートウェイ４０４に送信する。セキュリティゲートウェイ４０４は、このデータコンテンツをデータパケットに埋め込み、その後データパケットを特定のゲームコンソール４０２のみが復号できるように暗号化し、さらにそのデータパケットをセキュリティゲートウェイ４０４からのものとしても認証する。
【００９０】
セキュリティゲートウェイ４０４内のそれぞれのセキュリティゲートウェイデバイスは、典型的には１つまたは複数のゲームコンソール４０２とのセキュア通信チャネルを担当しているため、それぞれのセキュリティゲートウェイデバイスが１つまたは複数のゲームコンソールの管理または処理を担当しているとみなすことができる。様々なセキュリティゲートウェイデバイスは相互に通信し合い、お互いにメッセージを送ることができる。たとえば、管理を担当していないゲームコンソールにデータパケットを送る必要のあるセキュリティゲートウェイデバイスは、他のすべてのセキュリティゲートウェイデバイスに対して、そのゲームコンソールに送信するデータと共にメッセージを送ることができる。このメッセージが、そのゲームコンソールの管理を担当するセキュリティゲートウェイデバイスによって受信され、このデバイスが適切なデータをそのゲームコンソールに送信する。あるいは、セキュリティゲートウェイデバイスが、どのゲームコンソールがどのセキュリティゲートウェイデバイスによって処理されるかを知っている場合があり、これには、各セキュリティゲートウェイデバイスが他のセキュリティゲートウェイデバイスによって処理されるゲームコンソールのテーブルを維持するなどのように明示的な場合、あるいはゲームコンソールの識別子に基づいて、どのセキュリティゲートウェイデバイスが特定のゲームコンソールの担当であるかを決定するなどのように暗黙的な場合がある。
【００９１】
監視サーバ４１２は、データセンタ４１０内のデバイスに対して、使用不可能なゲームコンソール４０２について、またはセキュリティゲートウェイ４０４の使用不可能なセキュリティゲートウェイデバイスについて通知する働きをする。ゲームコンソール４０２は、ハードウェアまたはソフトウェアの障害、コンソールの電源がデータセンタ４１０からログアウトせずに遮断される、コンソール４０２へのネットワーク接続ケーブルがコンソール４０２から切断される、他のネットワーク問題（たとえばコンソール４０２が誤作動しているＬＡＮ）などの、様々な異なる理由で使用不可能になる場合がある。同様に、セキュリティゲートウェイ４０４のセキュリティゲートウェイデバイスが、ハードウェアまたはソフトウェアの障害、デバイスの電源が遮断される、デバイスへのネットワーク接続ケーブルがデバイスから切断される、他のネットワーク問題などの、様々な異なる理由で使用不可能になる場合もある。
【００９２】
セキュリティゲートウェイ４０４内のそれぞれのセキュリティゲートウェイデバイスは、１つまたは複数の監視サーバ４１２によって監視され、このサーバがセキュリティゲートウェイデバイスのうちの１つが使用不可能になったときを検出する。セキュリティゲートウェイデバイスが使用不可能になった場合、監視サーバ４１２はデータセンタ４１０内の他のそれぞれのデバイス（サーバ、フロントドアなど）に対して、セキュリティゲートウェイデバイスがもはや使用不可能であるというメッセージを送信する。他のそれぞれのデバイスは、この情報に基づいて適切と思われる動作を実行する（たとえば、セキュリティゲートウェイデバイスによって管理される特定のゲームコンソールがデータセンタ４１０ともはや通信していないと想定し、それに応じて様々なクリーンアップオペレーションを実行する）ことができる。あるいは、一定のデバイスのみ（たとえば、セキュリティゲートウェイデバイスが使用可能かどうかに関係するデバイスのみ）が、こうしたメッセージを監視サーバ４１２から受信する場合もある。
【００９３】
セキュリティゲートウェイ４０４は、個々のゲームコンソール４０２を監視し、ゲームコンソール４０２のうちの１つが使用不可能になったときを検出する。セキュリティゲートウェイ１０４が、ゲームコンソールがもはや使用不可能であることを検出すると、セキュリティゲートウェイ１０４は、使用不可能なゲームコンソールを識別するメッセージを監視サーバ１１２に送信する。これに応答して監視サーバ４１２は、データセンタ４１０の他のそれぞれのデバイス（または選択されたデバイスのみ）に対して、ゲームコンソールがもはや使用不可能であるというメッセージを送信する。他のそれぞれのデバイスはこの情報に基づいて、適切と思われる動作を実行することができる。
【００９４】
プレゼンスサーバ４１６は、オンラインゲームのためにデータセンタ４１０にログインした所与のユーザの状況または存在に関するデータを保持し、これを処理する。通知サーバ４１８は、データセンタ４１０にログインしたプレーヤに向けて発信されるメッセージの複数の待ち行列を維持する。プレゼンスおよび通知フロントドア４１４は、セキュリティゲートウェイ４０４とサーバ４１６および４１８との間の仲介として動作する、１つまたは複数のサーバデバイスである。フロントドア４１４として動作する複数のサーバデバイスの間で負荷のバランスを取るために、プレゼンスおよび通知フロントドア４１４内に１つまたは複数の負荷バランシングデバイス（図示せず）を含めることができる。セキュリティゲートウェイ４０４は、サーバ４１６および４１８に関するメッセージをフロントドア４１４に送信し、フロントドア４１４は特定のサーバ４１６または特定のサーバ４１８のどちらにメッセージを送信するのかを識別する。フロントドア４１４を使用することにより、どのサーバがどのユーザに関するデータの管理を担当しているかなどのサーバ４１６および４１８の実際の実施が、セキュリティゲートウェイ４０４から取り出される。セキュリティゲートウェイ４０４は、プレゼンスおよび通知サービスをターゲットとするメッセージをプレゼンスおよび通知フロントドア４１４に転送するだけで、メッセージの経路をサーバ４１６およびサーバ４１８のうち適切な１つに指定することに関してはフロントドア４１４に依拠することができる。
【００９５】
マッチサーバ４２２は、オンラインプレーヤの対戦相手を決めることに関するデータを保持し、これを処理する。オンラインユーザは、プレイできるゲームとそのゲームの様々な特徴（たとえば、サッカーゲームが行われる場所、ゲームがデイゲームかナイトゲームか、ユーザの技能レベルなど）を宣伝することができる。その後これらの様々な特徴を、様々なオンラインユーザの対戦相手を決める際の基準として使用することができる。マッチフロントドア４２０は１つまたは複数のサーバデバイス（および任意選択で負荷バランシングデバイス）を含み、フロントドア４１４がサーバ４１６およびサーバ４１８を取り出したのと同じ方法で、セキュリティゲートウェイ４０４からマッチサーバ４２２を取り出す働きをする。
【００９６】
統計サーバ４２６は、オンラインゲーム用の様々な統計に関するデータを保持し、これを処理する。使用される特定の統計（たとえば、得点または時間の上位１０人、ゲームのすべてのオンラインプレーヤの世界ランキング、最も多くのアイテムを発見したユーザまたは最も長くプレイしたユーザのリストなど）は、ゲーム設計者の希望に基づいて変えることができる。統計フロントドア４２６は、１つまたは複数のサーバデバイス（および任意選択で負荷バランシングデバイス）を含み、フロントドア４１４がサーバ４１６およびサーバ４１８を取り出したのと同じ方法で、セキュリティゲートウェイ４０４から統計サーバ４２６を取り出す働きをする。
【００９７】
したがってセキュリティゲートウェイ４０４は、データセンタ４１０のセキュアゾーン内にあるデバイスを、信頼のない公衆ネットワーク４０６から保護する働きをするとみなすことができる。データセンタ４１０のセキュアゾーン内での通信は暗号化する必要がなく、データセンタ４１０内にあるすべてのデバイスは信頼される。ただし、データセンタ４１０内のデバイスからゲームコンソール４０２に送られるいかなる情報も、セキュリティゲートウェイクラスタ４０４を通過し、ここで情報のターゲットとなるゲームコンソール４０２のみが復号可能な方法で暗号化される。
【００９８】
図８は、本明細書に記載された技法を実施するために使用可能な、汎用コンピュータ環境５００を示す図である。コンピュータ環境５００は、コンピューティング環境の一例に過ぎず、コンピュータおよびネットワークアーキテクチャの使用または機能の範囲に関するいかなる制限も示唆することを意図するものでない。さらにコンピュータ環境５００は、例示的なコンピュータ環境５００に示された構成要素のうちのいずれか１つまたはいずれかの組合せに関して、いかなる依存関係または要件も有するものとして解釈されるべきでない。
【００９９】
コンピュータ環境５００は、コンピュータ５０２の形式の汎用コンピューティングデバイスを含む。コンピュータ５０２は、たとえば図１のクライアントデバイス１０２、サーバデバイス１０６、および／または鍵配布センタ１０４の一部であるデバイス、図７のセキュリティゲートウェイデバイス４０４、サーバ４１２、４１６、４１８、４２２、および／または４２６、ならびに／あるいは図７のフロントドア４１４、４２０、または４２４であってよい。コンピュータ５０２の構成要素には、１つまたは複数の処理装置または処理ユニット５０４と、システムメモリ５０６と、処理装置５０４を含む様々なシステム構成要素をシステムメモリ５０６に結合するシステムバス５０８とが含まれるが、これらに限定されるものではない。コンピュータ５０２は、暗号処理装置またはコプロセッサ（ｃｏ−ｐｒｏｃｅｓｓｏｒ）（図８には図示せず）を含むこともできる。こうした暗号処理装置またはコプロセッサは、暗号オペレーション（暗号化、復号、およびハッシングなど）を実行し、他の処理装置（たとえば処理ユニット５０４）の計算コストのかかる暗号化オペレーションを軽減するように設計される。
【０１００】
システムバス５０８は、メモリバスまたはメモリコントローラ、周辺バス、高速グラフィックスポート、および様々なバスアーキテクチャのうちのいずれかを使用する処理装置またはローカルバスを含む、任意のいくつかのタイプのバス構造のうちの１つまたは複数を表す。例を挙げると、こうしたアーキテクチャは、Ｉｎｄｕｓｔｒｙ　Ｓｔａｎｄａｒｄ　Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＳＡ）バス、Ｍｉｃｒｏ　Ｃｈａｎｎｅｌ　Ａｒｃｈｉｔｅｃｔｕｒｅ（ＭＣＡ）バス、Ｅｎｈａｎｃｅｄ　ＩＳＡ（ＥＩＳＡ）バス、Ｖｉｄｅｏ　Ｅｌｅｃｔｒｏｎｉｃｓ　Ｓｔａｎｄａｒｄｓ　Ａｓｓｏｃｉａｔｉｏｎ（ＶＥＳＡ）ローカルバス、およびメザニンバスとしても知られるＰｅｒｉｐｈｅｒａｌ　Ｃｏｍｐｏｎｅｎｔ　Ｉｎｔｅｒｃｏｎｎｅｃｔｓ（ＰＣＩ）バスを含むことができる。
【０１０１】
コンピュータ５０２は、典型的には様々なコンピュータ読取り可能媒体を含む。こうした媒体は、コンピュータ５０２がアクセス可能な任意の使用可能媒体であってよく、揮発性媒体および不揮発性媒体、取外し可能（ｒｅｍｏｖａｂｌｅ）媒体および取外し不能（ｎｏｎ−ｒｅｍｏｖａｂｌｅ）媒体の両方を含む。
【０１０２】
システムメモリ５０６は、ランダムアクセスメモリ（ＲＡＭ）５１０などの揮発性メモリ、および／または読取り専用メモリ（ＲＯＭ）５１２などの不揮発性メモリの形式の、コンピュータ読取り可能媒体を含む。起動中などにコンピュータ５０２内の要素間での情報転送を助ける基本ルーチンを含む基本入力／出力システム（ＢＩＯＳ）５１４が、ＲＯＭ　５１２に格納される。ＲＡＭ　５１０は典型的には、処理ユニット５０４に即時アクセス可能であり、かつ／または現在処理ユニット５０４で動作している、データおよび／またはプログラムモジュールを含む。
【０１０３】
コンピュータ５０２は、他の取外し可能／取外し不能、揮発性／不揮発性のコンピュータ記憶媒体も含むことができる。例を挙げると、図８には、取外し不能の不揮発性磁気媒体（図示せず）からの読取り用およびこれへの書込み用のハードディスクドライブ５１６、取外し可能の不揮発性磁気ディスク５２０（たとえば、「フロッピー（登録商標）ディスク」）からの読取り用およびこれへの書込み用の磁気ディスクドライブ５１８、ならびにＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、または他の光媒体などの取外し可能の不揮発性光ディスク５２４からの読取り用およびこれへの書込み用の光ディスクドライブ５２２が示されている。ハードディスクドライブ５１６、磁気ディスクドライブ５１８、および光ディスクドライブ５２２は、それぞれ１つまたは複数のデータ媒体インターフェース５２６によって、システムバス５０８に接続される。あるいは、ハードディスクドライブ５１６、磁気ディスクドライブ５１８、および光ディスクドライブ５２２を、１つまたは複数のインターフェース（図示せず）によってシステムバス５０８に接続することができる。
【０１０４】
ディスクドライブおよびそれらの関連するコンピュータ読取り可能媒体は、コンピュータ読取り可能命令、データ構造、プログラムモジュール、およびコンピュータ５０２に関する他のデータの、不揮発性記憶域を提供する。この例にはハードディスク５１６、取外し可能磁気ディスク５２０、および取外し可能光ディスク５２４が示されているが、例示的コンピューティングシステムおよび環境を実施するために、磁気カセットまたは他の磁気記憶デバイス、フラッシュメモリカード、ＣＤ−ＲＯＭ、デジタル汎用ディスク（ＤＶＤ）または他の光記憶装置、ランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、電気的消去可能プログラム可能読取り専用メモリ（ＥＥＰＲＯＭ）などの、コンピュータがアクセス可能なデータを格納できる他のタイプのコンピュータ読取り可能媒体も使用可能であることを理解されよう。
【０１０５】
任意数のプログラムモジュールを、ハードディスク５１６、磁気ディスク５２０、光ディスク５２４、ＲＯＭ　５１２、および／またはＲＡＭ　５１０に格納することが可能であり、例を挙げると、オペレーティングシステム５２６、１つまたは複数のアプリケーションプログラム５２８、他のプログラムモジュール５３０、およびプログラムデータ５３２が含まれる。こうしたオペレーティングシステム５２６、１つまたは複数のアプリケーションプログラム５２８、他のプログラムモジュール５３０、およびプログラムデータ５３２（またはそれらの何らかの組合せ）がそれぞれ、分散ファイルシステムをサポートする常駐構成要素のすべてまたは一部を実施することができる。
【０１０６】
ユーザは、キーボード５３４およびポインティングデバイス５３６（たとえば「マウス」）などの入力デバイスを介して、コマンドおよび情報をコンピュータ５０２に入力できる。他の入力デバイス５３８（具体的には図示せず）は、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送用パラボラアンテナ、シリアルポート、スキャナなどを含むことができる。これらおよび他の入力デバイスは、システムバス５０８に結合された入力／出力インターフェース５４０を介して処理ユニット５０４に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェースおよびバス構造によって接続してもよい。
【０１０７】
モニタ５４２または他のタイプのディスプレイデバイスを、ビデオアダプタ５４４などのインターフェースを介してシステムバス５０８に接続することもできる。他の出力周辺デバイスは、モニタ５４２に加えて、入力／出力インターフェース５４０を介してコンピュータ５０２に接続可能なスピーカ（図示せず）およびプリンタ５４６などの構成要素を含むこともできる。
【０１０８】
コンピュータ５０２は、リモートコンピューティングデバイス５４８などの１つまたは複数のリモートコンピュータへの論理接続を使用する、ネットワーク環境で動作可能である。例を挙げると、リモートコンピューティングデバイス５４８は、パーソナルコンピュータ、ポータブルコンピュータ、サーバ、ルータ、ネットワークコンピュータ、ピアデバイスまたは他の共通ネットワークノード、ゲームコンソールなどであってよい。リモートコンピューティングデバイス５４８は、コンピュータ５０２に関して本明細書に記載された要素および特徴の多くまたはすべてを含むことができる、ポータブルコンピュータとして示されている。
【０１０９】
コンピュータ５０２とリモートコンピュータ５４８との間の論理接続は、ローカルエリアネットワーク（ＬＡＮ）５５０および一般的なワイドエリアネットワーク（ＷＡＮ）５５２として示されている。こうしたネットワーキング環境は、事務所や企業規模のコンピュータネットワーク、イントラネット、およびインターネットでよく見られるものである。
【０１１０】
ＬＡＮネットワーキング環境で実施される場合、コンピュータ５０２はネットワークインターフェースまたはアダプタ５５４を介してローカルネットワーク５５０に接続される。ＷＡＮネットワーキング環境で実施される場合、コンピュータ５０２は典型的にはモデム５５６またはワイドネットワーク５５２を介して通信を確立するための他の手段を含む。モデム５５６はコンピュータ５０２に内蔵または外付けであってよく、入力／出力インターフェース５４０または他の適切なメカニズムを介してシステムバス５０８に接続可能である。図示されたネットワーク接続は例示的なものであり、コンピュータ５０２と５４８との間に通信リンクを確立する他の手段が使用できることを理解されよう。
【０１１１】
コンピューティング環境５００で例示されたようなネットワーク環境では、コンピュータ５０２に関して示されたプログラムモジュールまたはその一部を、リモートメモリ記憶デバイスに格納することができる。例を挙げると、リモートアプリケーションプログラム５５８はリモートコンピュータ５４８のメモリデバイス上に常駐する。図に示すために、アプリケーションプログラムおよびオペレーティングシステムなどの他の実行可能プログラム構成要素は、本明細書では別個のブロックとして示されているが、こうしたプログラムおよび構成要素は、様々な時点に、コンピューティングデバイス５０２の様々な記憶構成要素内に常駐するものであり、コンピュータのデータ処理装置によって実行されることを理解されよう。
【０１１２】
図９は、ゲームコンソール６０１の機能構成要素をより詳細に示す図である。ゲームコンソール６０１は、たとえば図１のクライアントデバイス１０２であってよい。ゲームコンソール６０１は、中央処理ユニット（ＣＰＵ）６００と、フラッシュＲＯＭ（読取り専用メモリ）６０４、ＲＡＭ（ランダムアクセスメモリ）６０６、ハードディスクドライバ６０８、およびポータブルメディアドライブ６０９を含む様々なタイプのメモリへの処理装置のアクセスを容易にするメモリコントローラ６０２とを有する。ＣＰＵ　６００には、データを一時的に格納し、メモリアクセスサイクル数を減少させるための、レベル１キャッシュ６１０およびレベル２キャッシュ６１２とが備えられており、それによって処理速度およびスループットが向上する。
【０１１３】
ＣＰＵ　６００、メモリコントローラ６０２、および様々なメモリデバイスは、シリアルおよびパラレルバス、メモリバス、周辺バス、ならびに任意の様々なバスアーキテクチャを使用する処理装置またはローカルバスを含む、１つまたは複数のバスを介して相互接続される。例を挙げると、こうしたアーキテクチャは、Ｉｎｄｕｓｔｒｙ　Ｓｔａｎｄａｒｄ　Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＳＡ）バス、Ｍｉｃｒｏ　Ｃｈａｎｎｅｌ　Ａｒｃｈｉｔｅｃｔｕｒｅ（ＭＣＡ）バス、Ｅｎｈａｎｃｅｄ　ＩＳＡ（ＥＩＳＡ）バス、Ｖｉｄｅｏ　Ｅｌｅｃｔｒｏｎｉｃｓ　Ｓｔａｎｄａｒｄｓ　Ａｓｓｏｃｉａｔｉｏｎ（ＶＥＳＡ）ローカルバス、およびメザニンバスとしても知られるＰｅｒｉｐｈｅｒａｌ　Ｃｏｍｐｏｎｅｎｔ　Ｉｎｔｅｒｃｏｎｎｅｃｔｓ（ＰＣＩ）バスを含むことができる。
【０１１４】
好適な一実施として、ＣＰＵ　６００、メモリコントローラ６０２、ＲＯＭ　６０４、およびＲＡＭ　６０６は、共通モジュール６１４に統合される。この実施では、ＲＯＭ　６０４は、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ　Ｃｏｍｐｏｎｅｎｔ　Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスおよびＲＯＭバス（どちらも図示せず）を介してメモリコントローラ６０２に接続されるフラッシュＲＯＭとして構成される。ＲＡＭ　６０６は、別々のバス（図示せず）を介してメモリコントローラ６０２によって別個に制御される、多重ＤＤＲ　ＳＤＲＡＭ（Ｄｏｕｂｌｅ　Ｄａｔａ　Ｒａｔｅ　Ｓｙｎｃｈｒｏｎｏｕｓ　Ｄｙｎａｍｉｃ　ＲＡＭ）として構成される。ハードディスクドライブ６０８およびポータブルメディアドライブ６０９は、ＰＣＩバスおよびＡＴＡ（ＡＴ　Ａｔｔａｃｈｍｅｎｔ）バス６１６を介してメモリコントローラに接続される。
【０１１５】
３Ｄグラフィックス処理ユニット６２０およびビデオ符号器６２２は、高速および高解像度のグラフィックス処理のためのビデオ処理パイプラインを形成する。データは、デジタルビデオバス（図示せず）を介して、グラフィックス処理ユニット６２０からビデオ符号器６２２に搬送される。オーディオ処理ユニット６２４およびオーディオコーデック（符号器／復号器）６２６は、高忠実度およびステレオ処理を備えた対応するオーディオ処理パイプラインを形成する。オーディオデータは、オーディオ処理ユニット６２４とオーディオコーデック６２６との間を、通信リンク（図示せず）を介して搬送される。ビデオおよびオーディオ処理パイプラインは、データをテレビジョンまたは他のディスプレイに伝送するために、Ａ／Ｖ（オーディオ／ビデオ）ポート６２８に出力する。図示された実施では、ビデオおよびオーディオ処理構成要素６２０〜６２８はモジュール６１４上に取り付けられる。
【０１１６】
ＵＳＢホストコントローラ６３０およびネットワークインターフェース６３２も、モジュール６１４上で実施される。ＵＳＢホストコントローラ６３０は、バス（たとえばＰＣＩバス）を介してＣＰＵ　６００およびメモリコントローラ６０２に結合され、周辺制御装置６３６（１）〜６３６（４）のホストとしての役割を果たす。ネットワークインターフェース６３２はネットワーク（たとえばインターネット、ホームネットワークなど）へのアクセスを提供し、イーサネット（登録商標）カード、モデム、ブルートゥースモジュール、ケーブルモデムなどを含む多種多様な様々な有線または無線のインターフェース構成要素のうちいずれであってもよい。
【０１１７】
ゲームコンソール６０１は、２つのデュアルコントローラ（ｄｕａｌ　ｃｏｎｔｒｏｌｌｅｒ）サポートサブアセンブリ６４０（１）および６４０（２）を有し、それぞれのサブアセンブリが２つのゲームコントローラ６３６（１）〜６３６（４）をサポートする。フロントパネルＩ／Ｏサブアセンブリ６４０は、電源ボタン６３１およびメディアドライブ取出しボタン６３３、ならびにゲームコンソールの外部表面に取り付けられた任意のＬＥＤ（発光ダイオード）または他のインジケータの機能をサポートする。サブアセンブリ６４０（１）、６４０（２）、および６４２は、１つまたは複数のケーブルアセンブリ６４４を解してモジュール６１４に結合される。
【０１１８】
４つのコントローラ６３６（１）〜６３６（４）に８つのメモリユニット６３４（１）〜６３４（８）が、すなわち各コントローラにつき２つのメモリユニットが接続可能であるように図示されている。各メモリユニット６３４は、ゲーム、ゲームパラメータ、および他のデータが格納できる追加の記憶装置を提供する。メモリユニット６３４をコントローラに挿入すると、メモリコントローラ６０２がアクセスできるようになる。
【０１１９】
システム電源モジュール６５０は、ゲームコンソール６０１の構成要素に電力を提供する。ファン６５２はゲームコンソール６０１内の回路を冷却する。
【０１２０】
コンソールユーザインターフェース（ＵＩ）アプリケーション６６０はハードディスクドライブ６０８上に格納される。ゲームコンソールの電源を入れると、コンソールアプリケーション６６０の様々な部分がＲＡＭ　６０６および／またはキャッシュ６１０、６１２にロードされ、ＣＰＵ　６００で実行される。コンソールアプリケーション６６０は、ゲームコンソール上で使用可能な様々なメディアタイプにナビゲートする際に一貫したユーザ体験を提供する、グラフィカルユーザインターフェースを提示する。
【０１２１】
ゲームコンソール６０１は、暗号化、復号、認証、デジタル署名、ハッシングなどの一般的な暗号機能を実行するための、暗号エンジンを実施する。暗号エンジンは、ＣＰＵ　６００の一部として、またはＣＰＵ上で実行するハードディスクドライブ６０８上に格納されたソフトウェア内で実施可能であるため、ＣＰＵは暗号機能を実行するように構成される。あるいは、暗号機能を実行するように設計された暗号処理装置またはコプロセッサを、ゲームコンソール６０１に含めることもできる。
【０１２２】
ゲームコンソール６０１は、システムをテレビジョンまたは他のディスプレイに接続するだけで、スタンドアロン型システムとして動作可能である。このスタンドアロンモードでは、ゲームコンソール６０１は１人または複数人のプレーヤがゲームをプレイし、映画を鑑賞し、あるいは音楽を聞くことができるようにする。ただし、ネットワークインターフェース６３２を介して利用可能なブロードバンド接続が組み込まれていれば、さらにゲームコンソール６０１は、前述のようにオンラインゲームの参加者として動作することもできる。
【０１２３】
本明細書では、様々なモジュールおよび技法について、１つまたは複数のコンピュータまたは他のデバイスによって実行される、プログラムモジュールなどのコンピュータ実行可能命令のコンテキストで説明することができる。通常、プログラムモジュールには、特定のタスクを実行するか、または特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などが含まれる。典型的には、プログラムモジュールの機能は、様々な実施形態で希望に応じて組み合わせるかまたは分散させることができる。
【０１２４】
これらのモジュールおよび技法の実施は、何らかの形式のコンピュータ読取り可能媒体上に格納するか、またはこれらをまたがって伝送することができる。コンピュータ読取り可能媒体は、コンピュータがアクセス可能な任意の使用可能媒体であってよい。例を挙げると、コンピュータ読取り可能媒体は「コンピュータ記憶媒体（ｃｏｍｐｕｔｅｒ　ｓｔｏｒａｇｅ　ｍｅｄｉａ）」および「通信媒体（ｃｏｍｍｕｎｉｃａｔｉｏｎ　ｍｅｄｉａ）」を含むことができるが、これらに限定されるものではない。
【０１２５】
「コンピュータ記憶媒体」には、コンピュータ読取り可能命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための任意の方法または技法で実施された、揮発性および不揮発性、取外し可能および取外し不能な媒体が含まれる。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル汎用ディスク（ＤＶＤ）または他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶デバイス、あるいは所望の情報を格納するために使用可能でありコンピュータがアクセス可能な任意の他の媒体が含まれるが、これらに限定されるものではない。
【０１２６】
「通信媒体」は、典型的にはコンピュータ読取り可能命令、データ構造、プログラムモジュール、または他のデータを、搬送波または他の移送メカニズムなどの変調データ信号（ｍｏｄｕｌａｔｅｄ　ｄａｔａ　ｓｉｇｎａｌ）で実施する。通信媒体には任意の情報送達媒体も含まれる。「変調データ信号」という用語は、１つまたは複数の特徴を信号中の情報を符号化するように設定または変更した信号を意味する。例を挙げると、通信媒体には、有線ネットワークまたは直接有線接続などの有線媒体と、音波、ＲＦ、赤外線、および他の無線媒体などの無線媒体とが含まれるが、これらに限定されるものではない。上記のいずれかの組合せも、コンピュータ読取り可能媒体の範囲内に含まれる。
【０１２７】
本明細書で論じた相互認証を使用した安全な鍵交換は、秘密を導出するためのＤｉｆｆｉｅ−Ｈｅｌｌｍａｎ指数演算を参照しながら論じられた。別法として、Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎの代わりに他の暗号オペレーションまたは方法を使用することもできる。
【０１２８】
上記の説明では、構造的特徴および／または方法論的動作に特有の言語を使用したが、特許請求の範囲に定義された本発明は、記載された特有の特徴または動作に限定されるものではないことを理解されよう。むしろ特有の特徴および動作は、本発明を実施するための例示的形式として開示されたものである。
【図面の簡単な説明】
【図１】相互認証を使用した安全な鍵交換が使用可能な例示的環境を示す構成図である。
【図２】クライアントデバイスとサーバデバイスとの間で相互認証を使用して安全な鍵交換を実行するための、例示的なプロセスを示す流れ図である。
【図３】鍵交換イニシエータパケットを生成および送信するための、例示的なプロセスを示す流れ図である。
【図４】鍵交換イニシエータパケットを受信および妥当性検査するための、例示的なプロセスを示す流れ図である。
【図５】暗号鍵を生成し、さらに鍵交換応答パケットを生成および送信するための、例示的なプロセスを示す流れ図である。
【図６】鍵交換応答パケットを受信および妥当性検査するため、および暗号鍵を生成するための、例示的なプロセスを示す流れ図である。
【図７】相互認証を使用した安全な鍵交換が使用可能な例示的オンラインゲーム環境を示す構成図である。
【図８】本明細書に記載された技法を実施するために使用可能な、汎用コンピュータ環境を示す図である。
【図９】本明細書に記載された技法を実施するために使用可能なゲームコンソールの機能構成要素を、より詳細に示す図である。
【符号の説明】
１０２　クライアントデバイス
１０４　鍵配布センタ
１０６　サーバデバイス
４０４　セキュリティゲートウェイ
４０６　ネットワーク
４０８　私設ネットワーク
４１０　データセンタ（セキュアゾーン）
４１２　監視サーバ
４１４　プレゼンスおよび通知フロントドア
４１６　プレゼンスサーバ
４１８　通知サーバ
４２０　マッチフロントドア
４２２　マッチサーバ
４２４　統計フロントドア
４２６　統計サーバ
４２８　鍵配布センタ
５０４　処理ユニット
５０６　システムメモリ
５０８　システムバス
５１０　ＲＡＭ
５１２　ＲＯＭ
５１４　ＢＩＯＳ
５２６　データ媒体インターフェース
５２６　オペレーティングシステム
５２８　アプリケーションプログラム
５３０　プログラムモジュール
５３２　プログラムデータ
５３４　キーボード
５３６　マウス
５３８　他のデバイス
５４０　入出力インターフェース
５４２　モニタ
５４４　ビデオアダプタ
５４６　プリンタ
５４８　リモートコンピューティングデバイス
５５０　ＬＡＮ
５５２　インターネット
５５４　ネットワークアダプタ
５５６　モデム
５５８　リモートアプリケーションプログラム
６００　中央処理ユニット
６０１　ゲームコンソール
６０２　メモリコントローラ
６０４　フラッシュＲＯＭメモリ
６０６　ＲＡＭメモリ
６０８　ハードディスクドライブ
６０９　ポータブルメディアドライブ
６１０　レベル１キャッシュ
６１２　レベル２キャッシュ
６１６　ＡＴＡケーブル
６２０　３Ｄグラフィックス処理ユニット
６２２　ビデオ符号器
６２４　オーディオ処理ユニット
６２６　オーディオコーデック
６２８　Ａ／Ｖポート
６３０　ＵＳＢホストコントローラ
６３２　ネットワークインターフェース
６３４（１）〜（８）　メモリユニット
６３６（１）〜（４）　コントローラ
６４０（１）〜（２）　デュアルコントローラポートサブアセンブリ
６４２　フロントパネルＩ／Ｏサブアセンブリ
６５０　システム電源モジュール
６５２　ファン
【図１】
2004015813.tif 000009
【図２】
2004015813.tif 000010
【図３】
2004015813.tif 000011
【図４】
2004015813.tif 000012
【図５】
2004015813.tif 000013
【図６】
2004015813.tif 000014
【図７】
2004015813.tif 000015
【図８】
2004015813.tif 000016
【図９】
2004015813.tif 000017