接続の暗号化
概要
Photon Fusionは、既存のPhoton Realtimeの暗号化システムの機能を強化・拡張し、Fusionのクライアントとサーバー間のエンドツーエンド暗号化に対応しています。
安全な接続ハンドシェイク・鍵の生成と交換・実際にネットワークで送信されるパケットの暗号化/複合化は、すべてFusionの暗号化システムによって処理されます。最小の処理コストで、ゲームセッション内の対象のピアのみがデータを解読できることが保証されています。
Fusionのピアが維持できる接続タイプを、以下の図に示します。
Cloud Connection
:ローカルピアとPhoton Cloud間の接続になります。この接続は必須で、主にマッチメイキングや、必要に応じたリレー機能の提供に使用されます。すべてのモード(シングルプレイヤーモードを除く)は、少なくともこの接続を維持しています。Direct Connection
:Fusionのサーバーとクライアント間で直接通信するために確立される接続です。
基本セットアップ
暗号化のセットアップは簡単です。
1. データグラム暗号化のネイティブプラグインのダウンロードとインポート
対象プラットフォームのDatagramEncryption
プラグインを取得したい場合は、Photonのサポートチームにご連絡ください。
プラグインはサイズが大きく稀にしか使用しないため、デフォルトのFusionパッケージには含まれていませんが、暗号化システムを正しく機能させるために必須となります。
プラグインを取得したら、プロジェクトへのインポート方法を解説しているREADMEファイルをお読みください。
2. Photon Cloud 接続の暗号化
ローカルピアとPhoton Cloud間の接続の暗号化を有効にするためのステップは以下の通りです。
PhotonAppSettings
アセットを開く- ポートを
443
に設定する Protocol
をUDP
に設定するAuthMode
をAuth Once Wss
に設定するEncryption Mode
でDatagram Encryption GCM
を選択する
これによって、ローカルピアとPhoton Cloud間の接続が、データグラムレベルで暗号化されることが保証されます。
この設定は、共有モードでの暗号化もカバーします。
Encryption Mode
の詳細は、ドキュメントのEncryptionModeをご覧ください。
3. Photon Fusion ダイレクト接続の暗号化
NetworkProjectConfig
アセットから、Fusionの暗号化システムを有効にしてください。
これによって、Fusionのサーバーとクライアント間の接続が暗号化して確立されます。
これは、ホストモード(Client
・Host
・Server
・AutoHostOrClient
)にのみ影響します。共有モードは、ローカルピアとPhoton Cloud間の接続のみです。
暗号化システムについて
Fusionの暗号化システムは、以下の有名なアルゴリズムを適用することで実現しています。
- Advanced Encryption Standard (AES) (doc page):
- Key Size: 256 bits;
- Mode: CipherMode.CBC (doc page).
- Message Authentication Code (HMAC):
- Using the HMACSHA256 function (doc page).
データ暗号化プロセスは、以下のような流れになります。
- データの暗号化:
- 上記のアルゴリズムを使用して、全体のバッファを暗号化する
- パケットに内容に基づいたハッシュが生成され、バッファに追加される
- データの復号化:
- ハッシュを検証して、不正なパケットを破棄する
- 受信したバッファを復号化する