接続の暗号化
概要
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).
データ暗号化プロセスは、以下のような流れになります。
- データの暗号化:
- 上記のアルゴリズムを使用して、全体のバッファを暗号化する
- パケットに内容に基づいたハッシュが生成され、バッファに追加される
- データの復号化:
- ハッシュを検証して、不正なパケットを破棄する
- 受信したバッファを復号化する