저는 지난 1월에 구글 플레이 스토어에, 3월에 애플 앱스토어에 도트레인저스 라는 게임을 출시하고 서비스를 하고 있습니다. 최초에 이 프로젝트를 시작하면서 자연스럽게 얻은 경험과 노하우들을 컨텐츠화 시켜서 공유하기로 마음먹었었는데, 이제 슬슬 서비스도 어느정도 안정화 됐고 유저도 많이 빠져나가서 ( ㅠ_ㅠ .. 아 눈물이.. ) 하나씩 내용을 정리해서 공유해보려 합니다.
오늘은 저와 같은 생계형 개발자를 괴롭히는 결제 크랙을 박아보는 방법에 대해서 소개하려 합니다.
도트레인저스는 두 스토어를 합쳐서 출시후 약 80,000 명정도의 유저가 게임을 다운 받아주셨고 ( 글로벌 판매중 ) 그중에서 약 75,000 명이 계정을 생성하고, 약 15,000 개정도의 결제 로그가 수집되었습니다. 그런데 그중 무려 약 14,000 회가 다 크랙 결제로 확인되었습니다. 시스템적으로 크랙 결제를 시도하면, 게임을 향후에 다시 플레이하지 못하도록 막아놨으니, 이를 막지않았다면 훨씬더 많은 양의 로그가 기록 되었겠죠.
의미없는 계산이지만, 크랙 결제가 실제 결제라 판단되면 거의 20억에 육박하는 매출이네요. 흑흑.
크랙 결제는, 안드로이드나 아이폰을 루팅해서 진행할 수 있는 것으로 알고 있습니다. 폰을 루팅하면, 결제 내역을 요청하는 서버 주소지가 변경되고 이를 통해서, 실제 결제가 아닌 가짜 결제가 진행되고, 가짜 영수증이 리턴 되는 형태로 진행이 되게 됩니다.
크랙 결제를 막기위해서는 먼저, 이렇게 받은 영수증의 내용을 검토해서, 구조가 엉성하거나, 정식 영수증과 패턴이 다르거나, 유효하지 않은 토큰등을 분석해서 가짜 여부를 막는 방법이 있습니다. 저도 과거에는 아무래도 모바일 네트환경이 전 세계적으로 원할하지 않다보니 이러한 방법을 통해서 가짜 여부를 파악했었습니다.
그런데 이번에 게임을 출시해보니 특히 애플쪽에서는 유효하지 않은 영수증으로 판단되는 영수증내용이 실제 영수증의 구조와 매우 유사하고, 구분하기가 쉽지 않더군요.
그래서 이번에는 직접 구글과 애플에서 제공하는 결제 검증 방법을 통해서 가짜 결제를 확인하는 방법을 사용했습니다. 결제가 발생했을때, 리턴되는 영수증을 구글과 애플로 검증 요청을 보내, 실제 유효한 영수증으로 판단되는 경우에만 게임 내 재화를 제공하는 방법을 사용하게 되었습니다.
이 방법을 통하면, 아무래도 결제진행에 다소 딜레이가 발생하게 되지만, 가장 정확하게 영수증 인증을 할 수 있는 방법이라고 생각합니다. 저희 게임은 Azure 에 구성해논 node 서버를 통해서 결제 검증 시스템을 구축해놨습니다.
다음은 저희 서버 개발을 도와준 친구가 node 기준으로 영수증 검증을 진행하는 절차를 설명한 내용입니다.
구글 플레이 스토어 결제 검증 방법
http://totuworld.github.io/2016/02/10/google-oauth/
애플 앱 스토어 결제 검증 방법
http://totuworld.github.io/2016/03/23/ios-validation/
이상하게 간략하게, 영수증 검증을 통한 결제 크랙을 막는 방법을 소개해봤습니다. 사실 저와 같은 1인, 혹은 소규모 개발팀은 결제 검증 절차를 구성하는 것이 조금 귀찮게 느껴질 수도있지만, 안하면 정말 어마어마한 양의 가짜 결제가 쌓이는 것을 볼 수 있게 됩니다. 조금 힘들더라도 위 내용을 참조하여 영수증 검증을 구축하시거나, 주변의 서버 개발자들의 도움을 받아서 구축해보시길 바랍니다.
좀 더 자세한 내용은 개인 블로그에서 자세하게 정리해놨습니다.
http://blog.soonsoons.com/220690243691
막 찍히는거보면 설레긴해요.
그걸 소규모 개발사에선 확인을 안 하면 당하는 거죠.
가짜 영수증을 들고 와서 결제했다고 물건 달라고 하는데 그 영수증 확인을 제대로 안하고 바로 물건을 주느냐 아니면 제대로 된 영수증인지 검증하고 주느냐의 차이라고 보시면 되는데 크랙을 하면 아무리 스토어에서 막는다고 가짜 영수증 들고 오는 건 못 막고 단지 영수증 진위 여부를 알려 줄가 있죠. 그 검증도 사용자 단말기가 아니고 앱 개발사 서버에서 확인을 해야 제대된 검증이 되는데 따로 외부 서버를 두기 어려운 영세 업자들은 이 과정을 무시하는 경우가 많죠.
비대칭키면 비밀키 없이 공개키만으로 암호화 해서 공개키로 verify 되는 키 생성이 쉽진 않을텐데요.
클량분이셨군요 ㅋㅋ
from CV
곧 써먹을일이 있을것같아 스크랩!
오히려 요즘은 탈옥이 안나오고 있죠.
요즘도 뚫립니다. 단지 본문처럼 서버에 인앱요구하여 하는방식은 해당기기나 아이디등 벤이지만 그게 아닌 일반인앱같은경우는 옛날부터 꽤나 쉬운편입니다;;
#CLiOS
from CV