接続の暗号化
概要
Photon Fusionは、既存のPhoton Realtimeの暗号化システムの機能を強化・拡張し、Fusionのクライアントとサーバー間のエンドツーエンド暗号化に対応しています。
安全な接続ハンドシェイク・鍵の生成と交換・実際にネットワークで送信されるパケットの暗号化/複合化は、すべてFusionの暗号化システムによって処理されます。最小の処理コストで、ゲームセッション内の対象のピアのみがデータを解読できることが保証されています。
Fusionのピアが維持できる接続タイプを、以下の図に示します。
Cloud Connection
:ローカルピアとPhoton Cloud間の接続になります。この接続は必須で、主にマッチメイキングや、必要に応じたリレー機能の提供に使用されます。すべてのモード(シングルプレイヤーモードを除く)は、少なくともこの接続を維持しています。Direct Connection
:Fusionのサーバーとクライアント間で直接通信するために確立される接続です。
![fusion peers connections](/docs/img/fusion/v2/manual/advanced/encryption/fusion-peers-connections.png)
基本セットアップ
暗号化のセットアップは簡単で、必要なステップは2つのみです。
1. Photon Cloud 接続の暗号化
PhotonAppSettings
アセットのEncryption Mode
で、Datagram Encryption GCM
を選択してください。
これによって、ローカルピアとPhoton Cloud間の接続が、データグラムレベルで暗号化されることが保証されます。
この設定は、特に共有モードでの暗号化をカバーします。
Encryption Mode
の詳細は、ドキュメントのEncryptionModeをご覧ください。
![network project config - encryption enabled](/docs/img/fusion/v2/manual/advanced/encryption/photon-app-settings-encryption-mode.png)
2. Photon Fusion ダイレクト接続の暗号化
NetworkProjectConfig
アセットから、Fusionの暗号化システムを有効にしてください。
これによって、Fusionのサーバーとクライアント間の接続が暗号化して確立されます。
これは、ホストモード(Client
・Host
・Server
・AutoHostOrClient
)にのみ影響します。共有モードは、ローカルピアとPhoton Cloud間の接続のみです。
![network project config - encryption enabled](/docs/img/fusion/v2/manual/advanced/encryption/network-project-config-enable-encryption.png)
暗号化システムについて
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).
データ暗号化プロセスは、以下のような流れになります。
- データの暗号化:
- 上記のアルゴリズムを使用して、全体のバッファを暗号化する
- パケットに内容に基づいたハッシュが生成され、バッファに追加される
- データの復号化:
- ハッシュを検証して、不正なパケットを破棄する
- 受信したバッファを復号化する