2014-03-13 2 views
0

멀티 플레이어 HTML5 P2P 게임을 만들고 있습니다. WebRTC를 사용하여 서버없이 통신하고 싶습니다.WebRTC는 멀티 플레이어 HTML5 게임에 대한 속임수인가요?

브라우저에서 JS 수정을 방지 할 수있는 방법이 없다는 것을 알고 있지만, 어쨌든, 나는 알고 싶습니다. WebRTC는 충분히 안전합니까? 사용자가 패킷에 포함 된 내용을 즉시 수정할 수 있습니까? 아니면 DTLS + SRTP가이를 방지합니까? 다른 플레이어와 통신하는 경우, 사용자 B는 패킷이 작성된 이후에 수정되지 않았 음을 어떻게 확신 할 수 있습니까?

TLS에는 Diffie-Hellman 키 교환이 포함되어 있기 때문에 나는 그렇다고 말할 수 있습니다. 모든 통신은 SHA로 AES + 서명되어야합니다. 그래서 나는 그것이 안전하다고 생각하고 있습니다.

내가 틀렸어?

+4

물론 아닙니다. 적대적인 클라이언트로부터 데이터를 신뢰하는 것은 근본적으로 불가능합니다. – SLaks

+1

연결이 암호화되어 있으면 packed가 수정되지 않았 음을 확인할 수 있습니다. 그러나 피어 클라이언트를 신뢰하지 않으면 쓰여진 내용을 신뢰할 수 없습니다. – Bergi

답변

3

사용자가 패킷에 포함 된 내용을 수정할 수 있습니까?

또는 DTLS + SRTP는 것을 방지 않습니다 번호

? 다른 플레이어와 통신하는 경우 사용자 B는 이후에 패킷이 수정되지 않았 음을 어떻게 확인할 수 있습니까?

예.

그러나 신뢰하지 않으면 무엇을 그가 쓰지 못했습니다.

1

클라이언트의 아무 것도 속임수가 아닙니다. 브라우저는 사용자가 서버 (또는 사용자의 다른 사용자)에게 메시지를 보내는 수단 일뿐입니다. 결정된 악의적 인 개인이 브라우저없이 메시지를 직접 조작 할 수 있습니다.

두 명의 개인간에 전송 된 메시지를 제 3자가 읽거나 변경할 수 없도록 암호화됩니다. 두 사람 중 한 사람이 의도 한 것보다 정확히 다른 사람에게 메시지를 보내지 못하도록 막을 수는 없습니다.

당신이 할 수있는 것은 메시지가 다른 의미에서받은 각 클라이언트에서 그들이받은 컨텍스트에 맞는지 확인하는 것입니다. 간단한 예는 플레이어가 메시지를 보내는 체스 게임입니다 그것은 합법적으로 움직일 수없는 곳에서 그의 작품을 순간 이동시킵니다. 이 경우 두 플레이어가 게임의 상태를 알고 있으면 (필요하다고 생각합니다), 두 번째 플레이어는 무브가 무효이고 어떤 식 으로든 그에 응답합니다 (게임을 종료하거나 유효하지 않은 상태에서 복구하려고 시도 할 수 있음) .

관련 문제