KR101891608B1 - 온라인 게임의 세션을 검증하는 방법 및 시스템 - Google Patents

온라인 게임의 세션을 검증하는 방법 및 시스템 Download PDF

Info

Publication number
KR101891608B1
KR101891608B1 KR1020170111247A KR20170111247A KR101891608B1 KR 101891608 B1 KR101891608 B1 KR 101891608B1 KR 1020170111247 A KR1020170111247 A KR 1020170111247A KR 20170111247 A KR20170111247 A KR 20170111247A KR 101891608 B1 KR101891608 B1 KR 101891608B1
Authority
KR
South Korea
Prior art keywords
game
session
seed value
random number
number generator
Prior art date
Application number
KR1020170111247A
Other languages
English (en)
Inventor
임윤섭
Original Assignee
주식회사 엔씨소프트
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 엔씨소프트 filed Critical 주식회사 엔씨소프트
Priority to KR1020170111247A priority Critical patent/KR101891608B1/ko
Application granted granted Critical
Publication of KR101891608B1 publication Critical patent/KR101891608B1/ko

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/71Game security or game management aspects using secure communication between game devices and game servers, e.g. by encrypting game data or authenticating players
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • Mathematical Optimization (AREA)
  • General Business, Economics & Management (AREA)
  • Computational Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Pinball Game Machines (AREA)

Abstract

온라인 게임 서버와 게임 클라이언트 간에 생성된 세션의 유효성을 검증하는 방법 및 시스템과 이를 위한 컴퓨터 프로그램이 개시된다. 본 발명에 따른 온라인 게임의 세션 검증 시스템은, 게임 서버로부터 수신되는 시드 값을 이용하여 난수 발생기를 초기화한 후 세션을 시작하고, 세션이 진행되는 동안 초기화된 난수 발생기에서 생성된 난수를 이용하여 게임을 진행하고, 세션의 종료시 세션 동안의 게임 로그를 포함하는 리플레이 패킷을 생성하되 난수 발생기의 초기화에 사용된 시드 값을 리플레이 패킷에 기록하는 게임 클라이언트와; 게임 클라이언트를 위해 난수 발생기의 초기화에 필요한 시드 값을 생성한 후 게임 클라이언트로 전송하고, 게임 클라이언트로부터 리플레이 패킷을 수신하면 수신된 리플레이 패킷에 포함된 시드 값과 게임 클라이언트로 전송한 시드 값을 비교하여 게임 클라이언트에서 진행된 세션을 검증하는 게임 서버;를 포함한다.

Description

온라인 게임의 세션을 검증하는 방법 및 시스템 {Method and system for verifying validation of a session in online game}
본 발명은 온라인 게임 시스템에 대한 것으로, 더 구체적으로는 온라인 게임 서버와 게임 클라이언트 간에 연결되는 통신 세션의 유효성을 검증하는 방법 및 시스템과 이를 위한 컴퓨터 프로그램에 대한 것이다.
인터넷 인프라의 보급에 힘입어 과거 스탠드 얼론 게임 위주였던 게임 시장은 점차 온라인 게임 위주로 재편되고 있다.
온라인 게임 인구가 급속도로 증가하고 수많은 온라인 게임들이 개발되었지만 아직까지 게임 보안에 대한 인식과 개념이 매우 약하다. 컴퓨터에서의 불법 프로그램을 핵 또는 해킹 프로그램이라고 하며, 게임에서의 핵 또는 해킹 프로그램을 게임 핵이라고 하는데, 이 게임 핵은 특정 게임 프로세스의 파일이나 메모리 등을 조작하는 프로그램을 가리킨다.
게임 핵은 게임의 메모리를 조작하여 능력치나 체력 등과 같은 특정 데이터를 바꾸어 주거나 격투기 게임의 경우 타격 속도나 타격 횟수를 증가시키고, 매크로 기능을 부여함으로써 게임을 손쉽게 이길 수 있도록 해준다. 이 때문에 많은 게이머들이 온라인 게임시 게임 핵을 설치하고 싶어한다. 그러나, 온라인 게임에서의 게임 핵 사용은 사용자들간의 밸런스 붕괴, 게임 서버의 부하 증가 등과 같은 문제를 일으킬 수 있다. 즉, 온라인 게임에서 일부 사용자들이 비정상적인 방법으로 이득을 보면서 게임 플레이를 하게 되면, 다른 사용자들과 볼공평한 경쟁이 되고, 심각한 경우에는 온라인 게임 전체의 밸런스가 깨지며 게임 서버에 과부하가 발생하게 된다.
따라서, 온라인 게임 서비스 제공자들은 게임 핵과 같은 정당하지 못한 게임 수행을 검출하고 방지하기 보안 기술의 강화에 힘쓰고 있으며, 그 일환으로 온라인 게임 서버와 클라이언트 간에 설정되는 통신 세션의 유효성을 효율적으로 검증하기 위한 방법을 연구하고 있다.
그러나, 종래의 온라인 게임 시스템에서는 게임 서버와 클라이언트 단말 간에 실시간 통신을 지원하는데에 많은 리소스가 소비되며 세션 검증에 있어서도 많은 통신량이 필요한다.
특히 종래의 기술에 있어서 실시간(Realtime)으로 구현되는 전투 혹은 종료시 전투 내역을 한번에 전달하는 방식은 다음과 같은 문제를 가지고 있다.
실시간 처리 방식의 경우 통신의 연속성이 보장되어야 하며, 모든 이벤트가 실시간으로 동기화되어야 한다. 따라서, 서버와 클라이언트가 전투 시작부터 끝날 때까지 데이터를 계속 해서 주고 받아야 하므로, 일반적으로 데이터를 모아서 한번에 보내는 것에 비해 2배 이상의 통신량이 필요하다. 예를 들어, 한 전투에서 100번의 공격이 일어났다면 실시간 시스템상에서는 100개 이상의 패킷을 주고 받아야 한다는 문제가 있다.
본 발명은 상기와 같은 종래 기술의 문제점을 해소하기 위한 것으로, 전투의 중간 과정을 전달하지 않고 1회의 매우 적은 데이터만으로 서버와 동기화할 수 있는 세션 검증 방법을 제공하는 것을 목적으로 한다.
상기와 같은 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 온라인 게임의 세션 검증 시스템은, 게임 서버로부터 수신되는 시드 값을 이용하여 난수 발생기를 초기화한 후 세션을 시작하고, 상기 세션이 진행되는 동안 상기 초기화된 난수 발생기에서 생성된 난수를 이용하여 게임을 진행하고, 상기 세션의 종료시 상기 세션 동안의 게임 로그를 포함하는 리플레이 패킷을 생성하되 상기 난수 발생기의 초기화에 사용된 시드 값을 상기 리플레이 패킷에 기록하는 게임 클라이언트와; 상기 게임 클라이언트를 위해 난수 발생기의 초기화에 필요한 시드 값을 생성한 후 상기 게임 클라이언트로 전송하고, 상기 게임 클라이언트로부터 리플레이 패킷을 수신하면 상기 수신된 리플레이 패킷에 포함된 시드 값과 상기 게임 클라이언트로 전송한 시드 값을 비교하여 상기 게임 클라이언트에서 진행된 세션을 검증하는 게임 서버;를 포함할 수 있다.
상기 게임 서버는, 상기 수신된 리플레이 패킷에 포함된 시드 값과 상기 게임 클라이언트로 전송한 시드 값이 일치하면, 해당 게임 세션이 유효하다고 판정하고 상기 리플레이 패킷에 기록된 게임 로그의 난수를 검사하여 악의적 조작 여부를 확인할 수 있다.
상기 게임 서버는, 상기 게임 클라이언트에서 진행되는 각 세션을 위해 난수 발생기의 초기화에 필요한 시드 값을 랜덤하게 생성하여 상기 게임 클라이언트로 전송하고, 상기 게임 클라이언트는, 상기 게임 서버로부터 시드 값을 수신할 때마다 수신된 시드 값을 이용하여 난수 발생기를 초기화할 수 있다.
본 발명의 다른 실시예에 따라 게임 서버와 게임 클라이언트를 포함하는 온라인 게임 시스템에서 온라인 게임의 세션을 검증하는 방법은, 상기 게임 서버가, 게임 클라이언트를 위해 난수 발생기의 초기화에 필요한 시드 값을 생성한 후 상기 게임 클라이언트로 전송하는 단계와; 상기 게임 클라이언트가, 상기 게임 서버로부터 수신되는 시드 값을 이용하여 난수 발생기를 초기화한 후 세션을 시작하고, 상기 세션이 진행되는 동안 상기 초기화된 난수 발생기에서 생성된 난수를 이용하여 게임 로그를 기록하는 단계와; 상기 게임 클라이언트가, 상기 세션의 종료시 상기 게임 로그를 포함하는 리플레이 패킷을 생성하되 상기 난수 발생기의 초기화에 사용된 시드 값을 상기 리플레이 패킷에 기록하여 상기 게임 서버로 전송하는 단계와; 상기 게임 서버가, 상기 게임 클라이언트로부터 리플레이 패킷을 수신하면 상기 수신된 리플레이 패킷에 포함된 시드 값과 상기 게임 클라이언트로 전송한 시드 값을 비교하여 상기 게임 클라이언트에서 진행된 세션을 검증하는 단계;를 포함할 수 있다.
상기 온라인 게임의 세션 검증 방법은, 상기 게임 서버가, 상기 수신된 리플레이 패킷에 포함된 시드 값과 상기 게임 클라이언트로 전송한 시드 값이 일치하면, 해당 게임 세션이 유효하다고 판정하고 상기 리플레이 패킷에 기록된 게임 로그의 난수를 검사하여 악의적 조작 여부를 판단하는 단계;를 더 포함할 수 있다.
본 발명의 또 다른 실시예에 따라 온라인 게임 시스템의 게임 서버가 게임 클라이언트에 서비스되는 온라인 게임의 세션을 검증하는 방법은, 상기 게임 클라이언트에서 시작되는 세션을 위해 난수 발생기의 초기화에 필요한 시드 값을 생성하여 상기 게임 클라이언트에 제공하는 단계와; 상기 게임 클라이언트로부터 해당 세션의 게임 로그와 해당 세션을 위한 난수 발생기의 초기화에 사용된 시드 값을 포함하는 리플레이 패킷을 수신하는 단계와; 상기 수신된 리플레이 패킷에 포함된 시드 값과 상기 게임 클라이언트로 전송한 해당 세션의 시드 값을 비교하여 상기 게임 클라이언트에서 진행된 세션을 검증하는 단계;를 포함할 수 있다.
상기 온라인 게임의 세션 검증 방법은, 상기 수신된 리플레이 패킷에 포함된 시드 값과 상기 게임 클라이언트로 전송한 시드 값이 일치하면, 해당 게임 세션이 유효하다고 판정하고 상기 리플레이 패킷에 기록된 게임 로그의 난수를 검사하여 악의적 조작 여부를 판단하는 단계;를 더 포함할 수 있다.
상기 시드 값 제공 단계에서, 상기 게임 클라이언트에서 게임이 초기화된 후 각 세션이 시작될 때마다 해당 세션의 난수 발생기를 초기화하기 위한 시드 값을 랜덤하게 생성하여 상기 게임 클라이언트로 전송할 수 있다.
본 발명의 또 다른 실시예에 따라 온라인 게임 시스템의 게임 클라이언트가 게임 서버에 의해 서비스되는 온라인 게임의 세션을 검증하는 방법은, 상기 게임 서버로부터 게임 세션의 난수 발생기를 초기화하는데 필요한 시드 값을 수신하는 단계와; 상기 게임 서버로부터 수신되는 시드 값을 이용하여 난수 발생기를 초기화한 후 세션을 시작하는 단계와; 상기 세션이 진행되는 동안 상기 초기화된 난수 발생기에서 생성된 난수를 이용하여 게임 로그를 기록하는 단계와; 상기 세션의 종료시 상기 게임 로그를 포함하는 리플레이 패킷을 생성하되 상기 게임 서버에 의한 세션 검증을 위해 상기 난수 발생기의 초기화에 사용된 시드 값을 상기 리플레이 패킷에 기록하는 단계와; 상기 생성된 리플레이 패킷을 상기 게임 서버로 전송하는 단계;를 포함할 수 있다.
본 발명에 의하면, 전투 중간과정을 전달하지 않고, 세션의 시작시 난수 발생기(Random Number Generator)의 시드(seed) 값만 전달해도 되기 때문에 1회의 매우 적은 데이터만으로 서버와 동기화 할 수 있고 세션의 유효성을 검증할 수 있다는 효과가 있다.
도 1은 본 발명의 일 실시예에 따라 온라인 게임의 세션을 검증하는 온라인 게임 시스템의 네트워크 구성을 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시예에 따라 온라인 게임 시스템에서 온라인 게임의 세션을 검증하는 방법을 설명하기 위한 순서도이다.
도 3은 본 발명의 일 실시예에 따라 온라인 게임 시스템의 게임 서버가 온라인 게임의 세션을 검증하는 방법을 설명하기 위한 순서도이다.
도 4는 본 발명의 일 실시예에 따라 온라인 게임 시스템의 게임 클라이언트가 온라인 게임의 세션을 검증하는 방법을 설명하기 위한 순서도이다.
본 명세서에서 사용되는 용어에 대해 간략히 설명하고, 본 발명에 대해 구체적으로 설명하기로 한다.
본 발명에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 "...수단", "...부", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
아래에서는 첨부한 도면을 참고하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
도 1은 본 발명의 일 실시예에 따라 온라인 게임의 세션을 검증하는 시스템의 네트워크 구성을 설명하기 위한 도면이다.
도 1을 참조하면, 온라인 게임의 세션 검증 시스템은 인터넷 등의 네트워크를 통해 사용자에게 게임 서비스를 제공하는 온라인 게임 서버(10)와, 온라인 게임 서버(10)에 접속하여 온라인 게임을 플레이하도록 하는 복수의 게임 클라이언트(11)를 포함한다.
온라인 게임 서버(10)는, 복수의 사용자 단말에 게임 서비스를 제공하며 각 게임 클라이언트(11)와의 사이에서 설정된 세션에 대해 난수 발생기(Randon Number Generator)의 시드(seed) 값을 제공함으로써 각 세션의 유효성을 검증하고 게임 로그를 검증한다.
온라인 게임 서버(10)는, 게임 클라이언트(11)를 위해 난수 발생기의 초기화에 필요한 시드 값을 생성한 후 게임 클라이언트(11)로 전송하고, 게임 클라이언트(11)로부터 리플레이 패킷을 수신하면 리플레이 패킷에 포함된 시드 값과 게임 클라이언트(11)로 전송했던 시드 값을 비교하여 게임 클라이언트에서 진행된 세션을 검증한다.
게임 클라이언트(11)는 게임 애플리케이션을 실행하여 온라인 게임 서비스를 사용자에게 제공하고, 게임 서버(10)로부터 수신한 시드 값을 이용하여 난수 발생기를 초기화한 후 세션을 시작하고 세션의 유효성 검증을 위해 세션 종료시 게임 서버(10)로 자신이 사용하고 있는 시드 값을 전송하며, 이를 위해 프로세서, 메모리, 통신 모듈, 입출력 장치 등을 구비하는 모바일 디바이스, 데스크탑 컴퓨터, 노트북 컴퓨터 등의 컴퓨팅 장치이다.
게임 클라이언트(11)는, 게임 서버(10)로부터 수신되는 시드 값을 이용하여 난수 발생기를 초기화한 후 세션을 시작하고, 세션이 진행되는 동안 난수 발생기에서 생성된 난수를 이용하여 게임을 진행하고, 세션의 종료시 세션 동안의 게임 로그를 포함하는 리플레이 패킷을 생성하되 상기 난수 발생기의 초기화에 사용된 시드 값을 리플레이 패킷에 기록한 후, 생성된 리플레이 패킷을 온라인 게임 서버(10)로 전송한다.
난수 발생기의 시드 값을 이용하여 온라인 게임 서버(10)와 게임 클라이언트(11) 간의 세션을 검증하는 방법에 대한 다양한 실시예는 도 2 내지 도 4를 참조하여 아래에서 더욱 상세히 설명하기로 한다.
도 2는 본 발명의 일 실시예에 따라 온라인 게임 시스템에서 온라인 게임의 세션을 검증하는 방법을 설명하기 위한 순서도이다.
도 2를 참조하면, 온라인 게임 서버(10)는 세션 시작 전에 시드 값(A)를 생성하여(S20) 게임 클라이언트(11)로 전송한다(S21). 시드 값(A)는 게임 클라이언트(11)가 세션 시작을 위해 난수 발생기를 초기화하는데 사용할 숫자이다.
온라인 게임 서버(10)는 게임 초기화시에 한번만 시드 값을 생성하여 게임 클라이언트(11)로 보내는 것이 아니라 자주 보내는 것이 바람직하다. 예를 들어, 게임 한판을 시작하거나 한판을 끝냈을 때 온라인 게임 서버(10)로부터 게임 클라이언트(11)로 보내는 소정의 패킷에 시드 값을 추가로 실어 보냄으로써, 각 게임 세션마다 새로운 시드 값을 사용하여 난수 발생기를 초기화하도록 할 수 있다. 이때, 온라인 게임 서버(10)는 게임 클라이언트(11)로 제공할 시드 값을 랜덤하게 발급할 수 있다.
게임 클라이언트(11)는 온라인 게임 서버(10)로부터 수신된 시드 값(A')을 이용하여 난수 발생기를 초기화하고(S23) 게임 세션을 시작한다(S23). 온라인 게임 서버(10)와 게임 클라이언트(11) 간의 세션 연결을 위해서 소정의 인증 과정이 필요할 수 있으며, 세션이 연결되고 나면 해당 게임 클라이언트(11)에 대한 온라인 게임이 실행되도록 한다.
이때 정상적인 게임 플레이라면 온라인 게임 서버(10)가 생성한 시드 값(A)과 게임 클라이언트(11)가 난수 발생기 초기화에 사용하는 시드 값(A')이 동일하겠지만, 그렇지 않은 경우는 시드 값(A)와 시드 값(A')이 일치하지 않을 것이다.
온라인 게임 서버(10)와 게임 클라이언트(11) 간의 세션이 설정되면, 게임 클라이언트(11)는 난수 발생기가 생성한 난수를 이용하여 게임을 진행하고 게임 로그를 기록한다. 대부분의 게임은 난수(Random Number)를 이용하여 재미를 창출한다. 각종 공격을 수행할 때마다 피해량을 결정하는데 난수를 사용할 수도 있고, 몬스터를 죽였을 경우 아이템을 획득할 확률의 산정에도 난수를 사용할 수 있다.
진행 중인 세션을 종료할 때, 게임 클라이언트(11)는 세션의 종료와 세션의 리플레이를 위한 데이터를 담은 리플레이 패킷을 생성하여 온라인 게임 서버(10)로 전송한다. 이 리플레이 패킷에는 세션 동안의 모든 게임 로그와 함께 세션의 난수 발생기 초기화에 사용된 시드 값이 기록될 것이다(S26).
온라인 게임 서버(10)는 자신이 보내준 시드 값(A)과 리플레이 패킷에 기록된 시드 값(A')을 비교하여 해당 세션이 유효한지 검증한다(S27). 시드 값(A)과 시드 값(A')이 일치하는지 확인하여 일치하는 경우는 세션이 유효하다고 판단한다.
다음으로 리플레이 패킷에 저장된 각종 게임 로그를 검증한다(S28).
일반적인 게임의 틀에서는 모든 난수가 완전히 독립적으로 난수가 되어야 하나, 컴퓨터의 난수 발생기에서는 난수의 시드 값이 동일하면 동일한 순서의 난수를 발생시킬 수 있다.
본 발명은 이 점을 이용해서 랜덤하게 발급한 시드 값을 통해 발생한 난수들을 이용하여 게임의 랜덤성을 보장한다. 또한, 본 발명의 온라인 게임 서버(10)는 특정 세션(예: 전투)에서 발생하는 모든 계산 결과를 랜덤하게 발급된 시드 값만으로 리플레이할 수 있게 된다.
단계 S28에서 검증되는 게임 로그는 악의적인 게임 조작 여부를 확인하기 위한 로그로서, 게임 클라이언트(11)와 온라인 게임 서버(10)가 동일한 시드 값을 사용했을 경우, 조작되지 않은 난수 발생기를 사용했다면 그에 의해 생성된 난수의 순서와 값이 동일할 것이며, 이를 확인하는 것이 게임 로그 검증 과정이다. 게임 로그의 난수와 난수 발생기에 의해 생성된 난수의 순서와 값이 동일하지 않은 경우는 정당하지 못한 온라인 게임 진행으로 판단될 수 있다.
도 3은 본 발명의 일 실시예에 따라 온라인 게임 시스템의 게임 서버가 온라인 게임의 세션을 검증하는 방법을 설명하기 위한 순서도이다.
도 3을 참조하면, 단계 S30에서 온라인 게임 서버(10)는 게임 클라이언트(11)에서 진행되는 각 세션을 위해 난수 발생기의 초기화에 필요한 시드 값 A를 생성하여 상기 게임 클라이언트로 전송한다.
다음으로 단계 S31에서는, 게임 클라이언트(11)로부터 리플레이 패킷을 수신한다. 리플레이 패킷은 세션 종료 및 세션 리플레이를 위한 정보를 포함하며, 게임 클라이언트(11)가 리플레이 패킷을 보내왔다는 것은 진행중인 세션이 종료되었음을 의미하므로 세션의 유효성을 검증할 필요가 있다.
단계 S32에서는 리플레이 패킷으로부터 해당 세션에 사용된 시드 값 A'를 독출한다. 리플레이 패킷의 미리 정해진 위치에 시드 값이 기록되어 전송될 것이므로, 해당 위치를 읽어 시드 값을 획득할 수 있다. 리플레이 패킷으로부터 독출한 시드 값 A'와 게임 클라이언트로 전송했던 시드 값 A가 일치하면(S33), 해당 게임 세션이 유효하므로 세션 검증이 성공한 것이다(S34).
세션 검증에 성공한 경우는 단계 S36의 전투 로그 검증으로 진행하여 리플레이 패킷에 기록된 게임 로그의 난수를 검사하여 악의적 조작 여부를 확인한다.
리플레이 패킷으로부터 독출한 시드 값 A'와 게임 클라이언트로 전송했던 시드 값 A가 일치하지 않는 경우는(S33), 세션 검증에 실패한 것이므로 시스템 관리자에게 알리는 등 그에 따른 조치를 수행한다.
도 4는 본 발명의 일 실시예에 따라 온라인 게임 시스템의 게임 클라이언트가 온라인 게임의 세션을 검증하는 방법을 설명하기 위한 순서도이다.
온라인 게임 서버(10)는 게임 클라이언트(11)에서 진행되는 각 세션을 위해 난수 발생기의 초기화에 필요한 시드 값을 생성하여 게임 클라이언트로 전송한다. 게임 클라이언트(11)는 세션 시작 전에 게임 서버(10)로부터 시드 값을 수신하게 된다(S40).
게임 클라이언트(11)는 게임 서버(10)로부터 시드 값을 수신하고 수신된 시드 값을 이용하여 난수 발생기를 초기화한 후에 세션 연결을 진행하고 게임(전투)을 시작한다(S41).
다음으로 초기화된 난수 발생기가 생성하는 난수를 이용하여 세션을 진행하는데, 구체적으로는 세션이 진행되는 동안 발생기에서 생성된 난수를 이용하여 전투에서 사용되는 스킬의 min/max 데미지를 계산하거나 크리티컬 확률을 계산하여 게임을 진행하며, 이 난수를 이용하여 게임 로그를 기록한다(S42).
세션이 종료되면, 게임 로그를 포함하는 리플레이 패킷을 생성하되 난수 발생기의 초기화에 사용된 시드 값을 상기 리플레이 패킷의 정해진 위치에 기록한다(S43). 생성된 리플레이 패킷은 게임 서버(10)로 전송되며(S44), 리플레이 패킷에 기록된 시드 값은 게임 서버(10)에 의한 세션 검증에 사용될 것이다.
본 발명의 일 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속한다.
10: 온라인 게임 서버
11: 게임 클라이언트

Claims (12)

  1. 게임 서버로부터 수신되는 시드 값을 이용하여 난수 발생기를 초기화한 후 세션을 시작하고, 상기 세션이 진행되는 동안 상기 초기화된 난수 발생기에서 생성된 난수를 이용하여 게임을 진행하고, 상기 세션의 종료시 상기 세션 동안의 게임 로그를 포함하는 리플레이 패킷을 생성하되 상기 난수 발생기의 초기화에 사용된 시드 값을 상기 리플레이 패킷에 기록하는 게임 클라이언트와;
    상기 게임 클라이언트를 위해 난수 발생기의 초기화에 필요한 시드 값을 생성한 후 상기 게임 클라이언트로 전송하고, 상기 게임 클라이언트로부터 리플레이 패킷을 수신하면 상기 수신된 리플레이 패킷에 포함된 시드 값과 상기 게임 클라이언트로 전송한 시드 값을 비교하여 상기 게임 클라이언트에서 진행된 세션을 검증하는 게임 서버;를 포함하는 것을 특징으로 하는 온라인 게임의 세션 검증 시스템.
  2. 제1항에 있어서,
    상기 게임 서버는, 상기 수신된 리플레이 패킷에 포함된 시드 값과 상기 게임 클라이언트로 전송한 시드 값이 일치하면, 해당 게임 세션이 유효하다고 판정하고 상기 리플레이 패킷에 기록된 게임 로그의 난수를 검사하여 악의적 조작 여부를 확인하는 것을 특징으로 하는 온라인 게임의 세션 검증 시스템.
  3. 제1항에 있어서,
    상기 게임 서버는, 상기 게임 클라이언트에서 진행되는 각 세션을 위해 난수 발생기의 초기화에 필요한 시드 값을 랜덤하게 생성하여 상기 게임 클라이언트로 전송하고,
    상기 게임 클라이언트는, 상기 게임 서버로부터 시드 값을 수신하면 수신된 시드 값을 이용하여 해당 세션의 난수 발생기를 초기화하는 것을 특징으로 하는 온라인 게임의 세션 검증 시스템.
  4. 게임 서버와 게임 클라이언트를 포함하는 온라인 게임 시스템에서 온라인 게임의 세션을 검증하는 방법에 있어서, 상기 온라인 게임의 세션 검증 방법은,
    상기 게임 서버가, 게임 클라이언트를 위해 난수 발생기의 초기화에 필요한 시드 값을 생성한 후 상기 게임 클라이언트로 전송하는 단계와;
    상기 게임 클라이언트가, 상기 게임 서버로부터 수신되는 시드 값을 이용하여 난수 발생기를 초기화한 후 세션을 시작하고, 상기 세션이 진행되는 동안 상기 초기화된 난수 발생기에서 생성된 난수를 이용하여 게임 로그를 기록하는 단계와;
    상기 게임 클라이언트가, 상기 세션의 종료시 상기 게임 로그를 포함하는 리플레이 패킷을 생성하되 상기 난수 발생기의 초기화에 사용된 시드 값을 상기 리플레이 패킷에 기록하여 상기 게임 서버로 전송하는 단계와;
    상기 게임 서버가, 상기 게임 클라이언트로부터 리플레이 패킷을 수신하면 상기 수신된 리플레이 패킷에 포함된 시드 값과 상기 게임 클라이언트로 전송한 시드 값을 비교하여 상기 게임 클라이언트에서 진행된 세션을 검증하는 단계;를 포함하는 것읕 특징으로 하는 온라인 게임의 세션 검증 방법.
  5. 제4항에 있어서,
    상기 게임 서버가, 상기 수신된 리플레이 패킷에 포함된 시드 값과 상기 게임 클라이언트로 전송한 시드 값이 일치하면, 해당 게임 세션이 유효하다고 판정하고 상기 리플레이 패킷에 기록된 게임 로그의 난수를 검사하여 악의적 조작 여부를 판단하는 단계;를 더 포함하는 것읕 특징으로 하는 온라인 게임의 세션 검증 방법.
  6. 제4항 또는 제5항의 온라인 게임의 세션 검증 방법을 수행하기 위해 기록매체에 기록된 컴퓨터 프로그램.
  7. 온라인 게임 시스템의 게임 서버가 게임 클라이언트에 서비스되는 온라인 게임의 세션을 검증하는 방법에 있어서, 상기 온라인 게임의 세션 검증 방법은,
    상기 게임 클라이언트에서 시작되는 세션을 위해 난수 발생기의 초기화에 필요한 시드 값을 생성하여 상기 게임 클라이언트에 제공하는 단계와;
    상기 게임 클라이언트로부터 해당 세션의 게임 로그와 해당 세션을 위한 난수 발생기의 초기화에 사용된 시드 값을 포함하는 리플레이 패킷을 수신하는 단계와;
    상기 수신된 리플레이 패킷에 포함된 시드 값과 상기 게임 클라이언트로 전송한 해당 세션의 시드 값을 비교하여 상기 게임 클라이언트에서 진행된 세션을 검증하는 단계;를 포함하는 것을 특징으로 하는 온라인 게임의 세션 검증 방법.
  8. 제7항에 있어서,
    상기 수신된 리플레이 패킷에 포함된 시드 값과 상기 게임 클라이언트로 전송한 시드 값이 일치하면, 해당 게임 세션이 유효하다고 판정하고 상기 리플레이 패킷에 기록된 게임 로그의 난수를 검사하여 악의적 조작 여부를 판단하는 단계;를 더 포함하는 것을 특징으로 하는 온라인 게임의 세션 검증 방법.
  9. 제7항에 있어서,
    상기 시드 값 제공 단계에서, 상기 게임 클라이언트에서 게임이 초기화된 후 각 세션이 시작될 때마다 해당 세션의 난수 발생기를 초기화하기 위한 시드 값을 랜덤하게 생성하여 상기 게임 클라이언트로 전송하는 것을 특징으로 하는 온라인 게임의 세션 검증 방법.
  10. 제7항 내지 제9항 중 어느 한 항의 온라인 게임의 세션 검증 방법을 수행하기 위해 기록매체에 기록된 컴퓨터 프로그램.
  11. 온라인 게임 시스템의 게임 클라이언트가 게임 서버에 의해 서비스되는 온라인 게임의 세션을 검증하는 방법에 있어서, 상기 온라인 게임의 세션 검증 방법은,
    상기 게임 서버로부터 게임 세션의 난수 발생기를 초기화하는데 필요한 시드 값을 수신하는 단계와;
    상기 게임 서버로부터 수신되는 시드 값을 이용하여 난수 발생기를 초기화한 후 세션을 시작하는 단계와;
    상기 세션이 진행되는 동안 상기 초기화된 난수 발생기에서 생성된 난수를 이용하여 게임 로그를 기록하는 단계와;
    상기 세션의 종료시 상기 게임 로그를 포함하는 리플레이 패킷을 생성하되 상기 게임 서버에 의한 세션 검증을 위해 상기 난수 발생기의 초기화에 사용된 시드 값을 상기 리플레이 패킷에 기록하는 단계와;
    상기 생성된 리플레이 패킷을 상기 게임 서버로 전송하는 단계;를 포함하는 것읕 특징으로 하는 온라인 게임의 세션 검증 방법.
  12. 제11항의 온라인 게임의 세션 검증 방법을 수행하기 위해 기록매체에 기록된 컴퓨터 프로그램.
KR1020170111247A 2017-08-31 2017-08-31 온라인 게임의 세션을 검증하는 방법 및 시스템 KR101891608B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170111247A KR101891608B1 (ko) 2017-08-31 2017-08-31 온라인 게임의 세션을 검증하는 방법 및 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170111247A KR101891608B1 (ko) 2017-08-31 2017-08-31 온라인 게임의 세션을 검증하는 방법 및 시스템

Publications (1)

Publication Number Publication Date
KR101891608B1 true KR101891608B1 (ko) 2018-08-24

Family

ID=63454155

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170111247A KR101891608B1 (ko) 2017-08-31 2017-08-31 온라인 게임의 세션을 검증하는 방법 및 시스템

Country Status (1)

Country Link
KR (1) KR101891608B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020144864A1 (ja) * 2019-01-11 2020-07-16 日本電気株式会社 乱数生成システム及び乱数生成方法
KR20200109938A (ko) * 2019-03-15 2020-09-23 팝조이 주식회사 실시간 서버-클라이언트 간 동기화 통신의 효율성을 제고하는 ai 시스템 및 이를 이용한 게임 컨텐츠 제공 방법
KR102425439B1 (ko) * 2021-12-27 2022-07-27 주식회사 엔게이트 온라인 및 오프라인 플레이가 가능한 게임에서 오프라인 플레이어의 게임데이터 변조방지 서버 및 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999012135A1 (en) 1997-09-02 1999-03-11 Quixotic Solutions Inc. Apparatus and process for verifying honest gaming transactions over a communications network
JP2006006473A (ja) 2004-06-23 2006-01-12 Sega Corp オンラインゲーム不正検出方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999012135A1 (en) 1997-09-02 1999-03-11 Quixotic Solutions Inc. Apparatus and process for verifying honest gaming transactions over a communications network
JP2006006473A (ja) 2004-06-23 2006-01-12 Sega Corp オンラインゲーム不正検出方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020144864A1 (ja) * 2019-01-11 2020-07-16 日本電気株式会社 乱数生成システム及び乱数生成方法
JPWO2020144864A1 (ja) * 2019-01-11 2021-11-25 日本電気株式会社 乱数生成システム及び乱数生成方法
JP7211437B2 (ja) 2019-01-11 2023-01-24 日本電気株式会社 乱数生成システム及び乱数生成方法
KR20200109938A (ko) * 2019-03-15 2020-09-23 팝조이 주식회사 실시간 서버-클라이언트 간 동기화 통신의 효율성을 제고하는 ai 시스템 및 이를 이용한 게임 컨텐츠 제공 방법
KR102223427B1 (ko) * 2019-03-15 2021-03-05 팝조이 주식회사 실시간 서버-클라이언트 간 동기화 통신의 효율성을 제고하는 ai 시스템 및 이를 이용한 게임 컨텐츠 제공 방법
KR102425439B1 (ko) * 2021-12-27 2022-07-27 주식회사 엔게이트 온라인 및 오프라인 플레이가 가능한 게임에서 오프라인 플레이어의 게임데이터 변조방지 서버 및 방법

Similar Documents

Publication Publication Date Title
US7480656B2 (en) Active validation of network devices
US10124260B2 (en) Invalidating network devices with illicit peripherals
Kabus et al. Addressing cheating in distributed MMOGs
US7636783B2 (en) Trial-before-purchase subscription game infrastructure for peer-peer networks
US20040078572A1 (en) Method of validating performance of a participant in an interactive computing environment
Webb et al. Cheating in networked computer games: a review
JP5877845B2 (ja) ゲームにおけるラグスイッチのチートの検出
KR101891608B1 (ko) 온라인 게임의 세션을 검증하는 방법 및 시스템
KR20060129983A (ko) 게임진행 중 광고노출을 통한 게임콘텐츠 무료제공시스템및 그 방법
US10463971B2 (en) System and method for validating video gaming data
US20200188793A1 (en) System and Method for Validating Video Gaming Data
US7584154B1 (en) Arbitration of online game results using an arbitration server and method
CN105721173A (zh) 游戏数据传递方法、装置以及系统
CN113827955B (zh) 游戏数据处理方法及装置、存储介质、电子设备
CN105897555A (zh) 个人电脑端与移动端游戏账号互通的方法
US9364761B1 (en) Using crowd-sourcing to verify the accuracy of results of client-side determinations
KR20170141380A (ko) 사용자 매칭 장치 및 방법
US8607324B2 (en) Untrusted gaming system access to online gaming service
KR20130082846A (ko) 시뮬레이션서버를 이용한 온라인게임 보안강화 시스템 및 보안강화 방법
CN115734811A (zh) 用于管理在线游戏的装置及其方法和系统
US11213754B2 (en) Video game center for a controlled environment facility
US11520776B1 (en) Consensus protocol for blockchain structure
KR20120079621A (ko) 게임 서비스 시스템, 그의 부정 행위 방지를 위한 게임 서비스 장치 및 게임 실행 방법
CN114528069B (zh) 在信息安全竞赛中提供有限监管上网服务的方法及设备
Fan et al. A Secure Cloud Gaming System.

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant