KR102190359B1 - 무결성 검증 방법 및 장치 - Google Patents

무결성 검증 방법 및 장치 Download PDF

Info

Publication number
KR102190359B1
KR102190359B1 KR1020190047754A KR20190047754A KR102190359B1 KR 102190359 B1 KR102190359 B1 KR 102190359B1 KR 1020190047754 A KR1020190047754 A KR 1020190047754A KR 20190047754 A KR20190047754 A KR 20190047754A KR 102190359 B1 KR102190359 B1 KR 102190359B1
Authority
KR
South Korea
Prior art keywords
value
user terminal
functions
authentication
authentication value
Prior art date
Application number
KR1020190047754A
Other languages
English (en)
Other versions
KR20200124436A (ko
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 KR1020190047754A priority Critical patent/KR102190359B1/ko
Publication of KR20200124436A publication Critical patent/KR20200124436A/ko
Application granted granted Critical
Publication of KR102190359B1 publication Critical patent/KR102190359B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2109Game systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Multimedia (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Telephonic Communication Services (AREA)

Abstract

무결성 검증 방법 및 장치가 개시된다. 무결성 검증 방법은 서버에 일회성 키 값에 대한 생성 요청 데이터를 전송하는 단계, 생성 요청 데이터의 전송에 응답하여, 서버로부터 일회성 키 값을 수신하는 단계, 키 값과 사용자 단말의 식별 값에 기초하여, 복수의 인증 값 생성 함수들 중 일부의 인증 값 생성 함수들을 선택하고, 선택된 일부의 인증 값 생성 함수들을 이용하여 인증 값을 생성하는 단계, 인증 값을 서버에 전송하는 단계 및 인증 값의 전송에 응답하여, 서버로부터 무결성 검증 결과에 대한 검증 결과 정보를 수신하는 단계를 포함한다.

Description

무결성 검증 방법 및 장치{METHOD AND APPARATUS FOR VERIFICATION OF INTEGRITY}
아래 실시예들은 무결성 검증 기술에 관한 것이다.
게임에 대하여 악의적인 사용자들이 불법적인 방법으로 게임에 접근하여, 게임 상의 정상적인 운영 및 정상적인 플레이를 방해하고, 부당한 이득을 취하는 경우가 계속해서 발생하고 있다. 이는 게임 운영자뿐만 아니라 게임 유저들에게도 악영향을 끼칠 수 있다.
게임 운영자는 무결성 검증을 통해, 게임 유저의 계정과 관련된 인증 정보를 변조하여 게임에 접근을 시도하는 악의적인 사용자들의 접근을 방지할 수 있다. 그러나, 기존의 무결성 검증 방법은 고정된 로직(Logic)을 통해 인증 값을 생성하여, 무결성을 검증하기 때문에, 고정된 로직이 유출되면 수많은 악의적인 사용자들의 접근을 막을 수 없다는 한계가 있다.
악의적인 사용자들의 변조 및 우회를 통해 게임에 대한 부당한 접근 방법은 정당한 게임 유저 및 게임 운영자에게 큰 위협이 되기 때문에, 이를 효과적으로 막을 수 있는 방안이 요구된다.
일 실시예에 따른 사용자 단말에 의해 수행되는 무결성 검증 방법은, 서버에 일회성 키(Key) 값에 대한 생성 요청 데이터를 전송하는 단계; 상기 생성 요청 데이터의 전송에 응답하여, 상기 서버로부터 일회성 키 값을 수신하는 단계; 상기 키 값과 상기 사용자 단말의 식별 값에 기초하여, 복수의 인증 값 생성 함수들 중 일부의 인증 값 생성 함수들을 선택하고, 상기 선택된 일부의 인증 값 생성 함수들을 이용하여 인증 값을 생성하는 단계; 상기 인증 값을 상기 서버에 전송하는 단계; 및 상기 인증 값의 전송에 응답하여, 상기 서버로부터 무결성 검증 결과에 대한 검증 결과 정보를 수신하는 단계를 포함할 수 있다.
상기 요청데이터를 전송하는 단계는, 상기 사용자 단말의 상기 식별 값을 상기 서버에 더 전송하는 단계를 포함할 수 있다.
상기 인증 값을 생성하는 단계는, 상기 일회성 키 값 및 상기 식별 값에 기초하여 선택될 함수들의 개수를 결정하는 단계를 포함할 수 있다.
상기 인증 값을 생성하는 단계는, 상기 일회성 키 값, 상기 식별 값 및 상기 개수에 기초하여 상기 복수의 인증 값 생성 함수들 중 일부의 인증 값 생성 함수들을 선택하는 단계를 포함할 수 있다.
상기 인증 값을 생성하는 단계는, 무결성 검증이 필요한 파일의 해쉬(Hash) 값, 무결성 검증이 필요한 메모리 영역의 해쉬 값 및 상기 선택된 함수들의 고유 값에 기초하여 상기 인증 값을 생성하는 단계를 포함할 수 있다.
일 실시예에 따른 서버에 의해 수행되는 무결성 검증 방법은, 사용자 단말로부터 일회성 키 값에 대한 생성 요청 데이터를 수신하는 경우, 일회성 키 값을 생성하는 단계; 상기 일회성 키 값을 상기 사용자 단말에 전송하는 단계; 상기 사용자 단말로부터 상기 사용자 단말에 의해 생성된 인증 값을 수신하는 경우, 상기 키 값과 상기 사용자 단말의 식별 값에 기초하여, 복수의 인증 값 생성 함수들 중 일부의 인증 값 생성 함수들을 선택하고, 상기 선택된 일부의 인증 값 생성 함수들을 이용하여 인증 값을 생성하는 단계; 상기 사용자 단말로부터 수신한 인증 값과 상기 생성된 인증 값에 기초하여 상기 사용자 단말의 무결성 검증 결과를 결정하는 단계; 및 상기 무결성 검증 결과에 대한 검증 결과 정보를 상기 사용자 단말에 전송하는 단계를 포함할 수 있다.
상기 인증 값을 생성하는 단계는, 상기 일회성 키 값 및 상기 식별 값에 기초하여 선택될 함수들의 개수를 결정하는 단계를 포함할 수 있다.
상기 인증 값을 생성하는 단계는, 상기 일회성 키 값, 상기 식별 값 및 상기 개수에 기초하여 상기 복수의 인증 값 생성 함수들 중 일부의 인증 값 생성 함수들을 선택하는 단계를 포함할 수 있다.
상기 인증 값을 생성하는 단계는, 무결성 검증이 필요한 파일의 해쉬 값, 무결성 검증이 필요한 메모리 영역의 해쉬 값 및 상기 선택된 함수들의 고유 값에 기초하여 상기 인증 값을 생성하는 단계를 포함할 수 있다.
상기 무결성 검증 결과를 결정하는 단계는, 상기 사용자 단말로부터 수신한 인증 값과 상기 생성된 인증 값의 일치 여부에 기초하여 상기 무결성 검증 결과를 결정하는 단계를 포함할 수 있다.
상기 사용자 단말로부터 수신한 인증 값과 상기 생성된 인증 값이 일치하지 않는 경우, 상기 사용자 단말이 무결하지 않은 것으로 결정할 수 있다.
일 실시예에 따른 무결성 검증 방법을 수행하는 사용자 단말은, 메모리 및 프로세서를 포함하고, 상기 메모리는 상기 프로세서에 의해 실행 가능한 인스트럭션들(instructions)을 저장하고, 상기 인스트럭션들이 상기 프로세서에 의해 실행될 때, 상기 프로세서는, 서버에 일회성 키 값에 대한 생성 요청 데이터를 전송하고, 상기 생성 요청 데이터의 전송에 응답하여, 상기 서버로부터 일회성 키 값을 수신하고, 상기 키 값과 상기 사용자 단말의 식별 값에 기초하여, 복수의 인증 값 생성 함수들 중 일부의 인증 값 생성 함수들을 선택하고, 상기 선택된 일부의 인증 값 생성 함수들을 이용하여 인증 값을 생성하고, 상기 인증 값을 상기 서버에 전송하고, 상기 인증 값의 전송에 응답하여, 상기 서버로부터 무결성 검증 결과에 대한 검증 결과 정보를 수신할 수 있다.
상기 프로세서는, 상기 일회성 키 값 및 상기 식별 값에 기초하여 선택될 함수들의 개수를 결정할 수 있다.
상기 프로세서는, 상기 일회성 키 값, 상기 식별 값 및 상기 개수에 기초하여 상기 복수의 인증 값 생성 함수들 중 일부의 인증 값 생성 함수들을 선택할 수 있다.
상기 프로세서는, 무결성 검증이 필요한 파일의 해쉬 값, 무결성 검증이 필요한 메모리 영역의 해쉬 값 및 상기 선택된 함수들의 고유 값에 기초하여 상기 인증 값을 생성할 수 있다.
일 실시예에 따른 무결성 검증 방법을 수행하는 서버는, 메모리 및 프로세서를 포함하고, 상기 메모리는 상기 프로세서에 의해 실행 가능한 인스트럭션들을 저장하고, 상기 인스트럭션들이 상기 프로세서에 의해 실행될 때, 상기 프로세서는, 사용자 단말로부터 일회성 키 값에 대한 생성 요청 데이터를 수신하는 경우, 일회성 키 값을 생성하고, 상기 일회성 키 값을 상기 사용자 단말에 전송하고, 상기 사용자 단말로부터 상기 사용자 단말에 의해 생성된 인증 값을 수신하는 경우, 상기 키 값과 상기 사용자 단말의 식별 값에 기초하여, 복수의 인증 값 생성 함수들 중 일부의 인증 값 생성 함수들을 선택하고, 상기 선택된 일부의 인증 값 생성 함수들을 이용하여 인증 값을 생성하고, 상기 사용자 단말로부터 수신한 인증 값과 상기 생성된 인증 값에 기초하여 상기 사용자 단말의 무결성 검증 결과를 결정하고, 상기 무결성 검증 결과에 대한 검증 결과 정보를 상기 사용자 단말에 전송할 수 있다.
상기 프로세서는, 무결성 검증이 필요한 파일의 해쉬 값, 무결성 검증이 필요한 메모리 영역의 해쉬 값 및 상기 선택된 함수들의 고유 값에 기초하여 상기 인증 값을 생성할 수 있다.
상기 프로세서는, 상기 사용자 단말로부터 수신한 인증 값과 상기 생성된 인증 값의 일치 여부에 기초하여 상기 무결성 검증 결과를 결정할 수 있다.
상기 프로세서는, 상기 사용자 단말로부터 수신한 인증 값과 상기 생성된 인증 값이 일치하지 않는 경우, 상기 사용자 단말이 무결하지 않은 것으로 결정할 수 있다.
일 실시예에 따르면, 복수의 함수들 중, 랜덤으로 일부의 함수만 호출하여 인증 값을 생성하므로, 복수의 함수들을 모두 변조해야 인증 값의 변조가 가능하기 때문에, 인증 값의 변조를 방지할 수 있다.
일 실시예에 따르면, 복수의 함수들 각각이 가지고 있는 고유의 값이 인증 값에 포함되기 때문에 함수 우회를 방지할 수 있다.
일 실시예에 따르면, 무작위로 함수를 호출하여 순서를 부여하고, 일회성 키 값 및 사용자 단말에 대응하는 식별 값을 조합하여 인증 값을 생성하므로 일회성 및 차별성을 보장할 수 있다.
일 실시예에 따르면, 선택되는 함수의 개수에 따라 인증 값이 달라질 수 있으므로, 선택되는 함수의 개수를 고정시키거나 변경시키는 등의 우회를 통한 변조를 방지할 수 있다.
일 실시예에 따르면, 함수가 적용되는 순서에 따라 인증 값이 변경되므로 함수의 순서를 고정시키거나 변경시키는 등의 우회를 방지할 수 있다.
일 실시예에 따르면, 일회성 키 값 및 사용자 단말에 대응하는 식별 값을 서버 및 사용자 단말이 공유하고, 동일한 로직으로 인증 값을 생성하기 때문에, 인증 값을 고정시키거나 변경시키는 등의 우회를 방지할 수 있다.
도 1은 일 실시예에 따른 무결성 검증 시스템의 전체적인 구성을 도시하는 도면이다.
도 2는 일 실시예에 따른 사용자 단말에서 수행되는 무결성 검증 방법을 설명하기 위한 흐름도이다.
도 3은 일 실시예에 따른 서버에서 수행되는 무결성 검증 방법을 설명하기 위한 흐름도이다.
도 4는 일 실시예에 따른 무결성 검증 방법을 설명하기 위한 흐름도이다.
도 5는 일 실시예에 따른 인증 값을 생성할 함수들의 개수를 결정하는 일례를 설명하기 위한 도면이다.
도 6은 일 실시예에 따른 인증 값을 생성할 함수들을 선택하는 일례를 설명하기 위한 도면이다.
도 7은 일 실시예에 따른 인증 값을 생성할 함수들을 생성하는 일례를 설명하기 위한 도면이다.
도 8은 일 실시예에 따른 서버의 구성을 도시하는 도면이다.
도 9는 일 실시예에 따른 사용자 단말의 구성을 도시하는 도면이다.
이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 그러나, 실시예들에는 다양한 변경이 가해질 수 있어서 특허출원의 권리 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 실시예들에 대한 모든 변경, 균등물 내지 대체물이 권리 범위에 포함되는 것으로 이해되어야 한다.
실시예에서 사용한 용어는 단지 설명을 목적으로 사용된 것으로, 한정하려는 의도로 해석되어서는 안된다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
도 1은 일 실시예에 따른 무결성 검증 시스템의 전체적인 구성을 도시하는 도면이다.
무결성 검증 시스템은 서버(110)가 사용자 단말(130)의 식별 값에 대응하는 랜덤(random) 형태의 일회성 키 값을 발급하고, 서버(110) 및 사용자 단말(130)이 각각 인증 값을 생성하여, 서버(110)는 서버(110) 및 사용자 단말(130)에서 생성된 두 개의 인증 값이 동일한지 여부를 판단하고 판단 결과에 기초하여 사용자 단말(130)의 무결성을 검증할 수 있다.
도 1을 참조하면, 무결성 검증 시스템은 서버(110), 네트워크(120) 및 사용자 단말(130)을 포함할 수 있다. 서버(110)와 사용자 단말(130)은 네트워크(120)(예를 들어, 인터넷 통신망, 유무선의 근거리 통신망 또는 광역 데이터 통신망 등)를 통해 서로 통신할 수 있다.
일 실시예에서 사용자 단말(130)은 네트워크(120)를 통해 서버(110)에 일회성 키 값에 대한 생성 요청 데이터와 사용자 단말(130)의 식별 값을 전송하여 일회성 키 값에 대한 생성 요청을 할 수 있다. 서버(110)는 사용자 단말(130)로부터의 일회성 키 값에 대한 생성 요청에 응답하여 랜덤으로 일회성 키 값을 생성하여 네트워크(120)를 통해 사용자 단말에(130)에 전송할 수 있다. 여기서, 사용자 단말(130)은 애플리케이션 및 프로그램을 실행시킬 수 있는 컴퓨팅 장치로서, 예를 들어 셀룰러 폰, 스마트 폰, 퍼스널 컴퓨터, 랩탑, 노트북, 넷북, 태블릿 또는 휴대 정보 단말기(personal digital assistant; PDA)일 수 있다.
서버(110)와 사용자 단말(130)은 일회성 키 값과 사용자 단말의 식별 값에 기초하여 동일한 방법으로 인증 값을 생성할 수 있다. 일 실시예에서 서버(110)와 사용자 단말(130)은 1,500개의 인증 값 생성을 위한 함수들 중에서 일부의 인증 값 생성 함수들을 선택하고, 선택된 함수들을 이용하여 인증 값을 생성할 수 있다. 서버(110)는 사용자 단말(130)에서 생성된 인증 값을 사용자 단말(130)로부터 수신하여 서버(110)에서 생성된 인증 값과 동일한지 여부를 판단할 수 있다. 두 개의 인증 값이 동일하다면 사용자 단말(130)은 무결한 것으로 결정되고, 두 개의 인증 값이 다르다면 사용자 단말(130)은 무결하지 않은 것으로 결정될 수 있다.
위 실시예에서 인증 값을 생성하기 위하여, 1,500개의 함수들 중에서 임의로 일부의 함수들을 선택하기 때문에, 본 발명의 무결성 검증 방법은 변조된 함수로 인한 변조 해킹 이슈를 해결할 수 있다.
이하에서는, 도면들을 참조하여 무결성 검증 방법을 보다 자세히 설명한다.
도 2는 일 실시예에 따른 사용자 단말에서 수행되는 무결성 검증 방법을 설명하기 위한 흐름도이다.
도 2를 참조하면, 단계(210)에서 사용자 단말은 서버에 일회성 키 값에 대한 생성 요청 데이터를 전송할 수 있다. 사용자 단말은 단계(210)에서 사용자 단말의 식별 값을 서버에 더 전송할 수 있다. 여기서, 사용자 단말의 식별 값은 사용자 단말의 고유한 아이디(ID: identification)을 의미할 수 있다. 또한, 실시예에 따라 식별 값은 사용자 단말의 식별 값을 의미할 수 있고, 사용자 계정의 식별 값을 의미할 수 있다. 식별 값은, 사용자 단말의 식별 값으로, 사용자 단말을 식별할 수 있고, 사용자 계정 식별 값으로, 사용자의 계정 정보를 식별할 수 있다.
단계(220)에서 사용자 단말은 생성 요청 데이터의 전송에 응답하여, 서버로부터 일회성 키 값을 수신할 수 있다. 여기서, 일회성 키 값은 키 값으로도 칭해질 수 있다.
사용자 단말은 단계(220)에서 수신한 키 값과 사용자 단말의 식별 값에 기초하여, 단계(230)에서 복수의 인증 값 생성 함수들 중 일부의 인증 값 생성 함수들을 선택하고, 선택된 일부의 인증 값 생성 함수들을 이용하여 인증 값을 생성할 수 있다. 여기서 복수의 인증 값 생성 함수들은 부호 발생기 또는 코드 제너레이터(code generator)를 통해서 생성될 수 있다. 실시예에 따라 각각의 함수들은 각각의 함수들에 대응하는 고유 값을 가질 수 있다.
일 실시예에서 사용자 단말은 일회성 키 값 및 식별 값에 기초하여 선택될 함수들의 개수를 결정할 수 있다. 사용자 단말은 16진법으로 표현된 일회성 키 값과 식별 값 각각에서 미리 정해진 특정 부분을 추출하고 결합할 수 있다. 사용자 단말은 결합된 값에 SHA(Secure Hash Algorithm)256해쉬 함수를 적용하여 해쉬 값을 생성할 수 있다. 사용자 단말은 해쉬 값에서 미리 정해진 특정 부분을 추출할 수 있고 추출된 특정 부분을 10진법으로 변환할 수 있다. 사용자 단말은 10진법으로 변환된 해쉬 값 및 함수의 총 개수에 기초하여, 복수의 함수들 중에서 인증 값 생성에 이용할 함수들의 개수를 결정할 수 있다.
사용자 단말은 일회성 키 값, 사용자 단말의 식별 값 및 인증 값 생성에 이용할 함수들의 개수에 기초하여 복수의 인증 값 생성 함수들 중 일부의 인증 값 생성 함수들을 선택할 수 있다. 예를 들어, 사용자 단말은 일회성 키 값의 특정 부분과 사용자 단말의 식별 값의 특정 부분이 결합된 값에 SHA256 해쉬 함수를 적용하여 해쉬 값을 생성할 수 있다. 사용자 단말은 해쉬 값의 앞 부분에서부터 8byte씩 순차적으로 특정 부분을 추출하고, 추출된 특정 부분에 SHA256 함수를 적용하여 인증 값 생성에 이용될 함수를 선택하기 위한 값을 추출할 수 있으며, 추출된 값에 대응하는 함수의 고유 값을 가진 인증 값 생성에 이용될 함수를 선택할 수 있다.
사용자 단말은 무결성 검증이 필요한 파일의 해쉬 값, 무결성 검증이 필요한 메모리 영역의 해쉬 값 및 선택된 함수들의 고유 값에 기초하여 인증 값을 생성할 수 있다.
단계(240)에서 사용자 단말은 인증 값을 서버에 전송할 수 있다. 서버는 사용자 단말로부터 수신한 인증 값과, 서버가 사용자 단말과 동일한 로직으로 생성한 인증 값이 동일한지 여부에 기초하여 무결성 검증 결과를 결정할 수 있다.
단계(250)에서 사용자 단말은 인증 값의 전송에 응답하여, 서버로부터 무결성 검증 결과에 대한 검증 결과 정보를 수신할 수 있다. 사용자 단말은 검증 결과 정보에 기초하여 게임, 애플리케이션 및 프로그램 중 적어도 하나에 대해 접속이 허용되거나 접속이 차단될 수 있다.
도 3은 일 실시예에 따른 서버에서 수행되는 무결성 검증 방법을 설명하기 위한 흐름도이다.
도 3을 참조하면, 단계(310)에서 서버는 사용자 단말로부터 일회성 키 값에 대한 생성 요청 데이터를 수신하는 경우, 일회성 키 값을 생성할 수 있다. 일 실시예에서 서버는 사용자 단말로부터 일회성 키 값에 대한 생성 요청 데이터와 함께 사용자 단말의 식별 값을 더 수신할 수 있다. 서버는 랜덤 방식으로 생성된 일회성 키 값과, 일회성 키 값에 대응하는 식별 값을 데이터베이스에 저장할 수 있다.
단계(320)에서 서버는 일회성 키 값을 사용자 단말에 전송할 수 있다.
단계(330)에서 서버는 사용자 단말로부터 사용자 단말에 의해 생성된 인증 값을 수신하는 경우, 키 값과 사용자 단말의 식별 값에 기초하여, 복수의 인증 값 생성 함수들 중 일부의 인증 값 생성 함수들을 선택하고, 선택된 일부의 인증 값 생성 함수들을 이용하여 인증 값을 생성할 수 있다. 서버는 도 2의 단계(230)에서 사용자 단말이 인증 값을 생성하는 로직과 동일한 로직을 통해 인증 값을 생성할 수 있다.
일 실시예에서 서버는 일회성 키 값 및 식별 값에 기초하여 부호 발생기로 생성된 복수의 인증 값 생성을 위한 함수들 중에서, 선택될 함수들의 개수를 결정할 수 있다. 서버는 일회성 키 값의 특정 부분과 식별 값의 특정 부분을 결합할 수 있다. 서버는 결합된 값에 SHA256 해쉬 함수를 적용하여 해쉬 값을 생성할 수 있다. 서버는 해쉬 값에서 특정 부분을 추출하여 16진법으로 된 해쉬 값의 특정 부분을 10진법으로 변환할 수 있다. 서버는 10진법으로 변환된 해쉬 값 및 함수의 총 개수에 기초하여 인증 값 생성에 이용할 함수들의 개수를 결정할 수 있다.
일 실시예에서, 서버는 일회성 키 값, 식별 값 및 개수에 기초하여 복수의 인증 값 생성 함수들 중 일부의 인증 값 생성 함수들을 선택할 수 있다. 서버는 키 값의 특정 부분과 식별 값의 특정 부분이 결합된 값에 SHA256 해쉬 함수를 적용하여 해쉬 값을 생성할 수 있다. 서버는 첫 번째로 선택할 함수를 결정하는 과정에서, 해쉬 값의 맨 앞부분에서부터 8byte를 추출하고, 두번째로 선택할 함수를 결정하는 과정에서는 해쉬 값의 맨 앞부분에서부터 한 칸 우측으로 이동한 부분부터 8byte를 추출할 수 있다. 서버는 이 과정을 선택할 함수들의 개수만큼 반복할 수 있다. 서버는 8byte씩 추출된 해쉬 값의 특정 부분들에 기초하여 인증 값 생성에 이용할 함수들을 순서대로 선택할 수 있다.
서버는 무결성 검증이 필요한 파일의 해쉬 값, 무결성 검증이 필요한 메모리 영역의 해쉬 값 및 선택된 함수들의 고유 값에 기초하여 인증 값을 생성할 수 있다.
단계(340)에서 서버는 사용자 단말로부터 수신한 인증 값과 생성된 인증 값에 기초하여 사용자 단말의 무결성 검증 결과를 결정할 수 있다. 서버는 일 실시예에서 사용자 단말로부터 수신한 인증 값과 생성된 인증 값의 일치 여부에 기초하여 무결성 검증 결과를 결정할 수 있다. 서버는 사용자 단말로부터 수신한 인증 값과 생성된 인증 값이 일치할 경우에는 사용자 단말이 무결한 것으로 결정할 수 있다. 반면에, 사용자 단말로부터 수신한 인증 값과 생성된 인증 값이 일치하지 않는 경우, 사용자 단말이 무결하지 않은 것으로 결정할 수 있다.
단계(350)에서 서버는 무결성 검증 결과에 대한 검증 결과 정보를 사용자 단말에 전송할 수 있다. 일 실시예에서 사용자 단말이 무결하지 않은 것으로 결정된 경우, 서버는 무결성 검증 결과에 대한 검증 결과 정보를 사용자 단말에 전송하며, 사용자 단말의 접속을 차단시킬 수 있다.
도 4는 일 실시예에 따른 무결성 검증 방법을 설명하기 위한 흐름도이다.
도 4를 참조하면 단계(415)에서 사용자 단말(405)은 서버(410)에 일회성 키 값의 생성을 요청하기 위한 요청 데이터를 전송할 수 있다. 사용자 단말(405)은 서버(410)에 요청 데이터와 함께 사용자 단말(405)에 대응하는 식별 값을 전송할 수도 있다.
사용자 단말(405)로부터 요청 데이터를 수신한 서버(410)는 요청 데이터에 응답하여 단계(420)에서 일회성 키 값을 생성할 수 있다. 여기서 일회성 키 값은 랜덤 방식으로 생성될 수 있다. 서버(410)는 식별 값과 식별 값에 대응하는 일회성 키 값을 데이터베이스에 저장할 수 있다.
단계(425)에서 서버(410)는 단계(420)에서 생성한 일회성 키 값을 사용자 단말(405)로 전송할 수 있다. 단계(430)에서 사용자 단말(405)는 단계(425)에서 서버(410)로부터 수신한 일회성 키 값, 식별 값에 기초하여 인증 값 생성에 이용할 함수들의 개수를 결정할 수 있고, 결정된 개수에 기초하여 복수의 함수들 중에서 인증 값 생성에 이용할 함수들을 선택할 수 있으며, 선택된 함수들을 통해 인증 값을 생성할 수 있다.
단계(435)에서 사용자 단말(405)은 단계(430)에서 생성한 인증 값을 서버(410)로 전송할 수 있다. 단계(440)에서 서버(410)는 사용자 단말(405)이 인증 값을 생성하기 위해 수행한 로직과 동일한 로직을 통해 인증 값을 생성할 수 있다.
서버(410)는 단계(440)에서 키 값과 식별 값에 기초하여, 복수의 인증 값 생성 함수들 중 일부의 인증 값 생성 함수들을 선택하고, 선택된 일부의 인증 값 생성 함수들을 이용하여 인증 값을 생성할 수 있다.
단계(445)에서 서버는(410)는 사용자 단말(405)로부터 수신한 인증 값과 서버(410)에서 생성된 인증 값에 기초하여 사용자 단말(405)의 무결성 검증 결과를 결정할 수 있다. 서버(410)는 사용자 단말(405)에서 생성된 인증 값과 서버(410)에서 생성된 인증 값을 비교하여 두 개의 인증 값이 동일한지 여부를 확인할 수 있고, 비교 결과에 기초하여 사용자 단말(405)의 무결성을 검증 결과를 결정할 수 있다.
일 실시예에서 두 개의 인증 값이 동일하다면 사용자 단말(405)은 무결한 것으로 결정될 수 있고, 다른 실시예에서 두 개의 인증 값이 다르다면 사용자 단말(405)은 무결하지 않은 것으로 결정될 수 있다.
서버(410)는 단계(450)에서 무결성 검증 결과에 대한 검증 결과 정보를 사용자 단말(405)에 전송할 수 있고, 사용자 단말(405)은 서버(410)로부터 무결성 검증 결과에 대한 검증 결과 정보를 수신할 수 있다.
도 5는 일 실시예에 따른 인증 값을 생성할 함수들의 개수를 결정하는 일례를 설명하기 위한 도면이다.
도 5를 참조하면, 일회성 키 값(510)에서 미리 정해진 기준에 기초하여 선택된 키 값의 특정 부분의 값(515)과 사용자 단말의 식별 값(520)에서 미리 정해진 기준에 기초하여 선택된 식별 값의 특정 부분의 값(525)은 결합될 수 있다. 키 값의 특정 부분의 값(515)과 식별 값의 특정 부분의 값(525)이 결합된 값(530)에 SHA256 해쉬 함수를 적용하면 해쉬 값(535)이 생성될 수 있다. 16진법인 해쉬 값(535)의 미리 정해진 특정 부분인 D351C142를 10진법으로 변환하면 3545350466가 될 수 있다. 사용자 단말 또는 서버는 3545350466를 최대 수행할 함수 개수의 값에서 최소 수행할 함수 개수의 값을 뺀 값으로 나눈 나머지 값에 최소 수행할 함수 개수의 값을 더하여 인증 값 생성에 이용할 함수의 개수를 결정할 수 있다. 예를 들어, 최대 수행할 함수 개수가 20이고, 최소 수행할 함수 개수가 5인 경우, 인증 값을 생성하는 데에 이용할 함수의 개수는 16개가 될 수 있다.
도 6은 일 실시예에 따른 인증 값을 생성할 함수들을 선택하는 일례를 설명하기 위한 도면이다.
도 6을 참조하면, 일회성 키 값(610)에서 미리 정해진 기준에 기초하여 선택된 키 값의 특정 부분의 값(615)과 사용자 단말의 식별 값(620)에서 미리 정해진 기준에 기초하여 선택된 식별 값의 특정 부분의 값(625)은 결합될 수 있다. 키 값의 특정 부분의 값(615)과 식별 값의 특정 부분의 값(625)이 결합된 값(630)에 SHA256 해쉬 함수를 적용하면 해쉬 값(635)이 생성될 수 있다. 사용자 단말 또는 서버는 첫 번째로 이용할 함수를 결정하기 위하여 해쉬 값(635)의 맨 앞부분부터 8byte에 해당하는 만큼을 추출할 수 있다. 추출된 값은 첫 번째로 이용할 함수를 결정하기 위한 해쉬 값의 특정 부분의 값(640)이 될 수 있다. 사용자 단말 또는 서버는 두 번째로 이용할 함수를 결정하기 위한 해쉬 값의 특정 부분의 값(645)으로 해쉬 값(635)의 맨 앞부분에서 우측으로 한 칸 이동한 부분부터 8byte에 해당하는 만큼을 추출할 수 있다. 선택될 함수가 16개인 경우, 사용자 단말 또는 서버는 이와 같은 방법으로 열여섯 번째로 이용할 함수를 결정하기 위한 해쉬 값의 특정 부분의 값(650)으로 맨 앞부분에서 우측으로 15칸 이동한 부분부터 8byte에 해당하는 만큼을 추출할 수 있다.
만약 해쉬 값(635)에서 더 이상 8byte의 특정 부분을 추출할 수 없을 경우, 원래의 해쉬 값(635)에 SHA256 함수를 적용시킨 값을 결합시켜 계속해서 8byte의 특정 부분을 추출할 수 있다.
이러한 방법으로 추출된 16개의 해쉬 값들을 16진법에서 10진법으로 변환할 수 있다. 첫 번째로 이용할 함수는, 첫 번째로 이용할 함수를 결정하기 위한 해쉬 값의 특정 부분의 값(640)을 10진법으로 변환한 값을 총 함수의 개수로 나눈 나머지와 고유 값이 동일한 함수가 될 수 있다. 예를 들어, 첫 번째로 이용할 함수를 결정하기 위한 해쉬 값의 특정 부분의 값(640)은 31141CD1인데, 이를 10진법으로 변환하면 823401681가 될 수 있다. 823401681를 총 함수의 개수인 1500으로 나눈 나머지는 681이 될 수 있다. 이 경우, 첫 번째로 이용할 함수는 함수의 고유 값이 681인 함수가 될 수 있다. 또한, 두 번째로 이용할 함수를 결정하기 위한 해쉬 값의 특정 부분의 값(645)은 1141CD13인데, 이를 10진법으로 변환하면 289525011가 될 수 있다. 289525011를 총 함수의 개수인 1500으로 나눈 나머지는 1011이 될 수 있다. 이 경우 두 번째로 이용할 함수는 함수의 고유 값이 1011인 함수가 될 수 있다. 이와 같은 방법으로 사용자 단말과 서버는 16개의 함수를 선택할 수 있다. 열여섯 번째로 이용할 함수를 결정하기 위한 해쉬 값의 특정 부분의 값(650)은 88F52C7E인데, 이를 10진법으로 변환하면 2297769086가 될 수 있다. 2297769086를 총 함수의 개수인 1500으로 나눈 나머지는 86이 될 수 있다. 이 경우, 열여섯 번째로 이용할 함수는 함수의 고유 값이 86인 함수가 될 수 있다.
다른 실시예에서 선택된 함수에 기초하여 사용자 단말 및 서버는 인증 값을 생성할 수 있다. 예를 들어, 무결성 확인이 필요한 파일 및 메모리 영역의 해쉬 값이 1234이고, 인증 값 생성에 이용될 함수의 개수가 3으로 결정되며, 첫 번째 함수로 8번 함수, 두 번째 함수로 11번 함수, 세 번째 함수로 2번 함수가 선택되었을 경우, 인증 값은 다음과 같은 방법으로 생성될 수 있다.
첫 번째 함수의 수행에 따른 결과 값은 입력 값과 해쉬 값인 1234를 더한 값에 함수의 고유 값인 8을 곱하여 산출될 수 있다. 여기서 입력 값은 이전 함수의 수행에 따른 결과 값이 현재 함수의 입력 값이지만 첫 번째 함수의 이전 함수는 존재하지 않기 때문에 입력 값은 0이 될 수 있다. 따라서 첫 번째 함수의 수행에 따른 결과 값은 9872가 될 수 있다.
두 번째 함수의 수행에 따른 결과 값은 입력 값인 9872에 해쉬 값인 1234를 더한 값에 함수의 고유 값인 11을 곱한 122166이 될 수 있다.
세 번째 함수의 수행에 따른 결과 값은 입력 값인 122166에 해쉬 값인 1234를 더한 값에 함수의 고유 값인 2를 곱한 246800이 될 수 있다. 이 경우, 인증 값은 246800이 될 수 있다.
도 7은 일 실시예에 따른 인증 값을 생성할 함수들을 생성하는 일례를 설명하기 위한 도면이다.
도 7을 참조하면, 총 m*n개의 인증 값을 생성하기 위한 복수의 함수가 생성될 수 있다. 같은 동작을 하지만 로직이 다른 함수 n개를 m번 복제하여 n*m개의 함수가 생성될 수 있다. 각각의 함수들은 고유의 값을 가지고 있어, 하나의 함수는 다른 함수들과 구분이 될 수 있고, 인증 값 생성에 적용될 수 있다. 일 실시예에서 한 함수를 통해 산출된 결과 값은 다음 함수를 통해 산출될 결과 값의 입력 값으로 적용되는 체인(chain) 형태를 가질 수 있다. 또한 마지막으로 산출된 결과 값은 인증 값이 될 수 있다.
도 8은 일 실시예에 따른 서버의 구성을 도시하는 도면이다.
도 8을 참조하면, 서버(800)는 통신 인터페이스(810), 프로세서(820), 메모리(830)를 포함할 수 있다. 실시예에 따라, 서버(800)는 데이터베이스(840)를 더 포함할 수도 있다.
메모리(830)는 프로세서(820)에 연결되고, 프로세서(820)에 의해 실행가능한 인스트럭션들, 프로세서(820)가 연산할 데이터 또는 프로세서(820)에 의해 처리된 데이터를 저장할 수 있다. 메모리(830)는 비일시적인 컴퓨터 판독가능 매체, 예컨대 고속 랜덤 액세스 메모리 및/또는 비휘발성 컴퓨터 판독가능 저장 매체(예컨대, 하나 이상의 디스크 저장 장치, 플래쉬 메모리 장치, 또는 기타 비휘발성 솔리드 스테이트 메모리 장치)를 포함할 수 있다.
통신 인터페이스(810)는 외부 장치(예를 들어, 게임 사용자 단말)와 통신하기 위한 인터페이스를 제공한다. 통신 인터페이스(810)는 유선 또는 무선 네트워크를 통해 외부 장치와 통신할 수 있다.
데이터베이스(840)는 서버(800)가 무결성 검증 방법을 수행하는데 필요한 데이터를 저장할 수 있다. 예를 들어, 데이터베이스(840)는 사용자 단말의 식별 값 및 식별 값에 대응하는 일회성 키 값이 저장될 수 있고, 인증 값을 생성할 수 있는 복수의 함수들이 저장될 수 있다.
프로세서(820)는 서버(800) 내에서 실행하기 위한 기능 및 인스트럭션들을 실행하고, 서버(800)의 전체적인 동작을 제어한다. 프로세서(820)는 도 3 및 도 4에서 설명된 서버의 동작과 관련된 하나 이상의 동작을 수행할 수 있다.
예를 들어, 프로세서(820)는 사용자 단말로부터 일회성 키 값에 대한 생성 요청 데이터를 수신하는 경우, 일회성 키 값을 생성하고, 일회성 키 값을 사용자 단말에 전송하고, 사용자 단말로부터 사용자 단말에 의해 생성된 인증 값을 수신하는 경우, 키 값과 사용자 단말의 식별 값에 기초하여, 복수의 인증 값 생성 함수들 중 일부의 인증 값 생성 함수들을 선택할 수 있다. 프로세서(820)는 선택된 일부의 인증 값 생성 함수들을 이용하여 인증 값을 생성하고, 사용자 단말로부터 수신한 인증 값과 생성된 인증 값에 기초하여 사용자 단말의 무결성 검증 결과를 결정하고, 무결성 검증 결과에 대한 검증 결과 정보를 사용자 단말에 전송할 수 있다.
프로세서(820)는 일회성 키 값 및 식별 값에 기초하여 선택될 함수들의 개수를 결정할 수 있고, 일회성 키 값, 식별 값 및 개수에 기초하여 복수의 인증 값 생성 함수들 중 일부의 인증 값 생성 함수들을 선택할 수 있다. 또한, 프로세서(820)는 무결성 검증이 필요한 파일의 해쉬 값, 무결성 검증이 필요한 메모리 영역의 해쉬 값 및 선택된 함수들의 고유 값에 기초하여 인증 값을 생성할 수 있다.
프로세서(820)는 사용자 단말로부터 수신한 인증 값과 생성된 인증 값의 일치 여부에 기초하여 무결성 검증 결과를 결정할 수 있다. 사용자 단말로부터 수신한 인증 값과 생성된 인증 값이 일치하지 않는 경우, 프로세서(820)는 사용자 단말이 무결하지 않은 것으로 결정할 수 있다.
도 9는 일 실시예에 따른 사용자 단말의 구성을 도시하는 도면이다.
도 9을 참조하면, 사용자 단말(900)은 프로세서(910), 메모리(920) 및 통신 인터페이스(930)를 포함한다. 실시예에 따라, 사용자 단말(900)은 사용자 입력 인터페이스(940) 및 디스플레이(950)를 더 포함할 수 있다.
메모리(920)는 프로세서(910)에 연결되고, 프로세서(910)에 의해 실행가능한 인스트럭션들, 프로세서(910)가 연산할 데이터 또는 프로세서(910)에 의해 처리된 데이터를 저장할 수 있다. 메모리(920)는 비일시적인 컴퓨터 판독가능 매체, 예컨대 고속 랜덤 액세스 메모리 및/또는 비휘발성 컴퓨터 판독가능 저장 매체(예컨대, 하나 이상의 디스크 저장 장치, 플래쉬 메모리 장치, 또는 기타 비휘발성 솔리드 스테이트 메모리 장치)를 포함할 수 있다.
통신 인터페이스(930)는 외부 장치(예를 들어, 게임 서버 및 서버)와 통신하기 위한 인터페이스를 제공한다. 통신 인터페이스(930)는 유선 또는 무선 네트워크를 통해 외부 장치와 통신할 수 있다.
사용자 입력 인터페이스(940)는 사용자에 의해 입력되는 사용자 입력을 수신한다. 디스플레이(950)는 서버로부터 수신한 알림을 출력할 수 있다. 일 예에서, 디스플레이(950)는 모니터 또는 터치 스크린 디스플레이일 수 있다.
프로세서(910)는 도 2 및 도 4에서 설명된 사용자 단말의 동작과 관련된 하나 이상의 동작을 수행할 수 있다. 예를 들어, 프로세서(910)는 서버에 일회성 키 값에 대한 생성 요청 데이터를 전송하고, 생성 요청 데이터의 전송에 응답하여, 서버로부터 일회성 키 값을 수신하고, 키 값과 사용자 단말의 식별 값에 기초하여, 복수의 인증 값 생성 함수들 중 일부의 인증 값 생성 함수들을 선택할 수 있다. 또한, 프로세서(910)는 선택된 일부의 인증 값 생성 함수들을 이용하여 인증 값을 생성하고, 인증 값을 서버에 전송하고, 인증 값의 전송에 응답하여, 서버로부터 무결성 검증 결과에 대한 검증 결과 정보를 수신할 수 있다.
프로세서(910)는 사용자 단말의 식별 값을 서버에 더 전송하고, 일회성 키 값 및 식별 값에 기초하여 선택될 함수들의 개수를 결정할 수 있다. 또한, 프로세서(910)는 일회성 키 값, 식별 값 및 개수에 기초하여 복수의 인증 값 생성 함수들 중 일부의 인증 값 생성 함수들을 선택하고, 무결성 검증이 필요한 파일의 해쉬 값, 무결성 검증이 필요한 메모리 영역의 해쉬 값 및 선택된 함수들의 고유 값에 기초하여 인증 값을 생성할 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 청구범위와 균등한 것들도 후술하는 청구범위의 범위에 속한다.
110, 410, 800: 서버
120: 네트워크
130, 405, 900: 사용자 단말
810, 930: 통신 인터페이스
820, 910: 프로세서
830, 920: 메모리
840: 데이터베이스
940: 사용자 입력 인터페이스
950: 통신 인터페이스

Claims (20)

  1. 사용자 단말에 의해 수행되는 무결성 검증 방법에 있어서,
    서버에 일회성 키(Key) 값에 대한 생성 요청 데이터를 전송하는 단계;
    상기 생성 요청 데이터의 전송에 응답하여, 상기 서버로부터 일회성 키 값을 수신하는 단계;
    상기 키 값과 상기 사용자 단말의 식별 값에 기초하여, 복수의 인증 값 생성 함수들 중 일부의 인증 값 생성 함수들을 선택하고, 상기 선택된 일부의 인증 값 생성 함수들을 이용하여 인증 값을 생성하는 단계;
    상기 인증 값을 상기 서버에 전송하는 단계; 및
    상기 인증 값의 전송에 응답하여, 상기 서버로부터 무결성 검증 결과에 대한 검증 결과 정보를 수신하는 단계
    를 포함하고,
    상기 인증 값을 생성하는 단계는,
    상기 일회성 키 값 및 상기 식별 값에 기초하여 선택될 함수들의 개수를 결정하는 단계를 포함하고,
    상기 함수들의 개수를 결정하는 단계는,
    상기 일회성 키 값과 상기 식별 값 각각에서 미리 정해진 특정 부분을 추출하고, 결합하여 결합 값을 생성하는 단계;
    상기 결합 값에 해쉬 함수를 적용하여 해쉬 값을 생성하는 단계 및
    상기 해쉬 값, 최대 수행할 함수 개수의 값 및 최소 수행할 함수 개수의 값에 기초하여 인증 값 생성 함수의 개수를 결정하는 단계
    를 포함하는,
    무결성 검증 방법.
  2. 제1항에 있어서,
    상기 요청데이터를 전송하는 단계는,
    상기 사용자 단말의 상기 식별 값을 상기 서버에 더 전송하는 단계
    를 포함하는,
    무결성 검증 방법.
  3. 삭제
  4. 제1항에 있어서,
    상기 인증 값을 생성하는 단계는,
    상기 일회성 키 값, 상기 식별 값 및 상기 개수에 기초하여 상기 복수의 인증 값 생성 함수들 중 일부의 인증 값 생성 함수들을 선택하는 단계
    를 포함하는,
    무결성 검증 방법.
  5. 제4항에 있어서,
    상기 인증 값을 생성하는 단계는,
    무결성 검증이 필요한 파일의 해쉬(Hash) 값, 무결성 검증이 필요한 메모리 영역의 해쉬 값 및 상기 선택된 함수들의 고유 값에 기초하여 상기 인증 값을 생성하는 단계
    를 포함하는,
    무결성 검증 방법.
  6. 서버에 의해 수행되는 무결성 검증 방법에 있어서,
    사용자 단말로부터 일회성 키 값에 대한 생성 요청 데이터를 수신하는 경우, 일회성 키 값을 생성하는 단계;
    상기 일회성 키 값을 상기 사용자 단말에 전송하는 단계;
    상기 사용자 단말로부터 상기 사용자 단말에 의해 생성된 인증 값을 수신하는 경우, 상기 키 값과 상기 사용자 단말의 식별 값에 기초하여, 복수의 인증 값 생성 함수들 중 일부의 인증 값 생성 함수들을 선택하고, 상기 선택된 일부의 인증 값 생성 함수들을 이용하여 인증 값을 생성하는 단계;
    상기 사용자 단말로부터 수신한 인증 값과 상기 생성된 인증 값에 기초하여 상기 사용자 단말의 무결성 검증 결과를 결정하는 단계; 및
    상기 무결성 검증 결과에 대한 검증 결과 정보를 상기 사용자 단말에 전송하는 단계
    를 포함하고,
    상기 인증 값을 생성하는 단계는,
    상기 일회성 키 값 및 상기 식별 값에 기초하여 선택될 함수들의 개수를 결정하는 단계를 포함하고,
    상기 함수들의 개수를 결정하는 단계는,
    상기 일회성 키 값과 상기 식별 값 각각에서 미리 정해진 특정 부분을 추출하고, 결합하여 결합 값을 생성하는 단계;
    상기 결합 값에 해쉬 함수를 적용하여 해쉬 값을 생성하는 단계 및
    상기 해쉬 값, 최대 수행할 함수 개수의 값 및 최소 수행할 함수 개수의 값에 기초하여 인증 값 생성 함수의 개수를 결정하는 단계
    를 포함하는,
    무결성 검증 방법.
  7. 삭제
  8. 제6항에 있어서,
    상기 인증 값을 생성하는 단계는,
    상기 일회성 키 값, 상기 식별 값 및 상기 개수에 기초하여 상기 복수의 인증 값 생성 함수들 중 일부의 인증 값 생성 함수들을 선택하는 단계
    를 포함하는,
    무결성 검증 방법.
  9. 제8항에 있어서,
    상기 인증 값을 생성하는 단계는,
    무결성 검증이 필요한 파일의 해쉬 값, 무결성 검증이 필요한 메모리 영역의 해쉬 값 및 상기 선택된 함수들의 고유 값에 기초하여 상기 인증 값을 생성하는 단계
    를 포함하는,
    무결성 검증 방법.
  10. 제6항에 있어서,
    상기 무결성 검증 결과를 결정하는 단계는,
    상기 사용자 단말로부터 수신한 인증 값과 상기 생성된 인증 값의 일치 여부에 기초하여 상기 무결성 검증 결과를 결정하는 단계
    를 포함하는,
    무결성 검증 방법.
  11. 제10항에 있어서,
    상기 사용자 단말로부터 수신한 인증 값과 상기 생성된 인증 값이 일치하지 않는 경우, 상기 사용자 단말이 무결하지 않은 것으로 결정하는,
    무결성 검증 방법.
  12. 제1항 내지 제2항, 제4항 내지 제6항 및 제8항 내지 제11항 중 어느 한 항의 방법을 수행하는 프로그램을 기록한 컴퓨터 판독 가능 기록 매체.
  13. 무결성 검증 방법을 수행하는 사용자 단말에 있어서,
    메모리 및 프로세서를 포함하고,
    상기 메모리는 상기 프로세서에 의해 실행 가능한 인스트럭션들(instructions)을 저장하고,
    상기 인스트럭션들이 상기 프로세서에 의해 실행될 때, 상기 프로세서는,
    서버에 일회성 키 값에 대한 생성 요청 데이터를 전송하고,
    상기 생성 요청 데이터의 전송에 응답하여, 상기 서버로부터 일회성 키 값을 수신하고,
    상기 키 값과 상기 사용자 단말의 식별 값에 기초하여, 복수의 인증 값 생성 함수들 중 일부의 인증 값 생성 함수들을 선택하고, 상기 선택된 일부의 인증 값 생성 함수들을 이용하여 인증 값을 생성하고,
    상기 인증 값을 상기 서버에 전송하고,
    상기 인증 값의 전송에 응답하여, 상기 서버로부터 무결성 검증 결과에 대한 검증 결과 정보를 수신하고,
    상기 프로세서는,
    상기 일회성 키 값 및 상기 식별 값에 기초하여 선택될 함수들의 개수를 결정하고,
    상기 프로세서는,
    상기 일회성 키 값과 상기 식별 값 각각에서 미리 정해진 특정 부분을 추출하고, 결합하여 결합 값을 생성하고,
    상기 결합 값에 해쉬 함수를 적용하여 해쉬 값을 생성하고,
    상기 해쉬 값, 최대 수행할 함수 개수의 값 및 최소 수행할 함수 개수의 값에 기초하여 인증 값 생성 함수의 개수를 결정하는,
    사용자 단말.
  14. 삭제
  15. 제13항에 있어서,
    상기 프로세서는,
    상기 일회성 키 값, 상기 식별 값 및 상기 개수에 기초하여 상기 복수의 인증 값 생성 함수들 중 일부의 인증 값 생성 함수들을 선택하는,
    사용자 단말.
  16. 제15항에 있어서,
    상기 프로세서는,
    무결성 검증이 필요한 파일의 해쉬 값, 무결성 검증이 필요한 메모리 영역의 해쉬 값 및 상기 선택된 함수들의 고유 값에 기초하여 상기 인증 값을 생성하는,
    사용자 단말.
  17. 무결성 검증 방법을 수행하는 서버에 있어서,
    메모리 및 프로세서를 포함하고,
    상기 메모리는 상기 프로세서에 의해 실행 가능한 인스트럭션들을 저장하고,
    상기 인스트럭션들이 상기 프로세서에 의해 실행될 때, 상기 프로세서는,
    사용자 단말로부터 일회성 키 값에 대한 생성 요청 데이터를 수신하는 경우, 일회성 키 값을 생성하고,
    상기 일회성 키 값을 상기 사용자 단말에 전송하고,
    상기 사용자 단말로부터 상기 사용자 단말에 의해 생성된 인증 값을 수신하는 경우, 상기 키 값과 상기 사용자 단말의 식별 값에 기초하여, 복수의 인증 값 생성 함수들 중 일부의 인증 값 생성 함수들을 선택하고, 상기 선택된 일부의 인증 값 생성 함수들을 이용하여 인증 값을 생성하고,
    상기 사용자 단말로부터 수신한 인증 값과 상기 생성된 인증 값에 기초하여 상기 사용자 단말의 무결성 검증 결과를 결정하고,
    상기 무결성 검증 결과에 대한 검증 결과 정보를 상기 사용자 단말에 전송하고,
    상기 프로세서는,
    상기 일회성 키 값 및 상기 식별 값에 기초하여 선택될 함수들의 개수를 결정하고,
    상기 프로세서는,
    상기 일회성 키 값과 상기 식별 값 각각에서 미리 정해진 특정 부분을 추출하고, 결합하여 결합 값을 생성하고,
    상기 결합 값에 해쉬 함수를 적용하여 해쉬 값을 생성하고,
    상기 해쉬 값, 최대 수행할 함수 개수의 값 및 최소 수행할 함수 개수의 값에 기초하여 인증 값 생성 함수의 개수를 결정하는,
    서버.
  18. 제17항에 있어서,
    상기 프로세서는,
    무결성 검증이 필요한 파일의 해쉬 값, 무결성 검증이 필요한 메모리 영역의 해쉬 값 및 상기 선택된 함수들의 고유 값에 기초하여 상기 인증 값을 생성하는,
    서버.
  19. 제17항에 있어서,
    상기 프로세서는,
    상기 사용자 단말로부터 수신한 인증 값과 상기 생성된 인증 값의 일치 여부에 기초하여 상기 무결성 검증 결과를 결정하는,
    서버.
  20. 제 19항에 있어서,
    상기 프로세서는,
    상기 사용자 단말로부터 수신한 인증 값과 상기 생성된 인증 값이 일치하지 않는 경우, 상기 사용자 단말이 무결하지 않은 것으로 결정하는,
    서버.
KR1020190047754A 2019-04-24 2019-04-24 무결성 검증 방법 및 장치 KR102190359B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190047754A KR102190359B1 (ko) 2019-04-24 2019-04-24 무결성 검증 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190047754A KR102190359B1 (ko) 2019-04-24 2019-04-24 무결성 검증 방법 및 장치

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020200168590A Division KR20200141967A (ko) 2020-12-04 2020-12-04 무결성 검증 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20200124436A KR20200124436A (ko) 2020-11-03
KR102190359B1 true KR102190359B1 (ko) 2020-12-11

Family

ID=73197944

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190047754A KR102190359B1 (ko) 2019-04-24 2019-04-24 무결성 검증 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102190359B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010531506A (ja) 2007-06-26 2010-09-24 G3−ビジョン リミテッド コミュニケーション装置、認証システム及び方法、並びにキャリア媒体

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100843081B1 (ko) * 2006-12-06 2008-07-02 삼성전자주식회사 보안 제공 시스템 및 방법
KR101799517B1 (ko) * 2015-10-08 2017-11-20 주식회사 안랩 인증 서버 및 방법
KR101973578B1 (ko) * 2017-03-29 2019-04-30 넷마블 주식회사 어플리케이션의 무결성 검증 방법 및 장치

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010531506A (ja) 2007-06-26 2010-09-24 G3−ビジョン リミテッド コミュニケーション装置、認証システム及び方法、並びにキャリア媒体

Also Published As

Publication number Publication date
KR20200124436A (ko) 2020-11-03

Similar Documents

Publication Publication Date Title
KR102182894B1 (ko) 패스워드 기반의 인증을 수행하는 사용자 장치 및 그것의 패스워드 등록 방법 및 인증 방법
US20140223580A1 (en) Method of and apparatus for processing software using hash function to secure software, and computer-readable medium storing executable instructions for performing the method
US20180239892A1 (en) Hypervisor and virtual machine protection
CN110445769B (zh) 业务***的访问方法及装置
EP3005216B1 (en) Protecting anti-malware processes
JP6073320B2 (ja) デジタル署名するオーソリティ依存のプラットフォームシークレット
US9104838B2 (en) Client token storage for cross-site request forgery protection
US11165780B2 (en) Systems and methods to secure publicly-hosted cloud applications to run only within the context of a trusted client application
KR102008668B1 (ko) 외부 저장 장치에 저장되는 파일의 개인정보를 보호하는 보안 시스템 및 방법
US11336444B2 (en) Hardware security module for verifying executable code, device having hardware security module, and method of operating device
US11664970B2 (en) Providing access to a hardware resource based on a canary value
US20220382874A1 (en) Secure computation environment
JP6174247B2 (ja) ハッシュを利用したプログラムの無欠性検証方法
RU2702276C2 (ru) Представление контекста операционной системы в доверенном платформенном модуле
KR102190359B1 (ko) 무결성 검증 방법 및 장치
KR20200141967A (ko) 무결성 검증 방법 및 장치
KR101973578B1 (ko) 어플리케이션의 무결성 검증 방법 및 장치
KR20200017038A (ko) 메시지 인증 장치 및 방법
KR102094606B1 (ko) 인증 장치 및 방법
US10552600B2 (en) Securing a media storage device using application authority assignment
KR20210072711A (ko) 사물인터넷 디바이스와 신뢰 서버 간 상호 인증 방법 및 장치
KR20200106435A (ko) 유저 인증 장치 및 방법
RU2633186C1 (ru) Персональное устройство аутентификации и защиты данных
KR101745821B1 (ko) 시큐어 부팅 방법 및 시스템
US20230259606A1 (en) Asset Access Control Method, Apparatus, Device, and Medium

Legal Events

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