KR20080099539A - 일회용 실행 코드를 이용한 보안 시스템 및 보안 방법 - Google Patents

일회용 실행 코드를 이용한 보안 시스템 및 보안 방법 Download PDF

Info

Publication number
KR20080099539A
KR20080099539A KR1020070045203A KR20070045203A KR20080099539A KR 20080099539 A KR20080099539 A KR 20080099539A KR 1020070045203 A KR1020070045203 A KR 1020070045203A KR 20070045203 A KR20070045203 A KR 20070045203A KR 20080099539 A KR20080099539 A KR 20080099539A
Authority
KR
South Korea
Prior art keywords
code
client
time
server
result
Prior art date
Application number
KR1020070045203A
Other languages
English (en)
Other versions
KR100914771B1 (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 KR1020070045203A priority Critical patent/KR100914771B1/ko
Priority to PCT/KR2008/002617 priority patent/WO2008140219A2/en
Priority to US12/598,945 priority patent/US9830434B2/en
Priority to JP2010507331A priority patent/JP4979812B2/ja
Publication of KR20080099539A publication Critical patent/KR20080099539A/ko
Application granted granted Critical
Publication of KR100914771B1 publication Critical patent/KR100914771B1/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
    • 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
    • G06F21/31User authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/105Arrangements for software license management or administration, e.g. for managing licenses at corporate level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

본 발명은 보안 시스템에 관한 것으로, 특히, 클라이언트(Client)와 서버(Server)가 네트워크에 의해 접속된 환경(이하, "CS 환경"이라 한다.)에 있어서 서버는 불규칙한 일회용 실행코드를 생성하여 클라이언트에 전송하고, 클라이언트는 메모리에 영역에서 직접 일회용 실행코드를 실행하여 그 실행 결과를 전달함과 동시에 이를 삭제하고, 서버는 다시 실행결과를 판단하여 오류가 있는 경우에 클라이언트와의 접속을 차단하는 기술적 특징을 통해 클라이언트의 위변조, 도용 등을 감시할 수 있는 효과가 있다.
일회용 실행코드(One-Time Execution Code), 실행 결과(Execution Result)

Description

일회용 실행 코드를 이용한 보안 시스템 및 보안 방법{SYSTEM AND METHOD FOR SECURITY USING ONE-TIME EXECUTION CODE}
도 1 은 본 발명에 의한 일회용 실행 코드를 이용한 보안 시스템의 개념을 나타내는 도면이다.
도 2 는 본 발명에 의한 일회용 실행 코드를 이용한 보안 시스템의 구성을 나타내는 도면이다.
도 3 은 본 발명에 의한 일회용 실행 코드의 처리 순서를 나타내는 도면이다.
도 4 는 본 발명에 의한 일회용 실행 코드를 이용한 보안 시스템의 클라이언트측의 동작 흐름을 나타내는 도면이다.
도 5 는 본 발명에 의한 일회용 실행코드를 이용한 보안 시스템의 서버측 동작 흐름을 나타내는 도면이다.
도 6 은 본 발명에 의한 클라이언트측의 클라이언트 API의 구성을 나타내는 도면이다.
도 7 은 본 발명에 의한 서버측의 서버 API의 구성을 나타내는 도면이다.
<도면의 주요 부분에 대한 부호의 설명>
10 : 클라이언트(Client) 20 : 서버(server)
110 : 클라이언트 프로그램 120 : 클라이언트 API
130 : 코드 컨테이너 210 : 서버 프로그램
220 : 서버 API 230 : 연결 제어부
240 : 결과 분석부 250 : 일회용 실행코드 생성부
본 발명은 보안 시스템에 관한 것으로, 특히, 클라이언트(Client)와 서버(Server)가 네트워크에 의해 접속된 환경(이하, "CS 환경"이라 한다.)에 있어서 서버에서 생성된 일회용 실행 코드를 이용하여 복수의 클라이언트의 위변조, 도용 등을 감시하여 클라이언트 프로그램에 문제가 있는 경우에 클라이언트의 접속을 차단하는 일회용 실행코드를 이용한 보안 시스템 및 방법에 관한 것이다.
최근 인터넷의 서비스가 다양화되고, 인터넷을 사용하는 빈도의 증가에 따라 인터넷을 이용하는 사용자의 개인 정보를 인터넷을 통해 유출하여 악의적인 목적으로 사용하는 경우의 범죄가 빈번하게 발생하고 있다. 이에 따라, 클라이언트 PC에 저장된 개인 정보의 유출을 방지하기 위해 여러 종류의 보안 시스템 및 보안 방법들이 개발되어 판매되고 있다.
하지만, 인터넷을 이용한 정보 시스템의 대다수를 차지하고 있는 CS 환경의 정보 시스템에서 클라이언트 자체를 위변조하거나 도용할 경우 해당 서버는 아무런 의심없이 서버 내에 저장된 중요한 개인 정보를 클라이언트로 전송해 주기 때문에 기존의 개인 정보 보호를 위한 보안 시스템은 이 경우에 무용지물이 될 수 밖에 없다.
특히, 온라인 게임의 경우에는 게임용 해킹툴 등의 악성 코드를 이용하여 클라이언트 프로그램을 무력화하는 경우에는 게임의 규칙이 무너지게 되고, 공정한 게임을 수행할 수 없으므로 공정한 게임으로부터 게임을 하는 사람들이 흥미를 가질 수 없는 문제가 있다. 예를 들어, 온라인 게임에서 Non Client BOT에 의해 많은 문제가 발생하고 있다. 이에 따라, 온라인 상에서 게임 서비스를 제공하는 게임 제공자들은 게임을 즐기는 사람이 줄어드는 것에 의해 많은 경제적인 손실을 입을 수밖에 없다.
상기와 같은 문제를 해결하기 위한 본 발명의 목적은, 서버에서 클라이언트 프로그램이 정상적으로 작동하는지 여부를 판단할 수 있는 일회용 실행코드를 생성하여 클라이언트에 전송하고, 일회용 실행코드의 실행결과를 수신하여 그 실행결과에 오류가 있는 경우에 클라이언트 접속을 차단하여 위변조, 도용 또는 사칭을 방지하는 일회용 실행 코드를 이용한 보안 시스템 및 보안 방법을 제공하는데 있다.
또한, 본 발명의 목적은 클라이언트측에서 일회용 실행코드에 의한 클라이언 트의 위변조 등을 판단하는지 여부를 인식할 수 없도록 일회용 실행코드를 파일로 생성하지 않고, 현재 실행중인 클라이언트 프로그램의 메모리 영역에 직접 적재하여 실행할 수 있도록 하는 일회용 실행 코드를 이용한 보안 시스템 및 보안 방법을 제공하는데 있다.
상기와 같은 본 발명의 목적을 달성하기 위하여, 본 발명의 일회용 실행 코드를 이용한 보안 시스템은
서버와 클라이언트가 네트워크로 연결된 환경에 있어서, 상기 서버로부터 일회용 실행코드를 수신하여 현재 실행 중인 클라이언트 프로그램의 메모리 영역에 확보된 코드 컨테이너에 적재하고, 상기 적재된 일회용 실행코드를 실행하여 그 실행 결과를 상기 서버로 전송하고 상기 일회용 실행코드를 삭제하는 클라이언트를 포함한다.
이때, 상기 코드 컨테이너는 상기 클라이언트 프로그램이 실행될 때 미리 확보되어, 상기 일회용 실행코드가 수신될 때, 상기 일회용 실행코드를 적재하는 것을 특징으로 하고, 상기 일회용 실행코드는 상기 서버로부터 전송되는 패킷의 분석을 통해 추출되고, 또한, 상기 일회용 실행코드는 파일로 생성되지 않고, 상기 클라이언트 프로그램의 메모리 영역에 직접 적재되는 것을 특징으로 한다.
또한, 일회용 실행코드를 이용한 보안 시스템은
불규칙적인 일회용 실행코드를 생성하여 상기 클라이언트에 전송하는 일회용 실행코드 생성부, 상기 클라이언트로부터 전달된 상기 일회용 실행코드의 실행 결과를 분석하여 상기 결과에 대한 오류의 발생 여부를 판단하는 결과 분석부, 상기 결과 분석부에 의해 오류가 발생하면, 상기 클라이언트와의 접속을 단절하는 클라이언트 연결 제어부를 포함하는 것을 특징으로 하는 서버를 포함한다.
이때, 상기 일회용 실행코드 생성부는 랜덤함수를 호출하여 그 결과값에 따라 일회용 실행코드를 획득하여 생성하는 것을 특징으로 하고, 특히, 일회용 실행코드의 획득은 미리 설정된 데이터 베이스로부터 획득하거나, 혹은 새롭게 생성하는 것을 특징으로 한다.
한편, 상기 결과 분석부는 상기 일회용 실행코드의 실행 결과가 수신되지 않거나, 혹은 상기 일회용 실행코드의 실행 결과가 잘못된 경우에 오류가 발생하는 것으로 판단한다.
상기와 같은 본 발명의 목적을 달성하기 위하여, 본 발명의 일회용 실행 코드를 이용한 보안 방법은
서버로부터 일회용 실행코드를 수신하는 1 단계, 상기 수신된 일회용 실행코드를 현재 실행 중인 클라이언트 프로그램의 메모리 영역의 코드 컨테이너에 적재하는 2 단계, 상기 적재된 일회용 실행 코드를 실행하여 그 결과를 상기 서버로 전송하는 3 단계, 상기 결과가 서버로 전송되면, 상기 적재된 일회용 실행코드를 삭제하는 4 단계를 포함한다.
또한, 본 발명의 일회용 실행코드를 이용한 보안 방법은
일회용 실행 코드를 생성하여 네트워크로 연결된 클라이언트에 전송하는 1 단계, 상기 클라이언트로부터 상기 일회용 실행코드의 실행 결과를 수신하여, 상기 결과를 분석하는 2 단계, 상기 결과에 오류가 발생하는 경우에, 상기 클라이언트와의 연결을 차단하는 3 단계를 포함하는 것을 특징으로 한다.
이때, 상기 일회용 실행 코드의 생성은 랜덤 함수를 호출하는 단계와 상기 호출된 랜덤 함수의 결과를 이용하여 일회용 실행코드를 획득하여 생성하는 단계를 포함하는 것을 특징으로 한다.
이하, 첨부된 도면을 참조하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있는 바람직한 실시예를 상세히 설명한다. 다만, 본 발명의 바람직한 실시예에 대한 동작 원리를 상세하게 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략한다.
도 1 은 본 발명에 의한 일회용 실행 코드를 이용한 보안 시스템의 개념을 나타내는 도면이다.
본 발명의 일회용 실행코드를 이용한 보안 시스템은 클라이언트(10)와 서버(20)가 네트워크(30)에 의해 연결된 환경에서 클라이언트(10) 프로그램이 위변 조, 도용되는 것을 방지하고, 클라이언트(10)와 서버(20) 사이의 패킷을 그대로 모방하는 가짜 클라이언트를 서버(20)로부터 차단하기 위한 것이다.
이를 위해, 서버(20)는 일회용 실행코드(One-Time Execution Code, 40)를 이용하여, 클라이언트(10)의 정상 여부를 판단한다. 일회용 실행코드(One-Time Execution Code, 40)는 클라이언트(10) 프로그램이 정상적으로 작동하고 있는지를 판단하기 위해 패킷에 포함되는 코드를 말한다.
예를 들어, 1+1의 연산 값이 무엇인지를 계산하도록 하는 코드, 혹은 체크섬(checksum)의 값을 계산하도록 하는 코드, 정상적인 클라이언트 프로그램(Original Client Program)에서 얻을 수 있는 다양한 값을 요구하는 코드를 일회용 실행코드(One-Time Execution Code, 40)로 생성할 수 있다.
일회용 실행코드(One-Time Execution Code, 40)가 서버(20)에서 생성되어, 클라이언트(10)에 전달되면, 클라이언트(10)는 일회용 실행코드(One-Time Execution Code, 40)에 대한 연산을 수행하여 그 결과값을 서버(20)로 다시 전달한다.
결과값이 서버(20)에 전달되면, 서버(20)는 전달된 결과값이 정상인지를 판단하고, 판단결과 오류가 발생하는 경우에 클라이언트(10)와의 접속을 단절한다. 예를 들어, 일회용 실행코드(One-Time Execution Code, 40)에 대한 결과값이 전달되지 않는 경우, 또는 1+1에 대한 연산결과, 체크섬(checksum)의 값 또는 정상적인 클라이언트 프로그램에 의해 얻어지는 값에 오류가 있는 경우에 서버(20)는 클라이언트(10)가 접속하는 것을 차단한다.
즉, 클라이언트(10)는 일회용 실행코드(One-Time Execution Code, 40)에 대한 연산을 수행하여 그 실행 결과(Execution Result, 50)를 서버(20)에 전달하고, 서버(20)는 실행 결과(Execution Result, 50)에 오류가 있는지 판단하여, 클라이언트(10)와의 접속을 제어한다(60).
다만, 클라이언트(10)에서 일회용 실행코드(One-Time Execution Code, 40)에 대한 정보는 파일로 생성되지 않고, 직접 메모리에 저장되어 실행된 후에 삭제되는데 이에 대한 구체적인 설명은 도 2에서 설명한다.
도 2 는 본 발명에 의한 일회용 실행 코드를 이용한 보안 시스템의 구성을 나타내는 도면이다.
일회용 실행코드(One-Time Execution Code)에 의한 보안 시스템은 클라이언트(10)와 서버(20)로 구성된다. 하나의 서버(20)에는 복수의 클라이언트(10)가 접속될 수 있지만, 여기서는 하나의 클라이언트(10)와 하나의 서버(20)가 네트워크(30)에 의해 연결된 경우를 중심으로 설명한다.
클라이언트(10)는 클라이언트 프로그램(110), 클라이언트 API(120) 그리고 일회용 실행코드 컨테이너(130)(이하, "코드 컨테이너"라 한다.)로 구성된다. 클라이언트 프로그램(110)은 클라이언트(10)가 서버(20)와의 관계에서 운용하는 프로그램을 말한다. 예를 들어, 클라이언트(10)가 서버(20)를 통해 온라인 게임을 수행하는 경우에, 클라이언트(10)에는 그 게임을 수행하기 위한 프로그램이 설정되어 있어야 한다.
클라이언트 프로그램(110)이 실행되면, 클라이언트의 운영체제는 클라이언트(10)에 저장되어 있는 오리지날 클라이언트 프로그램(110)과 클라이언트 API(120)를 메모리에 로딩한다. 다만, 클라이언트 API(120)는 클라이언트 프로그램(110)에 포함되어 존재할 수 있다.
코드 컨테이너(130)는 서버(20)로부터 전달되는 일회용 실행코드(One-Time Execution Code)를 적재하는 메모리 공간이다. 코드 컨테이너(130)는 현재 실행 중인 클라이언트 프로그램의 메모리 영역에 확보된다. 구체적으로, 클라이언트 프로그램(110)이 실행될 때 제공된 클라이언트 API(120)를 이용해 일회용 실행코드(One-Time Execution Code)를 적재하기 위한 메모리 공간인 코드 컨테이너(130)가 확보된다. 클라이언트(10)의 각각의 구성은 도 3에서 구체적으로 설명한다.
서버(20)는 일회용 실행코드(One-Time Execution Code)를 생성하여 클라이언트(10)에 전달하고, 그 실행 결과(Execution Result)를 클라이언트(10)로부터 수신하여 이를 분석하고, 오류가 있는 경우에 클라이언트(10)와의 접속을 끊는다.
이를 위해, 서버(20)는 서버 프로그램(210)과 서버 API(220), 연결 제어부(230), 결과 분석부(240), 일회용 실행코드 생성부(250) 그리고 데이터베이스(260)을 포함하여 이루어진다.
서버(20)는 복수의 클라이언트와 접속하여, 클라이언트의 요청(Request)에 대한 응답을 계속적으로 수행한다. 따라서, 서버(20)의 서버 프로그램(210)은 적어도 하나의 클라이언트가 접속되어 있는 한 계속하여 실행된다. 따라서, 서버(20)의 운영체제는 서버 프로그램(210)과 서버 API(220)를 로딩한다.
일회용 실행코드 생성부(250)는 클라이언트 프로그램(110)의 정상 여부를 판단하기 위한 일회용 실행코드(One-Time Execution Code)를 생성하여 전송한다. 클라이언트에서 일회용 실행코드(One-Time Execution Code)에 대한 정보를 알 수 없도록 하기 위해 예측이 어려운 불규칙한 일회용 코드를 생성한다. 이를 위해, 일회용 실행코드 생성부(250)는 랜덤 함수를 호출하여 그 결과값에 따라 일회용 실행코드의 생성 여부를 판단하여 난수성 일회용 실행코드를 생성한다.
일회용 실행코드는 데이터 베이스(260)에 미리 설정되어 있는 데이터를 이용하여 생성할 수 있을 뿐만 아니라, 난수 발생기를 이용해 새로운 일회용 실행코드를 임의의 생성할 수 있다.
생성된 일회용 실행코드(One-Time Execution Code)는 서버 프로그램(210)을 통해 클라이언트(10)에 전달된다.
결과 분석부(240)는 전달된 일회용 실행코드(One-Time Execution Code)에 대한 실행 결과(Execution Result)를 클라이언트(10)로부터 수신하고, 이를 분석하여 오류 여부를 판단한다. 결과 분석부(240)는 전송된 일회용 실행코드(One-Time Execution Code)에 대한 실행결과를 미리 데이터 베이스(260)에 저장하여, 클라이언트(10)로부터 전달된 실행 결과(Execution Result)와 비교하여 오류가 발생하였는지 판단한다. 또한, 실행 결과(Execution Result)가 전달되지 않는 경우도 오류가 발생한 것으로 판단한다.
결과 분석부(240)는 일회용 실행코드(One-Time Execution Code)가 간단한 연산 혹은 클라이언트 프로그램(110)의 수행과정에서 얻어지는 과정일 경우에는 자체 적인 판단에 의해 구할 수도 있다.
연결 제어부(230)는 결과 분석부(240)에 의해 실행 결과(Execution Result)에 오류가 있는 경우에는 클라이언트(10)의 연결을 차단한다.
도 3 은 본 발명에 의한 일회용 실행 코드의 처리 순서를 나타내는 도면이다.
클라이언트 API(120)를 포함한 클라이언트 프로그램(110)이 실행되면, 운영체제는 해당 클라이언트 프로그램(110)과 클라이언트 API(120)를 메모리맵상에서 XXXX번지 이후에 로딩한다. 이때, 클라이언트 API(120)는 서버(20)로부터 전달될 일회용 실행코드(One-Time Execution Code)를 적재할 코드 컨테이너(130)를 확보한다.
일회용 실행코드의 처리순서는 먼저 ①클라이언트(10)가 서버(20)로부터 일회용 실행코드를 수신한다. 다만, 일회용 실행코드의 수신은 서버(20)로부터 전달된 패킷으로부터 일회용 실행코드를 추출하여 수신할 수 있다. ②일회용 실행코드가 수신되면, 수신된 일회용 실행코드를 코드 컨테이너(130)에 적재한다. ③일회용 실행코드가 적재되면, 클라이언트 API(120)는 클라이언트 프로그램(110)을 이용하여 일회용 실행코드를 실행하여 실행결과를 획득한다. 다만, 일회용 실행코드는 클라이언트에서 파일로 생성되지 않고 메모리의 코드 컨테이너(130)에 직접 로딩되어 실행된다. ④일회용 실행코드가 실행되어 실행결과가 얻어지면, 이를 클라이언트 프로그램에 전달하고, 다시 ⑤네트워크를 통해 서버로 전달한다. ⑥실행 결과가 전 달되면, 일회용 실행코드는 그 역할을 끝마쳤으므로, 코드 컨테이너(130)에서 삭제된다.
도 4 는 본 발명에 의한 일회용 실행 코드를 이용한 보안 시스템의 클라이언트측의 동작 흐름을 나타내는 도면이다.
클라이언트는 클라이언트 프로그램 실행에 따라 클라이언트 프로그램 및 클라이언트 API를 메모리에 로딩한다.(S410)
클라이언트 프로그램은 서버로부터 패킷을 수신한다.(S420) 클라이언트와 서버는 네트워크에 의해 연결되어 계속하여 패킷을 송수신한다.
클라이언트 프로그램은 패킷이 수신되면, 패킷에 일회용 실행코드가 존재하는지 여부를 판단한다.(S430)
판단결과 일회용 실행코드가 존재하면, 일회용 실행코드를 추출한다.(S440)
일회용 실행코드가 추출되면, 일회용 실행코드를 파일로 생성되지 않고, 클라이언트 프로그램의 메모리 영역에 확보된 코드 컨테이너에 적재한다.(S441)
클라이언트 프로그램은 코드 컨테이너에 일회용 실행코드가 적재되면, 이를 실행하여 실행결과를 구한다.(S442)
실행결과가 구해지면, 실행결과를 네트워크를 통해 서버로 전달한다.(S443)
일회용 실행코드에 대한 실행결과가 전달되면, 코드 컨테이너에 적재된 일회용 실행코드를 삭제한다.(S444) 그리고, 패킷을 계속하여 수신하고, 동일한 과정을 수행한다.
수신된 패킷에 일회용 실행코드가 존재하지 않는 경우에는 클라이언트의 프로그램이 종료하는지 여부를 판단하여(S450), 클라이언트 프로그램이 종료하면, 클라언트를 종료하고, 종료하지 않는 경우에는 클라이언트 프로그램을 계속화여 실행한다.(S451)
도 5 는 본 발명에 의한 일회용 실행코드를 이용한 보안 시스템의 서버측 동작 흐름을 나타내는 도면이다.
서버 프로그램이 실행되면, 서버 운영체제는 서버 프로그램과 서버 API를 로딩하고, 일회용 실행코드 서브루틴을 호출한다.(S500)
호출된 일회용 실행코드 서브루틴에 의한 실행과정을 통해, 클라이언트로부터의 실행결과에 대한 오류 여부를 판단한 결과 리턴되는 값이 TRUE인지 여부를 판단하여(S560), 리턴되는 값이 TRUE 인 경우에는 서버 프로그램을 계속하여 실행하고(S580), 리턴되는 값이 TRUE 가 아닌 경우에는 클라이언트와의 연결을 종료한다.(S570) 이하, 일회용 실행코드 서브루틴에 의한 실행과정(S510)을 설명한다.
서버 프로그램 및 서버 API가 로딩되면, 일회용 실행코드 생성부(250)는 랜덤 함수를 호출한다.(S520)
랜덤 함수가 호출되면, 호출된 랜덤 함수에 의한 값을 이용해 일회용 실행코드를 전송할지 여부를 판단한다.(S530) 일회용 실행코드는 계속하여 전달할 필요는 없는 불규칙적인 시간적 간격을 두고 전달하여 그 결과 값을 이용하면 된다.
랜덤 함수에 의해 값에 따라 일회용 실행코드를 전송할 것으로 결정되면, 일 회용 실행코드 생성부(250)는 일회용 실행코드를 생성한다.(S540) 일회용 실행코드는 데이터 베이스에 미리 저장된 코드를 이용할 수 있고, 또는 새로운 코드를 생성할 수 있다. 다만, 일회용 실행코드는 클라이언트측에서 쉽게 인식할 수 없도록 불규칙적으로 생성하는 것이 바람직하다.
일회용 실행코드가 생성되면, 일회용 실행코드를 클라이언트에 전달한다.(S541) 일회용 실행코드는 패킷에 포함되어 네트워크를 통해 클라이언트에 전달된다.
일회용 실행코드를 클라이언트에 전달하면, 클라이언트는 일회용 실행코드를 실행하여 실행결과를 서버로 다시 전달한다. 하지만, 클라이언트 프로그램이 위변조, 도용 또는 사칭되는 경우에는 일회용 실행코드가 전달되었는지 알 수 없으므로 그 실행결과를 서버를 다시 전달할 수 없다.
따라서, 서버의 결과 분석부(S542)는 클라이언트로부터 실행 결과가 수신되는지 여부를 판단한다.(S542)
판단결과, 실행결과가 수신되지 않는 경우에는 오류가 발생한 것으로 판단하여 리턴 "FALSE"를 출력한다.
판단결과, 실행결과가 수신되면, 실행결과에 오류가 있는지 여부를 판단한다.(S543) 만일, 오류가 발생하는 경우에는 결과 분석부(240)는 리턴 "FALSE"를 출력하고(S544), 오류가 발생하지 않은 경우에는 리턴 "TRUE"를 출력한다.(S550)
이렇게 일회용 실행코드의 서브루틴에 의한 리턴의 "TRUE" 여부가 출력되면, 이를 이용하여 클라이언트의 접속을 단절할지 여부를 판단한다.
도 6 은 본 발명에 의한 클라이언트측의 클라이언트 API의 구성을 나타내는 도면이다.
클라이언트 API는 서버측에서 전달된 데이터가 일회용 실행 코드로 판단되면 Process_OneTime_Code(600)로 명명된 함수를 클라이언트 프로그램으로부터 호출한다. 이 함수의 명칭은 다양하게 변경할 수 있다. Process_OneTime_Code(600)는 수신된 일회용 실행코드를 실행하고, 그 실행결과를 서버로 전송한 후에 일회용 실행코드를 제거하는 기능을 수행한다.
구체적으로, Process_OneTime_Code(600)는 코드 컨테이너를 할당하는 코드 컨테이너 할당기(610), 서버측에서 전달된 일회용 실행코드가 암호화된 경우에 일회용 실행코드를 복호화하는 코드 복호화기(620), 전달된 일회용 실행코드를 코드 컨테이너에 적재하고, 일회용 실행코드를 실행하는 코드 실행기(630), 코드 실행기(630)에 의해 실행된 일회용 실행코드의 실행결과를 전달하는 실행 결과 처리기(640), 실행결과가 전달되면 코드 컨테이너에 적재된 일회용 실행코드를 제거하는 코드 제거기(650)를 포함하여 이루어진다.
도 7 은 본 발명에 의한 서버측의 서버 API의 구성을 나타내는 도면이다.
서버측의 서버 API는 클라이언트 프로그램의 정상 여부를 판단하기 위해, 불규칙한 성질을 가지는 일회용 실행코드를 생성하여 클라이언트에 전달하고, 또한 클라이언트로부터 전달된 실행결과를 분석하여 클라이언트의 접속 차단 여부를 결 정하기 위해 Get_OneTime_Code(700) 및 Check_Result(740)로 명명된 함수를 서버 프로그램으로부터 호출한다. 이 함수의 명칭은 변경가능하다.
서버 API가 Get_OneTime_Code(700) 함수를 호출하면, Get_OneTime_Code(700)는 난수 발생기(730)의 결과에 따라 일회용 실행코드를 생성할지 여부를 결정한다. 일회용 실행코드는 클라이언트 프로그램이 정상적인 것인지 여부를 판단하기 위해서만 필요하므로, 이에 따라 적당한 시간의 간격을 두고, 다양한 종류로 형성될 수 있다.
난수 발생기(730)의 결과에 따라 일회용 실행코드를 생성할 것으로 결정이 되면, 코드 생성기(710)는 일회용 실행코드를 생성한다. 코드 생성기(710)에 의해 일회용 실행코드가 생성되면, 코드 암호기(720)는 생성된 일회용 실행코드를 암호화한 후 암호화된 일회용 실행코드를 클라이언트에 전달한다. 그리고 클라이언트로부터 일회용 실행코드에 대한 실행 결과를 수신한다.
서버 API는 클라이언트로부터 실행 결과를 수신하면, 실행 결과를 인자로 하여 Check_Result(740) 함수를 호출한다. Check_Result(740)는 수신된 실행 결과를 결과 분석기(750)를 이용해 분석하여, 실행결과에 오류가 있는지 여부를 판단한다. 결과 분석기(750)에 의해 오류가 있는 경우에는 접속 제어기(760)를 이용해 클라이언트와의 연결을 차단한다.
이상에서 설명한 본 발명은 전술한 실시예 및 첨부된 도면에 의해 한정되는 것은 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러가지 치환, 변형 및 변경이 가능하다는 것이 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 당업자에게 있어 명백할 것이다.
상술한 바와 같이, 본 발명에 의한 일회용 실행코드를 이용한 보안 시스템은 일회용 실행코드를 이용하여 클라이언트 프로그램의 정상 여부를 판단할 수 있어, 클라이언트와 서버 사이의 모든 패킷을 분석하여 규칙성을 찾아낸 후 그 규칙성을 이용하여 제작된 모조 클라이언트 프로그램을 쉽게 찾아 클라이언트의 접속을 차단할 수 있는 효과가 있다.
또한, 본 발명에 의한 일회용 실행코드를 이용한 보안 시스템은 일회용 실행코드를 서버에서 불규칙적으로 생성하여 클라이언트에 전달하고, 클라이언트는 일회용 실행코드를 메모리에 직접 적재하여 실행한 후에 적재된 일회용 실행코드를 삭제하여 클라이언트를 위변조하고자 하는 자가 일회용 실행코드에 관한 정보를 인식할 수 없는 효과가 있다.

Claims (12)

  1. 서버와 클라이언트가 네트워크로 연결된 환경에 있어서,
    상기 서버로부터 일회용 실행코드를 수신하여 현재 실행 중인 클라이언트 프로그램의 메모리 영역에 확보된 코드 컨테이너에 적재하고, 상기 적재된 일회용 실행코드를 실행하여 그 실행 결과를 상기 서버로 전송하고 상기 일회용 실행코드를 삭제하는 것을 특징으로 하는 일회용 실행코드를 이용한 보안 클라이언트.
  2. 제 1 항에 있어서, 상기 코드 컨테이너는
    상기 클라이언트 프로그램이 실행될 때 미리 확보되어, 상기 일회용 실행코드가 수신될 때, 상기 일회용 실행코드를 적재하는 것을 특징으로 하는 일회용 실행코드를 이용한 보안 클라이언트.
  3. 제 1 항에 있어서, 상기 일회용 실행코드는
    상기 서버로부터 전송되는 패킷을 분석하여 추출되는 것을 특징으로 하는 일회용 실행코드를 이용한 보안 클라이언트.
  4. 제 1 항에 있어서, 상기 수신된 일회용 실행코드는
    파일로 생성되지 않고, 상기 클라이언트 프로그램의 메모리 영역에 직접 적재되는 것을 특징으로 하는 일회용 실행코드를 이용한 보안 클라이언트.
  5. 서버와 클라이언트가 네트워크로 연결된 환경에 있어서,
    불규칙한 일회용 실행코드를 생성하여 상기 클라이언트에 전송하는 일회용 실행코드 생성부;
    상기 클라이언트로부터 전달된 상기 일회용 실행코드의 실행 결과를 분석하여 상기 결과에 대한 오류의 발생 여부를 판단하는 결과 분석부;
    상기 결과 분석부에 의해 오류가 발생하면, 상기 클라이언트와의 접속을 단절하는 클라이언트 연결 제어부를 포함하는 것을 특징으로 하는 일회용 실행 코드를 이용한 보안 서버.
  6. 제 5 항에 있어서, 상기 일회용 실행코드 생성부는
    랜덤함수를 호출하여 그 결과값에 따라 일회용 실행코드를 획득하여 생성하는 것을 특징으로 하는 일회용 실행 코드를 이용한 보안 서버.
  7. 제 6 항에 있어서, 상기 일회용 실행코드 생성부는
    상기 일회용 실행코드의 획득은 미리 설정된 데이터 베이스로부터 획득하거나, 혹은 새롭게 생성하는 것을 특징으로 하는 일회용 실행코드를 이용한 보안 서버.
  8. 제 5 항에 있어서, 상기 결과 분석부는
    상기 일회용 실행코드의 실행 결과가 수신되지 않거나, 혹은 상기 일회용 실행코드의 실행 결과가 잘못된 경우에 오류가 발생하는 것으로 판단하는 것을 특징으로 하는 일회용 실행코드를 이용한 보안 서버.
  9. 서버로부터 일회용 실행코드를 수신하는 1 단계;
    상기 수신된 일회용 실행코드를 현재 실행 중인 클라이언트 프로그램의 메모리 영역의 코드 컨테이너에 적재하는 2 단계;
    상기 적재된 일회용 실행 코드를 실행하여 그 결과를 상기 서버로 전송하는 3 단계;
    상기 결과가 서버로 전송되면, 상기 적재된 일회용 실행코드를 삭제하는 4 단계를 포함하는 클라이언트에서의 일회용 실행코드를 이용한 보안 방법.
  10. 일회용 실행 코드를 생성하여 네트워크로 연결된 클라이언트에 전송하는 1 단계;
    상기 클라이언트로부터 상기 일회용 실행코드의 실행 결과를 수신하여, 상기 결과를 분석하는 2 단계;
    상기 결과에 오류가 발생하는 경우에, 상기 클라이언트와의 연결을 차단하는 3 단계를 포함하는 서버에서의 일회용 실행코드를 이용한 보안 방법.
  11. 제 10 항에 있어서, 상기 일회용 실행 코드의 생성은
    랜덤 함수를 호출하는 단계;
    상기 호출된 랜덤 함수의 결과를 이용하여 일회용 실행코드를 획득하여 생성하는 단계를 포함하는 것을 특징으로 하는 서버에서의 일회용 실행코드를 이용한 보안 방법.
  12. 제 11 항에 있어서, 상기 일회용 실행코드는
    미리 설정된 데이터 베이스로부터 일회용 실행코드를 획득하거나, 혹은 새롭게 생성하여 획득하는 것을 특징으로 하는 서버에서의 일회용 실행코드를 이용한 보안 방법.
KR1020070045203A 2007-05-09 2007-05-09 일회용 실행 코드를 이용한 보안 시스템 및 보안 방법 KR100914771B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020070045203A KR100914771B1 (ko) 2007-05-09 2007-05-09 일회용 실행 코드를 이용한 보안 시스템 및 보안 방법
PCT/KR2008/002617 WO2008140219A2 (en) 2007-05-09 2008-05-09 System and method for security using one-time execution code
US12/598,945 US9830434B2 (en) 2007-05-09 2008-05-09 System and method for security using one-time execution code
JP2010507331A JP4979812B2 (ja) 2007-05-09 2008-05-09 一回用実行コードを利用したセキュリティーシステム及びセキュリティー方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070045203A KR100914771B1 (ko) 2007-05-09 2007-05-09 일회용 실행 코드를 이용한 보안 시스템 및 보안 방법

Publications (2)

Publication Number Publication Date
KR20080099539A true KR20080099539A (ko) 2008-11-13
KR100914771B1 KR100914771B1 (ko) 2009-09-01

Family

ID=40002745

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070045203A KR100914771B1 (ko) 2007-05-09 2007-05-09 일회용 실행 코드를 이용한 보안 시스템 및 보안 방법

Country Status (4)

Country Link
US (1) US9830434B2 (ko)
JP (1) JP4979812B2 (ko)
KR (1) KR100914771B1 (ko)
WO (1) WO2008140219A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101047118B1 (ko) * 2008-12-22 2011-07-07 한국전자통신연구원 익스플로잇 코드를 탐지하는 네트워크 보안시스템 및 방법

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8776038B2 (en) * 2008-08-07 2014-07-08 Code Systems Corporation Method and system for configuration of virtualized software applications
US8434093B2 (en) 2008-08-07 2013-04-30 Code Systems Corporation Method and system for virtualization of software applications
US8954958B2 (en) 2010-01-11 2015-02-10 Code Systems Corporation Method of configuring a virtual application
US9104517B2 (en) 2010-01-27 2015-08-11 Code Systems Corporation System for downloading and executing a virtual application
US8959183B2 (en) 2010-01-27 2015-02-17 Code Systems Corporation System for downloading and executing a virtual application
US9229748B2 (en) 2010-01-29 2016-01-05 Code Systems Corporation Method and system for improving startup performance and interoperability of a virtual application
US8763009B2 (en) 2010-04-17 2014-06-24 Code Systems Corporation Method of hosting a first application in a second application
US9218359B2 (en) 2010-07-02 2015-12-22 Code Systems Corporation Method and system for profiling virtual application resource utilization patterns by executing virtualized application
US9021015B2 (en) 2010-10-18 2015-04-28 Code Systems Corporation Method and system for publishing virtual applications to a web server
US9209976B2 (en) 2010-10-29 2015-12-08 Code Systems Corporation Method and system for restricting execution of virtual applications to a managed process environment
WO2014065643A1 (en) * 2012-10-25 2014-05-01 Ventspils Augstskola A method for managing a software defined radio device installed on a small satellite
CN106372463B (zh) * 2016-08-22 2018-09-11 北京深思数盾科技股份有限公司 中间件保护方法、装置及系统

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN2217077Y (zh) * 1995-07-21 1996-01-10 北京亿鑫企业发展总公司 电子密码锁
KR100213188B1 (ko) * 1996-10-05 1999-08-02 윤종용 사용자 인증 장치 및 방법
US6315195B1 (en) * 1998-04-17 2001-11-13 Diebold, Incorporated Transaction apparatus and method
JP3995338B2 (ja) * 1998-05-27 2007-10-24 富士通株式会社 ネットワーク接続制御方法及びシステム
KR100684986B1 (ko) * 1999-12-31 2007-02-22 주식회사 잉카인터넷 온라인상에서의 실시간 유해 정보 차단 시스템 및 방법
FR2804810B1 (fr) * 2000-02-09 2003-09-12 France Telecom Activation de service par carte pre-payee virtuelle
US6829349B1 (en) * 2000-07-31 2004-12-07 Comdial Corporation System and method for monitoring and routing incoming calls
US7392388B2 (en) * 2000-09-07 2008-06-24 Swivel Secure Limited Systems and methods for identity verification for secure transactions
US6986040B1 (en) * 2000-11-03 2006-01-10 Citrix Systems, Inc. System and method of exploiting the security of a secure communication channel to secure a non-secure communication channel
JP2002153677A (ja) * 2000-11-17 2002-05-28 Square Co Ltd 情報端末、情報提供サーバ、オンラインゲーム方法および記録媒体
EP1338132A2 (en) * 2000-11-28 2003-08-27 Swivel Technologies Limited Secure file transfer method and system
US7613930B2 (en) * 2001-01-19 2009-11-03 Trustware International Limited Method for protecting computer programs and data from hostile code
CA2502134A1 (en) * 2002-06-19 2004-03-04 Secured Communications, Inc. Inter-authentication method and device
US7169050B1 (en) * 2002-08-28 2007-01-30 Matthew George Tyler Online gaming cheating prevention system and method
AU2003277004A1 (en) * 2002-09-26 2004-04-19 Video Furnace, Inc. Digital content delivery and viewing system and method
CA2523279A1 (en) * 2003-04-24 2004-11-11 Secureinfo Corporation Method, system and article of manufacture for data preservation and automated electronic software distribution across an enterprise system
JP3829125B2 (ja) * 2003-05-16 2006-10-04 株式会社コナミデジタルエンタテインメント ネットワークシステム、ネットワーク制御方法及びプログラム
US7277028B1 (en) * 2003-10-20 2007-10-02 Garth Janke Method and system for inter-vehicular communications and information reporting
KR20040027474A (ko) * 2003-11-10 2004-04-01 (주)오알솔루션즈코리아 네트워크 상에서 데이터베이스 시스템에 영향을 주지 않고데이터베이스 시스템의 접근을 통제하는 방법
US7984304B1 (en) * 2004-03-02 2011-07-19 Vmware, Inc. Dynamic verification of validity of executable code
US20080022290A1 (en) * 2004-03-18 2008-01-24 Nec Corporation Data Processing Device, Data Processing Method, and Data Processing Program
US7500098B2 (en) * 2004-03-19 2009-03-03 Nokia Corporation Secure mode controlled memory
JP4592369B2 (ja) 2004-09-10 2010-12-01 株式会社サスライト サービス提供サーバ
US7636783B2 (en) * 2004-12-06 2009-12-22 Microsoft Corporation Trial-before-purchase subscription game infrastructure for peer-peer networks
KR100723835B1 (ko) * 2004-12-15 2007-05-31 한국전자통신연구원 일회성 인증 코드를 이용한 키 인증/서비스 시스템 및 그방법
KR100503772B1 (ko) * 2005-03-11 2005-07-26 (주)위즈베이스 유틸리티 방식으로 데이터베이스 서버에 접속하여 수행되는작업을 감시하는 모니터링 시스템 및 방법
WO2006124357A2 (en) * 2005-05-11 2006-11-23 Bigfoot Networks, Inc. Distributed processing system and method
GB0514492D0 (en) * 2005-07-14 2005-08-17 Ntnu Technology Transfer As Secure media streaming
JP4818652B2 (ja) * 2005-07-22 2011-11-16 株式会社沖データ 端末管理システム
US7581244B2 (en) * 2006-01-25 2009-08-25 Seiko Epson Corporation IMX session control and authentication
US8495204B2 (en) * 2006-07-06 2013-07-23 Visible Measures Corp. Remote invocation mechanism for logging
US8117461B2 (en) * 2006-09-13 2012-02-14 Igt Method of randomly and dynamically checking configuration integrity of a gaming system
US20080220872A1 (en) * 2007-03-08 2008-09-11 Timothy Michael Midgley Method and apparatus for issuing a challenge prompt in a gaming environment
US8251704B2 (en) * 2007-04-12 2012-08-28 Microsoft Corporation Instrumentation and schematization of learning application programs in a computerized learning environment

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101047118B1 (ko) * 2008-12-22 2011-07-07 한국전자통신연구원 익스플로잇 코드를 탐지하는 네트워크 보안시스템 및 방법

Also Published As

Publication number Publication date
WO2008140219A2 (en) 2008-11-20
JP4979812B2 (ja) 2012-07-18
JP2010529522A (ja) 2010-08-26
US20100146590A1 (en) 2010-06-10
KR100914771B1 (ko) 2009-09-01
WO2008140219A3 (en) 2009-01-08
US9830434B2 (en) 2017-11-28

Similar Documents

Publication Publication Date Title
KR20080099539A (ko) 일회용 실행 코드를 이용한 보안 시스템 및 보안 방법
CN111651757B (zh) 攻击行为的监测方法、装置、设备及存储介质
CN106960148B (zh) 一种设备标识的分配方法和装置
US8056129B2 (en) Validating active computer terminal sessions
JP6086562B2 (ja) Emuクラスインターネットゲームのプラグインの識別
US10218717B1 (en) System and method for detecting a malicious activity in a computing environment
CN106339613A (zh) 一种应用数据的处理方法、终端及服务器
CN104606884B (zh) 一种游戏对战中的匹配方法及装置
CN109302394A (zh) 一种终端防模拟登录方法、装置、服务器及存储介质
CA2538693A1 (en) Personalisation
CN113472542A (zh) 基于sm3算法的网络攻击防御方法、装置、存储介质及客户终端、服务终端
CN107770053B (zh) 一种离线状态下即时信息提示方法
CN111092867B (zh) Ssh后门账号检测方法、装置及电子设备和存储介质
CN112583789A (zh) 被非法登录的登录接口确定方法、装置及设备
CN108833410B (zh) 一种针对HTTP Flood攻击的防护方法及系统
EP3024191B1 (en) Data processing system, center apparatus and program
KR101725065B1 (ko) 스마트폰을 이용한 계정 잠금 시스템 및 그 방법
JP2007310435A (ja) 情報管理システム
KR102036813B1 (ko) 블록체인 기반의 복지 포인트 처리 방법 및 시스템
CN104009963A (zh) 远程密码的安全认证机制
CN114363059A (zh) 一种攻击识别方法、装置及相关设备
CN108156144B (zh) 一种访问认证方法及对应装置
CN107465744B (zh) 数据下载控制方法及系统
JPH0950422A (ja) コンピュータネットワーク上の対話継承型アクセス制御方法及びそのサーバコンピュータ
US8495132B2 (en) Information processing system

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120821

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20130822

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140821

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150804

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160810

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170711

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180814

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20190807

Year of fee payment: 11