연결 암호화
개요
Photon Fusion은 Photon Realtime의 기존 암호화 시스템의 기능을 확장하며, Fusion 클라이언트와 Fusion 서버 간의 종단 간 연결 암호화를 지원합니다. 이 향상된 기능은 피어 간 및 Photon Cloud와의 연결 암호화를 이미 지원하는 것에 추가됩니다.
Fusion 암호화 시스템은 키 생성부터 키 교환, 그리고 네트워크를 통해 전송되는 패킷의 실제 암호화/복호화에 이르기까지 연결 핸드 셰이크의 모든 세부 사항을 안전하게 처리합니다. 이로 인해 최소한의 처리 비용이 발생하지만, 오직 의도된 피어들만이 게임 세션 내 업데이트를 해석할 수 있도록 보장합니다.
아래 그림은 각 Fusion 피어가 여러 종류의 연결을 유지할 수 있음을 보여줍니다:
Cloud Connection
: 로컬 피어와 Photon Cloud 간의 연결입니다. 이 연결은 필수이며, 주로 매치메이킹에 사용되고 필요시 중계 역할을 수행할 수 있습니다. 모든 게임 모드(단일 플레이어 제외)는 최소한 이 유형의 연결을 유지합니다.Direct Connection
: 이 연결은Fusion Server
와Fusion Client
간의 직접 통신을 위해 설정됩니다.

기본 설정
암호화 설정은 간단합니다:
1. Datagram Encryption 네이티브 플러그인 다운로드 및 가져오기
사용 중인 플랫폼에 맞는 DatagramEncryption
플러그인을 받으려면 Photon 지원팀에 문의하세요.
이 플러그인은 크기와 사용 빈도가 낮아 기본 Fusion 패키지에는 포함되어 있지 않지만, 암호화 시스템이 제대로 작동하기 위해서는 필수적입니다.
플러그인을 제공받은 후, 프로젝트에 플러그인을 가져오는 방법에 대한 지침은 포함된 README 파일을 참조하세요.
2. Photon Cloud 연결 암호화
로컬 피어와 Photon Cloud 간의 연결 암호화를 활성화하려면, 다음 단계를 따르세요:
PhotonAppSettings
에셋을 엽니다.- 포트를
443
으로 설정합니다. Protocol
을UDP
로 설정합니다.AuthMode
를Auth Once Wss
로 설정합니다.Encryption Mode
에Datagram Encryption GCM
을 선택합니다.
이 설정은 로컬 피어와 Photon Cloud 간의 연결이 Datagram 수준에서 암호화되도록 보장합니다.
이는 Shared
모드에 대한 암호화를 포함합니다.
암호화 모드에 대한 자세한 정보는 암호화 모드 문서를 참조하세요.

3. Photon Fusion 직접 연결 암호화
NetworkProjectConfig
에셋에서 Fusion 암호화 시스템을 활성화하세요.
이는 Fusion Server
와 Fusion Client
간의 연결이 암호화된 방식으로 설정되어야 함을 의미합니다.
이 설정은 ClientServer
모드(Client
, Host
, Server
, AutoHostOrClient
)에만 영향을 미치며, 공유
모드에서는 로컬 피어와 Photon Cloud 간의 단일 연결만 존재합니다.

암호화 시스템 설명
패킷 암호화 시스템은 다음과 같은 잘 알려진 알고리즘과 지정된 설정을 적용하여 동작합니다:
- 고급 암호화 표준 (AES) (문서 페이지):
- 키 크기: 256비트;
- 모드: CipherMode.CBC (문서 페이지).
- 메시지 인증 코드 (HMAC):
- HMACSHA256 함수를 사용 (문서 페이지).
데이터 암호화 프로세스는 다음 단계로 설명할 수 있습니다:
- 데이터 암호화:
- 위 알고리즘을 사용하여 전체 버퍼를 암호화합니다.
- 패킷 내용을 기반으로 한
Hash
가 생성되어 데이터 버퍼에 추가됩니다.
- 데이터 복호화:
Hash
코드가 검증되며, 그렇지 않으면 패킷이 폐기됩니다.- 수신된 데이터 버퍼를 복호화 합니다.