Flash 앱에서 서버로 변조되지 않은 데이터를 전달하고 계십니까?

StackOverflow https://stackoverflow.com/questions/46415

  •  09-06-2019
  •  | 
  •  

문제

저는 Flash를 실행하는 클라이언트와 서버 간에 데이터를 안전하게 전달하는 방법을 찾고 있습니다.문제의 데이터는 Flash 앱에 의해 생성되며, 이 경우 게임을 마친 후의 점수입니다.서버의 데이터가 변조되지 않았는지 확인하고 싶습니다.이 작업을 수행하는 좋은 방법은 무엇입니까?

한 가지 간단한 방법은 해시와 같은 데이터에 대해 일부 작업을 수행하고 해시를 데이터와 함께 서버에 다시 전달하는 것입니다.그러나 이는 클라이언트 소스 코드에 접근할 수 있는 누군가에 의해 쉽게 깨질 수 있습니다.

편집하다:해킹할 수 없는 일은 없다는 것을 알고 있지만 최대한 어렵게 만들고 싶습니다.공개 키를 사용하여 데이터를 암호화하고 선택적으로 게임 로그를 사용하여 온전성 검사 및/또는 재계산을 수행하는 @jcnnghm의 솔루션이 제가 생각하는 최선의 선택입니다.SSL 암호화도 좋은 생각입니다. 이렇게 하면 실제로 서버로 다시 전송되는 내용을 해독하기가 더 어려워지기 때문입니다.

도움이 되었습니까?

해결책

바이너리에 저장된 공개 키로 데이터를 암호화합니다.그러면 공격에 대한 진입 장벽이 높아집니다.또한 데이터가 서버에 도착하면 온전한 상태인지 확인합니다.이는 플레이 시간 단위당 현실적으로 획득할 수 있는 최대 포인트 수를 계산하거나, 점수가 올바른지 확인하기 위해 게임 로그를 서버로 다시 전송하는 것만큼 간단할 수 있습니다.

무엇을 하든 완전히 해킹을 방지할 수 있는 것은 없지만 가장 결단력 있는 사람 외에는 모든 것을 막을 수 있습니다.

업데이트: @표시:Flash는 기본적으로 SSL을 지원합니다.

다른 팁

신뢰할 수 없는 플랫폼 위에서 실행되는 코드가 무결성을 유지할 수 있습니까?아니요, 수십 년 동안 깨진 복사 방지 체계로 인해 이것이 불가능하다고 가정하게 되었습니다.신뢰할 수 있는 샌드박스에서 실행되는 역악성 코드는 가능하지만 문제를 해결하기 위해 할 수 있는 최선은 사람들이 속이는 것을 불편하게 만드는 것입니다.

AS3Crypto 패키지를 확인하세요. http://code.google.com/p/as3crypto/.시도하지는 않았지만 이 패키지는 TLS 1.0 프로토콜을 (부분적으로) 지원한다고 주장합니다.

TLS는 Flash 애플리케이션과 서버 사이에 보안 터널을 제공합니다.http://en.wikipedia.org/wiki/Secure_Sockets_Layer

@jcnnghm 일반적으로 대량 계산 시간으로 인해 대량 데이터 암호화에 공개 키 암호화 (RSA)를 사용하고 싶지 않습니다.공개 키 암호화는 보안 프로토콜의 핸드셰이킹 및 키 동의 단계에서 사용되어야 하지만 대량 데이터 암호화는 AES 및 TDES와 같은 대칭 암호화로 처리되어야 합니다.TLS 및 SSL 프로토콜은 이러한 방식으로 작동합니다.

사람들이 실행 파일에 접근할 수 있는 한(잠긴 키오스크에서 게임을 실행하려는 경우가 아니면 항상 그렇습니다) 완벽하게 안전한 방법은 없습니다.

음악과 영화 산업은 집에서 취미 생활을 하는 사람들이 며칠이나 몇 주 만에 해독한 DRM에 수천만 달러를 소비했습니다.그들이 보호할 수 없다면 그들의 물건...

나는 아무것도 해커 증거가 아니라는 답변에 동의합니다.일단 읽을 수 있으면 조작/복사하여 디컴파일할 수 있기 때문입니다.

제가 계획하고 있는 또 다른 접근 방식은 고유 키 pr을 생성하는 것입니다.플레이어 세션(솔트 값으로 시간/날짜 포함)

그런 다음 애플리케이션을 통해 주기적으로 상태 점수를 제출/전송하고 새로운 유효한 키를 얻을 수 있습니다.이 동기화가 실패하면 전체 세션이 중단됩니다.

이에 대한 단점은 동시 플레이어가 너무 많아 서버의 응답 속도를 저하시켜 "가짜 시간 초과"를 만들고 DoS 공격을 위해 게임 서버를 열어 둔다는 것입니다.

그러나 사용자가 세션을 갖고 있는 동안 "세션 키"를 갱신하는 기능은 약간의 추가 세션 관리가 필요하지만 부정 행위자가 좀 더 열심히 일하게 만들면 시도해 볼 것입니다. o)

반면에 NOTHING은 해커 방지 기능이 없으므로 100% 신뢰하지 마십시오. 아무리 뛰어난 솔루션을 생각해내더라도 마찬가지입니다.

마지막 참고 사항은 애플리케이션을 모듈/레벨 등으로 나누는 것입니다.코드를 시작하기만 하면 코드의 모든 부분에 액세스할 수는 없습니다.

현재 내 계획은 대규모 다단계 세계를 구축하는 것이며 클라이언트/플레이어는 플레이어가 있는 부분에만 첨부된 파일을 가져옵니다.

이것이 당신의 생각에 도움이 되기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top