次の方法で共有


パケット署名

パケット署名

Microsoft® DirectPlay® は、悪意のあるユーザーがにせのインターネット プロトコル (IP) パケットを送信し、ピアどうしまたはクライアントとサーバー間のリンクを破損させることを防ぐため、パケット署名を提供している。パケット署名は、送信前に各パケットに "署名" をアタッチする。この署名は 8 バイトである。受信したパケットに正しい署名がないと、DirectPlay は特に通知なしにパケットを無視する。

パケット署名はリンクを介して送信されるデータを暗号化せず、認証の形式も備えていない。パケット署名は、第三者が DirectPlay ゲーム セッションに無効なデータを挿入することを防ぐために使う。アプリケーションでゲームに接続するユーザーを認証する場合は、他の機構を使う必要がある。

ホストがセッションが開始するとき、パケット署名は設定される。ホストは、IDirectPlay8Peer::Host または IDirectPlay8Server::Host を呼び出すとき、DPN_APPLICATION_DESC 構造体に DPNSESSION_FAST_SIGNED フラグまたは DPNSESSION_FULL_SIGNED フラグを設定することで、署名のタイプを決定する。セッションに接続するプレーヤは、IDirectPlay8Peer::Connect または IDirectPlay8Client::Connect を呼び出すときにどちらかのフラグを設定できるが、ホストが選択した署名のタイプを使う。一度接続すると、クライアントは IDirectPlay8Peer::GetApplicationDesc または IDirectPlay8Client::GetApplicationDesc を呼び出すことで、セッションが使っている署名のタイプを確認できる。DPN_APPLICATION_DESC 構造体の dwFlags メンバは署名フラグの 1 つを格納する。

  セッションでパケット署名を使うには、すべてのプレーヤが Microsoft DirectX® 9.0 以降を使う必要がある。

簡易署名

簡易署名を使うと、ゲームへのオーバーヘッドは最小限にとどまる。行われる処理は、各パケットに同じ 8 バイト値を追加することだけである。作成するすべての DirectPlay セッションに簡易署名の使用をお勧めする。ただし、第三者ユーザーが交換されているパケットにアクセスし、この 8 バイト値を判別した場合、悪意のある攻撃を受けやすい。

完全署名

完全署名を使うと、ゲームに処理上のオーバーヘッドが加わる。送受信される各パケットは、署名を計算するため、再処理する必要がある。完全署名は Secure Hash Algorithm Version 1.0 を使う。セッションが一度確立すると、第三者ユーザーはパケットにアクセスできず、リンクが危害を受けることはない。ただし、第三者ユーザーが 2 台のコンピュータ間の初期接続シーケンスを読み取ると、場合によってはそのユーザーはリンクに危害を加えることができる。