認証

Relay は以下の複数のレイヤーで構成される認証を使用して、サービス全体にわたり安全な通信を確立します。

UAS 認証

UAS 認証は HTTP ベースであり、割り当てサービスLobby などの Unity の他のサービスと通信します。

割り当てをリクエストする前に、ゲームクライアントは UAS を使用してアクセストークンを取得し、そのトークンを割り当てリクエストの Authorization ヘッダーに渡す必要があります。

Relay BIND メッセージ認証

Relay 認証では、プレイヤー の認証に HMAC 署名を使用します。その安全な署名には、秘密鍵と nonce 値が使用されます。

HMAC と共有シークレット

ハッシュベースメッセージ認証コード (HMAC、hash-based message authentication code) とは、暗号学的ハッシュ関数とキーを使用してメッセージを認証する、メッセージ認証コードのことです。Relay は Relay サーバー から生成された共有秘密鍵を使用して、接続データがあり nonce が増加する HMAC に署名します。

クライアントの IP アドレスまたはポート番号が変更された場合、指定された nonce は、リプレイ攻撃を軽減するために、最後の既知の値 (前の nonce) よりも大きい値である必要があります。ただし、同じ IP アドレスおよびポート番号から再バインドする場合は、クライアント側で nonce を増加する必要はありません。

DTLS 認証

DTLS 認証は、BIND メッセージ の認証に使用される HMAC 秘密鍵と同じ値の事前共有鍵 (PSK) を使用します。DTLS ハンドシェイク内の PSK ヒントは、割り当て ID と一致します。DTLS 暗号化 を参照してください。