KR20160139914A - 소프트웨어의 변조 여부 탐지 시스템 및 방법 - Google Patents

소프트웨어의 변조 여부 탐지 시스템 및 방법 Download PDF

Info

Publication number
KR20160139914A
KR20160139914A KR1020150075827A KR20150075827A KR20160139914A KR 20160139914 A KR20160139914 A KR 20160139914A KR 1020150075827 A KR1020150075827 A KR 1020150075827A KR 20150075827 A KR20150075827 A KR 20150075827A KR 20160139914 A KR20160139914 A KR 20160139914A
Authority
KR
South Korea
Prior art keywords
nonce
identifier
software
server
terminal
Prior art date
Application number
KR1020150075827A
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 KR1020150075827A priority Critical patent/KR20160139914A/ko
Publication of KR20160139914A publication Critical patent/KR20160139914A/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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • G06F21/126Interacting with the operating system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Technology Law (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Telephonic Communication Services (AREA)

Abstract

소프트웨어의 변조 여부 탐지 시스템 및 방법이 개시된다. 본 발명의 일 실시예에 따른 소프트웨어의 변조 여부 탐지 시스템은 단말; 및 상기 단말로 식별자가 삽입된 소프트웨어를 제공하는 서버를 포함하며, 상기 소프트웨어는, 상기 서버로부터 논스를 수신하고, 상기 논스 및 상기 식별자를 암호화함으로써 생성되는 검증 요청값을 상기 서버로 송신하기 위한 프로그램 코드를 포함하고, 상기 서버는, 상기 소프트웨어가 설치된 상기 단말로부터 수신되는 상기 검증 요청값을 복호화하여 상기 소프트웨어의 변조 여부를 판단하도록 구성된다.

Description

소프트웨어의 변조 여부 탐지 시스템 및 방법{SYSTEM AND METHOD FOR DETECTING SOFTWARE TAMPERING}
개시되는 실시예들은 소프트웨어의 변조 여부를 탐지하기 위한 기술과 관련된다.
사물 인터넷(Internet of Things, IoT)은 각종 사물에 센서와 통신 기능을 내장하여 인터넷에 연결하는 기술을 의미한다. 여기서 사물이란 가전제품, 모바일 장비, 웨어러블 컴퓨터 등 다양한 임베디드 시스템을 의미한다. 한 연구에 따르면 2009년까지 사물 인터넷 기술을 사용하는 사물의 개수는 9억 개였으나 2020년까지 이 수가 260억 개에 이를 것으로 예상된다.
사물 인터넷 환경에서 사물(엔드포인트 디바이스; Endpoint Device)로부터 데이터를 수집하기 위해서는 먼저 수집되는 데이터의 무결성(Data Integrity)이 전제되어야 한다. 이러한 데이터 무결성은 데이터를 수집 및 전송하기 위하여 사물에 구비되는 소프트웨어(에이전트 또는 애플리케이션)의 무결성을 전제로 한다. 그러나 종래의 소프트웨어의 변조 탐지 여부에 대한 판단은 사물 내에서 이루어지는 것이 일반적이었는 바, 악의적 사용자가 리버스 엔지니어링(reverse engineering) 등을 통해 내부의 변조 탐지 로직을 우회하도록 소프트웨어를 변경하는 등의 행위에 대한 대비책이 부재하였다. 이에 따라 사물과 연결된 서버에서 사물에 구비된 소프트웨어의 변조 여부를 탐지하기 위한 기술이 필요하게 되었다.
대한민국 공개특허공보 제10-2013-0020861호 (2013.03.04)
개시되는 실시예들은 단말에 설치 또는 저장된 소프트웨어의 변조 여부를 원격으로 탐지하기 위한 수단을 제공하기 위한 것이다.
예시적인 실시예에 따르면, 단말; 및 상기 단말로 식별자가 삽입된 소프트웨어를 제공하는 서버를 포함하며, 상기 소프트웨어는, 상기 서버로부터 논스를 수신하고, 상기 논스 및 상기 식별자를 암호화함으로써 생성되는 검증 요청값을 상기 서버로 송신하기 위한 프로그램 코드를 포함하고, 상기 서버는, 상기 소프트웨어가 설치된 상기 단말로부터 수신되는 상기 검증 요청값을 복호화하여 상기 소프트웨어의 변조 여부를 판단하는, 소프트웨어의 변조 여부 탐지 시스템이 제공된다.
상기 프로그램 코드는, 상기 서버로부터 서버측 공개키를 수신하고, 상기 서버측 공개키를 이용하여 상기 논스 및 상기 식별자를 암호화하도록 구성될 수 있다.
상기 서버는, 상기 논스를 암호화하여 상기 단말로 제공하며, 상기 프로그램 코드는, 상기 암호화된 논스를 상기 식별자를 이용하여 복호화함으로써 상기 논스를 획득하도록 구성될 수 있다.
상기 서버는, 상기 서버측 공개키에 대응되는 서버측 개인키를 이용하여 상기 검증 요청값을 복호화할 수 있다.
상기 서버는, 복호화된 검증 요청값으로부터 논스 및 식별자를 획득하고, 획득된 논스 및 식별자가 기 저장된 논스 및 식별자와 일치하는 경우 상기 소프트웨어가 변조되지 않은 것으로 판단하고, 상기 획득된 논스 및 식별자 중 적어도 하나가 기 저장된 논스 및 식별자와 일치하지 않는 경우, 상기 소프트웨어가 변조된 것으로 판단할 수 있다.
다른 예시적인 실시예에 따르면, 소프트웨어에 식별자를 삽입하고, 상기 식별자가 삽입된 소프트웨어를 단말로 제공하는 소프트웨어 제공부; 및 상기 소프트웨어가 설치된 상기 단말에 논스를 송신하고, 상기 소프트웨어에 의해 생성되며, 상기 논스 및 상기 식별자를 암호화한 값인 검증 요청값이 상기 단말로부터 수신되는 경우, 상기 검증 요청값을 복호화하여 상기 소프트웨어의 변조 여부를 판단하는 변조 탐지부를 포함하는, 소프트웨어의 변조 여부 탐지 장치가 제공된다.
상기 소프트웨어는, 상기 서버로부터 서버측 공개키를 수신하고, 상기 서버측 공개키를 이용하여 상기 논스 및 상기 식별자를 암호화하기 위한 프로그램 코드를 포함할 수 있다.
상기 변조 탐지부는, 상기 논스를 암호화하여 상기 단말로 제공하며, 상기 프로그램 코드는, 상기 암호화된 논스를 상기 식별자를 이용하여 복호화함으로써 상기 논스를 획득하도록 구성될 수 있다.
상기 변조 탐지부는, 상기 서버측 공개키에 대응되는 서버측 개인키를 이용하여 상기 검증 요청값을 복호화할 수 있다.
상기 변조 탐지부는, 복호화된 검증 요청값으로부터 논스 및 식별자를 획득하고, 획득된 논스 및 식별자가 기 저장된 논스 및 식별자와 일치하는 경우 상기 소프트웨어가 변조되지 않은 것으로 판단하고, 상기 획득된 논스 및 식별자 중 적어도 하나가 기 저장된 논스 및 식별자와 일치하지 않는 경우, 상기 소프트웨어가 변조된 것으로 판단할 수 있다.
다른 예시적인 실시예에 따르면, 소프트웨어에 식별자를 삽입하고, 상기 식별자가 삽입된 소프트웨어를 단말로 제공하는 단계; 상기 소프트웨어가 설치된 상기 단말에 논스를 송신하는 단계; 상기 소프트웨어에 의해 생성되며, 상기 논스 및 상기 식별자를 암호화한 값인 검증 요청값을 상기 단말로부터 수신하는 단계; 및 수신된 상기 검증 요청값을 복호화하여 상기 소프트웨어의 변조 여부를 판단하는 단계를 포함하는 소프트웨어의 변조 여부 탐지 방법이 제공된다.
상기 소프트웨어는, 상기 서버로부터 제공되는 서버측 공개키를 이용하여 상기 논스 및 상기 식별자를 암호화함으로써 상기 검증 요청값을 생성하기 위한 프로그램 코드를 포함할 수 있다.
상기 논스를 송신하는 단계는, 상기 논스를 암호화하여 상기 단말로 제공하도록 구성되며, 상기 프로그램 코드는, 상기 암호화된 논스를 상기 식별자를 이용하여 복호화함으로써 상기 논스를 획득하도록 구성될 수 있다.
상기 변조 여부를 판단하는 단계는, 상기 서버측 공개키에 대응되는 서버측 개인키를 이용하여 상기 검증 요청값을 복호화하는 단계를 더 포함할 수 있다.
상기 변조 여부를 판단하는 단계는, 복호화된 검증 요청값으로부터 논스 및 식별자를 획득하는 단계; 및 획득된 논스 및 식별자를 기 저장된 논스 및 식별자와 비교하는 단계를 더 포함하며, 상기 비교하는 단계는, 획득된 논스 및 식별자가 기 저장된 논스 및 식별자와 일치하는 경우 상기 소프트웨어가 변조되지 않은 것으로 판단하고, 상기 획득된 논스 및 식별자 중 적어도 하나가 기 저장된 논스 및 식별자와 일치하지 않는 경우, 상기 소프트웨어가 변조된 것으로 판단하도록 구성될 수 있다.
본 발명의 실시예들에 따르면, 단말에 설치 또는 저장된 소프트웨어의 변조 여부를 원격에 위치한 서버에서 효과적으로 탐지할 수 있다.
도 1은 본 발명의 일 실시예에 따른 소프트웨어의 변조 여부 탐지 시스템을 설명하기 위한 블록도
도 2는 본 발명의 일 실시예에 따른 서버의 구성을 설명하기 위한 블록도
도 3은 본 발명의 일 실시예에 따른 소프트웨어의 변조 여부 탐지 시스템에서의 식별자 발급 과정을 설명하기 위한 흐름도
도 4는 본 발명의 일 실시예에 따른 소프트웨어의 변조 여부 탐지 과정을 설명하기 위한 흐름도
도 5는 도 4에 도시된 본 발명의 일 실시예에 따른 소프트웨어의 변조 여부 탐지 과정 중 404 단계를 좀 더 상세히 설명하기 위한 흐름도
도 6은 도 4에 도시된 본 발명의 일 실시예에 따른 소프트웨어의 변조 여부 탐지 과정 중 414 단계를 좀 더 상세히 설명하기 위한 흐름도
이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 이하의 상세한 설명은 본 명세서에서 기술된 방법, 장치 및/또는 시스템에 대한 포괄적인 이해를 돕기 위해 제공된다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.
본 발명의 실시예들을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 상세한 설명에서 사용되는 용어는 단지 본 발명의 실시예들을 기술하기 위한 것이며, 결코 제한적이어서는 안 된다. 명확하게 달리 사용되지 않는 한, 단수 형태의 표현은 복수 형태의 의미를 포함한다. 본 설명에서, "포함" 또는 "구비"와 같은 표현은 어떤 특성들, 숫자들, 단계들, 동작들, 요소들, 이들의 일부 또는 조합을 가리키기 위한 것이며, 기술된 것 이외에 하나 또는 그 이상의 다른 특성, 숫자, 단계, 동작, 요소, 이들의 일부 또는 조합의 존재 또는 가능성을 배제하도록 해석되어서는 안 된다.
도 1은 본 발명의 일 실시예에 따른 소프트웨어의 변조 여부 탐지 시스템(100)을 설명하기 위한 블록도이다. 도시된 바와 같이, 본 발명의 일 실시예에 따른 소프트웨어의 변조 여부 탐지 시스템(100)은 단말(102) 및 서버(104)를 포함한다.
단말(102)은 서버(104)와 유선 또는 무선 네트워크(108)를 통하여 연결되며, 서버(104)와 메시지를 송수신하기 위한 장치이다. 일 실시예에서, 단말(102)은 사물인터넷 환경에서 데이터를 수집하기 위한 엔드포인트 디바이스(Endpoint Device)일 수 있으나, 본 발명의 실시예들은 이에 한정되는 것은 아니다. 예를 들어, 스마트폰, 태블릿 컴퓨터, 웨어러블 디바이스, 데스크탑 컴퓨터, 노트북 컴퓨터, 각종 센서 등 소프트웨어의 설치 및 유무선 통신이 가능한 모든 종류의 디바이스들이 단말(102)에 포함될 수 있다.
단말(102)은 내부에 소프트웨어(106)를 포함할 수 있다. 소프트웨어(106)는 서버(104)에 의하여 제공되어 단말(102)에 설치된 것일 수 있다. 일 실시예에서, 소프트웨어(106)는 단말(102)을 제어하기 위한 펌웨어(firmware), 또는 단말(102)에 의해 수집되는 각종 정보를 서버(104)로 송신하기 위한 일종의 에이전트(agent)일 수 있으나, 본 발명의 실시예들은 특정 종류의 소프트웨어 또는 애플리케이션에 한정되는 것은 아니다.
서버(104)는 단말(102)로 소프트웨어(106)를 제공한다. 일 실시예에서, 서버(104)는 소프트웨어(106)의 변조 여부를 검증하기 위한 식별자를 소프트웨어(106)에 삽입하여 단말(102)로 제공하도록 구성된다. 이때 상기 식별자는 단말(102)에 설치되는 소프트웨어(106)마다 할당되는 고유한 값으로서, 비대칭 키(asymmetric key) 기반의 시그니처(signature)이거나, 또는 서버측에서 생성한 임의의 문자열(random string)일 수 있다.
일 실시예에서, 서버(104)는 상기 식별자를 난독화(code obfuscation)하여 소프트웨어(106)에 삽입하도록 구성될 수 있다. 이 경우 악의적 사용자가 리버스 엔지니어링(reverse engineering) 도구 등을 이용하여 상기 소프트웨어를 분석하더라도 소프트웨어(106)에 삽입된 식별자를 인지하는 것이 불가능하거나 매우 어렵게 된다. 또한, 이와 같이 식별자가 난독화 된 상태로 소프트웨어(106)에 삽입될 경우, 악의적 사용자가 이를 인식하지 못하는 상태에서 소프트웨어(106)를 변조하게 되면 식별자 또한 원형을 유지하지 못하고 그 값이 변경될 가능성이 높다. 따라서 서버(104)는 소프트웨어(106)에 삽입된 식별자가 변경되었는지의 여부에 따라 소프트웨어(106)의 변조 여부를 판단할 수 있다.
단말(102)은 서버(104)로부터 소프트웨어(106)를 제공받고 이를 내부의 저장 공간에 설치한다. 단말(102)에 설치된 소프트웨어(106)는 서버(104)로부터 논스(nonce) 값을 수신하고, 상기 논스 및 소프트웨어(106) 내에 삽입되어 있는 식별자를 암호화함으로써 검증 요청값을 생성하며, 생성된 검증 요청값을 서버(104)로 송신하기 위한 프로그램 코드를 포함할 수 있다. 구체적으로, 상기 프로그램 코드는 서버(104)로부터 서버측 공개키를 수신하고, 상기 서버측 공개키를 이용하여 상기 논스 및 상기 식별자를 암호화하도록 구성될 수 있다.
소프트웨어(106)가 설치된 단말(102)로부터 상기 검증 요청값이 수신되는 경우, 서버(104)는 상기 검증 요청값을 복호화하여 소프트웨어(106)의 변조 여부를 판단한다. 구체적으로, 서버(104)는 서버측 공개키에 대응되는 서버측 개인키를 이용하여 상기 검증 요청값을 복호화하여 논스 및 식별자를 획득하고, 획득된 논스 및 식별자가 기 저장된 논스 및 식별자와 일치하는지의 여부에 따라 소프트웨어(106)의 변조 여부를 판단할 수 있다. 예를 들어, 서버(104)는 획득된 논스 및 식별자가 기 저장된 논스 및 식별자와 일치하는 경우 소프트웨어(106)가 변조되지 않은 것으로 판단하고, 상기 획득된 논스 및 식별자 중 적어도 하나가 기 저장된 논스 및 식별자와 일치하지 않는 경우 소프트웨어(106)가 변조된 것으로 판단할 수 있다.
네트워크(108)는 단말(102) 및 서버(104) 간의 데이터 송수신을 중계하기 위한 매개체이다. 일 실시예에서, 네트워크(108)는 유무선 인터넷망, 이동통신망 등의 일반적인 패킷 통신망 뿐만 아니라, 블루투스, NFC 등의 근거리 통신 수단을 모두 포함하는 포괄적인 의미로 사용된다.
일 실시예에서, 단말(102) 및 서버(104)는 하나 이상의 프로세서 및 그 프로세서와 연결된 컴퓨터 판독 가능 기록 매체를 포함하는 컴퓨팅 장치 상에서 구현될 수 있다. 컴퓨터 판독 가능 기록 매체는 프로세서의 내부 또는 외부에 있을 수 있고, 잘 알려진 다양한 수단으로 프로세서와 연결될 수 있다. 컴퓨팅 장치 내의 프로세서는 각 컴퓨팅 장치로 하여금 본 명세서에서 기술되는 예시적인 실시예에 따라 동작하도록 할 수 있다. 예를 들어, 프로세서는 컴퓨터 판독 가능 기록 매체에 저장된 명령어를 실행할 수 있고, 컴퓨터 판독 가능 기록 매체에 저장된 명령어는 프로세서에 의해 실행되는 경우 컴퓨팅 장치로 하여금 본 명세서에 기술되는 예시적인 실시예에 따른 동작들을 수행하도록 구성될 수 있다.
도 2는 본 발명의 일 실시예에 따른 서버(104)의 상세 구성을 설명하기 위한 블록도이다. 도시된 바와 같이, 본 발명의 일 실시예에 따른 서버(104)는 소프트웨어 제공부(202) 및 변조 탐지부(204)를 포함한다.
소프트웨어 제공부(202)는 소프트웨어(106)에 식별자를 삽입하고, 상기 식별자가 삽입된 소프트웨어(106)를 단말로 제공한다.
변조 탐지부(202)는 새로운 논스(nonce)를 생성하여 소프트웨어(106)가 설치된 단말(102)에 생성된 상기 논스를 송신하고, 이를 수신한 단말(102)로부터 검증 요청값을 수신한다. 일 실시예에서, 변조 탐지부(202)는 논스가 전송 구간 중 악의적 사용자에게 노출되는 것을 방지하기 위하여 논스를 암호화하여 단말(102) 측으로 송신할 수 있다. 이때, 상기 논스는 소프트웨어(106) 측에서 상기 식별자를 복호화 키로 사용하여 복호화할 수 있도록 암호화될 수 있다. 예를 들어, 변조 탐지부(202)는 상기 식별자를 키로 이용하는 대칭키 암호화 암고리즘을 이용하여 상기 논스를 암호화할 수 있다.
상기 검증 요청값은 단말(102)에 설치된 소프트웨어(106)에 의해 생성되며, 상기 논스 및 상기 식별자를 서버측 공개키를 이용하여 암호화한 값일 수 있다. 전술한 바와 같이 암호화된 논스가 수신되는 경우, 소프트웨어(106)는 식별자를 키로 이용하여 수신된 값을 복호화함으로써 논스를 획득하고, 획득된 논스 및 상기 식별자를 암호화함으로써 상기 검증 요청값을 생성할 수 있다.
상기 검증 요청값이 수신되면, 변조 탐지부(202)는 서버측 개인키를 이용하여 상기 검증 요청값을 복호화하고, 복호화된 검증 요청값으로부터 획득되는 논스 및 식별자를 이용하여 소프트웨어(106)의 변조 여부를 탐지한다.
도 3은 본 발명의 일 실시예에 따른 소프트웨어의 변조 여부 탐지 시스템(100)에서의 식별자 발급 과정(300)을 설명하기 위한 흐름도이다.
단계 302에서, 서버(104)는 식별자를 생성한다. 전술한 바와 같이, 상기 식별자는 단말(102)에 설치되는 소프트웨어(106)마다 할당되는 고유한 값으로서, 서버측 개인키를 이용하여 생성되는 시그니처(signature)이거나, 또는 서버측에서 생성한 임의의 문자열(random string)일 수 있다.
단계 304에서, 서버(104)는 생성된 식별자를 소프트웨어(106)에 삽입한다. 일 실시예에서, 서버(104)는 상기 식별자를 난독화(code obfuscation)하여 소프트웨어(106)에 삽입하도록 구성될 수 있다.
단계 306에서, 서버(104)는 식별자가 삽입된 소프트웨어(106)를 단말(102)로 송신한다.
단계 308에서, 단말(102)은 수신되는 소프트웨어(106)를 설치한다. 일 실시예에서, 서버(104)로부터 제공되는 소프트웨어(106)가 설치파일 형태인 경우, 단말(102)은 수신되는 설치 파일을 실행함으로써 소프트웨어(106)를 설치할 수 있다. 다른 실시예에서, 서버로(104)로부터 제공되는 소프트웨어(106)가 실행파일 형태인 경우, 단말(102)은 수신되는 실행 파일을 내부의 저장 영역에 저장함으로써 소프트웨어(106)를 설치할 수 있다.
도 4는 본 발명의 일 실시예에 따른 소프트웨어의 변조 여부 탐지 과정(400)을 설명하기 위한 흐름도이다.
단계 402에서, 단말(102)은 서버(104)로 접속 요청을 송신한다. 이때, 단말(102)에 기 발급받은 논스가 저장되어 있는 경우, 단말(102)은 해당 논스를 상기 접속 요청에 포함시켜 서버(104)로 송신할 수 있다.
단계 404에서, 서버(104)는 수신된 접속 요청으로부터 단말(102)에 설치된 소프트웨어(106)를 신뢰할 수 있는지의 여부를 판단한다.
도 5는 도 4에 도시된 본 발명의 일 실시예에 따른 소프트웨어의 변조 여부 탐지 과정 중 404 단계를 좀 더 상세히 설명하기 위한 흐름도이다.
단계 502에서, 서버(104)의 변조 탐지부(202)는 수신된 접속 요청에 포함된 논스에 대응되는 논스가 저장되어 있는지의 여부를 판단한다. 만약 502 단계의 판단 결과 논스가 저장되어 있지 않은 경우, 변조 탐지부(202)는 신뢰할 수 없는 소프트웨어로 판단하고 408 단계를 수행한다.
만약 502 단계의 판단 결과 논스가 저장되어 있는 경우, 단계 504에서 변조 탐지부(202)는 저장된 논스에 대응되는 타임스탬프(timestamp)가 제한 시간을 초과하였는지의 여부를 판단한다. 만약 504 단계의 판단 결과 제한 시간을 초과한 경우, 변조 탐지부(202)는 해당 소프트웨어(106)를 신뢰할 수 없는 소프트웨어로 판단하고 408 단계를 수행한다.
만약 504 단계의 판단 결과 제한 시간을 초과하지 않은 경우, 단계 406에서 변조 탐지부(202)는 소프트웨어(106)를 신뢰할 수 있는 것으로 판단하고 접속을 승인한다. 이와 같이 별도의 제한 시간이 설정되어 있는 경우, 서버(104)는 일정 시간 경과 시 마다 단말(102)에 설치된 소프트웨어(106)의 변조 여부를 반복하여 확인하게 되므로 보안성을 한 층 강화할 수 있다.
단계 408에서, 서버(104)의 변조 탐지부(202)는 새로운 논스(nonce_x), 서버측 공개키/비밀키 쌍(public_key_x, private_key_x) 및 타임스탬프(timestamp)를 생성한다.
단계 410에서, 서버(104)의 변조 탐지부(202)는 생성된 논스(nonce_x) 및 공개키(public_key_x)를 단말(102)로 송신한다. 전술한 바와 같이, 변조 탐지부(202)는 상기 논스(nonce_x)를 암호화하여 단말(102)로 송신할 수 있다. 이때, 상기 논스는 소프트웨어(106) 측에서 상기 식별자를 복호화 키로 사용하여 복호화할 수 있도록 암호화될 수 있다. 예를 들어, 변조 탐지부(202)는 상기 식별자를 키로 이용하는 대칭키 암호화 암고리즘을 이용하여 상기 논스를 암호화할 수 있다.
단계 412에서, 단말(102)의 소프트웨어(106)는 수신된 논스(nonce_x) 및 소프트웨어(106)에 삽입된 식별자(signature_x)를 공개키(public_key_x)를 이용하여 암호화함으로써 검증 요청값(X)을 생성한다. 이를 수식으로 표현하면 다음과 같다.
X = Epublic _key_x(nonce_x, signature_x)
만약 논스(nonce_x)가 암호화된 상태로 소프트웨어(106)로 수신되는 경우, 소프트웨어(106)는 상기 검증 요청값(X)의 생성 전, 암호화된 논스를 복호화할 수 있다. 전술한 바와 같이, 소프트웨어(106)는 식별자(signature_x)를 이용하여 암호화된 논스를 복호화할 수 있다.
단계 414에서, 서버(104)의 변조 탐지부(202)는 수신된 상기 검증 요청값을 복호화하여 상기 소프트웨어의 변조 여부를 판단한다.
도 6은 도 4에 도시된 본 발명의 일 실시예에 따른 소프트웨어의 변조 여부 탐지 과정 중 414 단계를 좀 더 상세히 설명하기 위한 흐름도이다.
단계 602에서, 변조 탐지부(202)는 서버측 개인키(private_key_x)를 이용하여 검증 요청값(X)을 복호화하고 이로부터 논스(nonce_x) 및 식별자(signature_x)를 획득한다.
단계 604에서, 변조 탐지부(202)는 단말(102)로부터 수신된 논스(nonce_x)가 서버(104)에 기 저장된 값과 일치하는지 여부를 판단한다. 상기 604 단계의 판단 결과 단말(102)로부터 수신된 논스(nonce_x)가 서버(104)에 기 저장된 값과 일치하지 않는 경우, 변조 탐지부(202)는 단말(102)에 설치된 소프트웨어(106)가 변조된 것으로 판단한다(610).
상기 604 단계의 판단 결과 단말(102)로부터 수신된 논스(nonce_x)가 서버(104)에 기 저장된 값과 일치하는 경우, 다음으로 단계 606에서 변조 탐지부(202)는 단말(102)로부터 수신된 식별자(signature_x)가 서버(104)에 기 저장된 값과 일치하는지 여부를 판단한다.
상기 606 단계의 판단 결과 수신된 식별자(signature_x)가 서버(104)에 기 저장된 값과 일치하지 않는 경우, 변조 탐지부(202)는 단말(102)에 설치된 소프트웨어(106)가 변조된 것으로 판단한다(610).
한편, 상기 606 단계의 판단 결과 결과 단말(102)로부터 수신된 식별자(signature_x)가 서버(104)에 기 저장된 값과 일치하는 경우, 변조 탐지부(202)는 단말(102)에 설치된 소프트웨어(106)가 변조되지 않은 것으로 판단하게 된다.
이와 같이 변조 탐지부(202)에서 단말(102)에 설치된 소프트웨어(106)의 검증이 완료되면, 소프트웨어(106)는 수집된 데이터(data)를 서버(104)로 송신할 수 있다. 이 경우 소프트웨어(106)는 서버(104)로부터 발급된 논스(nonce_x) 및 공개키(public_key_x)를 이용하여 안전하게 데이터를 전달할 수 있다. 예를 들어 데이터는 다음과 같은 형식으로 전달될 수 있다.
Epublic _key_x(nonce_x, Data)
즉, 소프트웨어(106)는 데이터와 논스를 공개키를 이용하여 암호화하여 서버(104)로 전달하게 된다. 이를 수신한 서버(104)는 개인키를 이용하여 수신된 값을 복호화하고, 내부에 저장된 논스를 확인함으로써 소프트웨어(106)로부터 수신되는 데이터를 계속적으로 신뢰할 수 있다.
본 발명의 실시예에 따를 경우, 소프트웨어(106)를 변조하게 되면 삽입된 식별자 또한 원형을 유지할 수 없게 되는 바, 서버(104)에서는 단말(102)에 설치된 소프트웨어(106)로부터 수신되는 식별자의 변경 여부를 확인함으로써 소프트웨어(106)의 변조 여부를 확인할 수 있게 된다. 또한, 본 발명의 실시예에서 서버(104)에서 발급되는 논스는 단말(102)이 서버(104)에 접속되어 새로운 세션을 생성할 때 마다 다른 값으로 변경되며, 암호화된 상태로 단말(102) 측으로 전송되는 바, 악의적인 사용자가 중간에서 논스를 가로채어 서버(104)의 검증을 우회화는 것을 방지할 수 있게 된다.
한편, 본 발명의 실시예는 본 명세서에서 기술한 방법들을 컴퓨터상에서 수행하기 위한 프로그램, 및 상기 프로그램을 포함하는 컴퓨터 판독 가능 기록매체를 포함할 수 있다. 상기 컴퓨터 판독 가능 기록매체는 프로그램 명령, 로컬 데이터 파일, 로컬 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나, 또는 컴퓨터 소프트웨어 분야에서 통상적으로 사용 가능한 것일 수 있다. 컴퓨터 판독 가능 기록매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광 기록 매체, 및 롬, 램, 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 상기 프로그램의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다.
이상에서 본 발명의 대표적인 실시예들을 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 상술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 소프트웨어의 변조 여부 탐지 시스템
102: 단말
104: 서버
106: 에이전트
108: 네트워크

Claims (15)

  1. 단말; 및
    상기 단말로 식별자가 삽입된 소프트웨어를 제공하는 서버를 포함하며,
    상기 소프트웨어는, 상기 서버로부터 논스를 수신하고, 상기 논스 및 상기 식별자를 암호화함으로써 생성되는 검증 요청값을 상기 서버로 송신하기 위한 프로그램 코드를 포함하고,
    상기 서버는, 상기 소프트웨어가 설치된 상기 단말로부터 수신되는 상기 검증 요청값을 복호화하여 상기 소프트웨어의 변조 여부를 판단하는, 소프트웨어의 변조 여부 탐지 시스템.
  2. 청구항 1에 있어서,
    상기 프로그램 코드는, 상기 서버로부터 서버측 공개키를 수신하고, 상기 서버측 공개키를 이용하여 상기 논스 및 상기 식별자를 암호화하도록 구성되는, 소프트웨어의 변조 여부 탐지 시스템.
  3. 청구항 2에 있어서,
    상기 서버는, 상기 논스를 암호화하여 상기 단말로 제공하며,
    상기 프로그램 코드는, 상기 암호화된 논스를 상기 식별자를 이용하여 복호화함으로써 상기 논스를 획득하도록 구성되는, 소프트웨어의 변조 여부 탐지 시스템.
  4. 청구항 2에 있어서,
    상기 서버는, 상기 서버측 공개키에 대응되는 서버측 개인키를 이용하여 상기 검증 요청값을 복호화하는, 소프트웨어의 변조 여부 탐지 시스템.
  5. 청구항 1에 있어서,
    상기 서버는, 복호화된 검증 요청값으로부터 논스 및 식별자를 획득하고, 획득된 논스 및 식별자가 기 저장된 논스 및 식별자와 일치하는 경우 상기 소프트웨어가 변조되지 않은 것으로 판단하고,
    상기 획득된 논스 및 식별자 중 적어도 하나가 기 저장된 논스 및 식별자와 일치하지 않는 경우, 상기 소프트웨어가 변조된 것으로 판단하는, 소프트웨어의 변조 여부 탐지 시스템.
  6. 소프트웨어에 식별자를 삽입하고, 상기 식별자가 삽입된 소프트웨어를 단말로 제공하는 소프트웨어 제공부; 및
    상기 소프트웨어가 설치된 상기 단말에 논스를 송신하고, 상기 소프트웨어에 의해 생성되며, 상기 논스 및 상기 식별자를 암호화한 값인 검증 요청값이 상기 단말로부터 수신되는 경우, 상기 검증 요청값을 복호화하여 상기 소프트웨어의 변조 여부를 판단하는 변조 탐지부를 포함하는, 소프트웨어의 변조 여부 탐지 장치.
  7. 청구항 6에 있어서,
    상기 소프트웨어는, 상기 서버로부터 서버측 공개키를 수신하고, 상기 서버측 공개키를 이용하여 상기 논스 및 상기 식별자를 암호화하기 위한 프로그램 코드를 포함하는, 소프트웨어의 변조 여부 탐지 장치.
  8. 청구항 7에 있어서,
    상기 변조 탐지부는, 상기 논스를 암호화하여 상기 단말로 제공하며,
    상기 프로그램 코드는, 상기 암호화된 논스를 상기 식별자를 이용하여 복호화함으로써 상기 논스를 획득하도록 구성되는, 소프트웨어의 변조 여부 탐지 장치.
  9. 청구항 7에 있어서,
    상기 변조 탐지부는, 상기 서버측 공개키에 대응되는 서버측 개인키를 이용하여 상기 검증 요청값을 복호화하는, 소프트웨어의 변조 여부 탐지 장치.
  10. 청구항 6에 있어서,
    상기 변조 탐지부는, 복호화된 검증 요청값으로부터 논스 및 식별자를 획득하고, 획득된 논스 및 식별자가 기 저장된 논스 및 식별자와 일치하는 경우 상기 소프트웨어가 변조되지 않은 것으로 판단하고,
    상기 획득된 논스 및 식별자 중 적어도 하나가 기 저장된 논스 및 식별자와 일치하지 않는 경우, 상기 소프트웨어가 변조된 것으로 판단하는, 소프트웨어의 변조 여부 탐지 장치.
  11. 소프트웨어에 식별자를 삽입하고, 상기 식별자가 삽입된 소프트웨어를 단말로 제공하는 단계;
    상기 소프트웨어가 설치된 상기 단말에 논스를 송신하는 단계;
    상기 소프트웨어에 의해 생성되며, 상기 논스 및 상기 식별자를 암호화한 값인 검증 요청값을 상기 단말로부터 수신하는 단계; 및
    수신된 상기 검증 요청값을 복호화하여 상기 소프트웨어의 변조 여부를 판단하는 단계를 포함하는, 소프트웨어의 변조 여부 탐지 방법.
  12. 청구항 11에 있어서,
    상기 소프트웨어는, 상기 서버로부터 제공되는 서버측 공개키를 이용하여 상기 논스 및 상기 식별자를 암호화함으로써 상기 검증 요청값을 생성하기 위한 프로그램 코드를 포함하는, 소프트웨어의 변조 여부 탐지 방법.
  13. 청구항 12에 있어서,
    상기 논스를 송신하는 단계는, 상기 논스를 암호화하여 상기 단말로 제공하도록 구성되며,
    상기 프로그램 코드는, 상기 암호화된 논스를 상기 식별자를 이용하여 복호화함으로써 상기 논스를 획득하도록 구성되는, 소프트웨어의 변조 여부 탐지 방법.
  14. 청구항 12에 있어서,
    상기 변조 여부를 판단하는 단계는, 상기 서버측 공개키에 대응되는 서버측 개인키를 이용하여 상기 검증 요청값을 복호화하는 단계를 더 포함하는, 소프트웨어의 변조 여부 탐지 방법.
  15. 청구항 11에 있어서,
    상기 변조 여부를 판단하는 단계는,
    복호화된 검증 요청값으로부터 논스 및 식별자를 획득하는 단계; 및
    획득된 논스 및 식별자를 기 저장된 논스 및 식별자와 비교하는 단계를 더 포함하며,
    상기 비교하는 단계는, 획득된 논스 및 식별자가 기 저장된 논스 및 식별자와 일치하는 경우 상기 소프트웨어가 변조되지 않은 것으로 판단하고, 상기 획득된 논스 및 식별자 중 적어도 하나가 기 저장된 논스 및 식별자와 일치하지 않는 경우, 상기 소프트웨어가 변조된 것으로 판단하도록 구성되는, 소프트웨어의 변조 여부 탐지 방법.
KR1020150075827A 2015-05-29 2015-05-29 소프트웨어의 변조 여부 탐지 시스템 및 방법 KR20160139914A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150075827A KR20160139914A (ko) 2015-05-29 2015-05-29 소프트웨어의 변조 여부 탐지 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150075827A KR20160139914A (ko) 2015-05-29 2015-05-29 소프트웨어의 변조 여부 탐지 시스템 및 방법

Publications (1)

Publication Number Publication Date
KR20160139914A true KR20160139914A (ko) 2016-12-07

Family

ID=57572839

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150075827A KR20160139914A (ko) 2015-05-29 2015-05-29 소프트웨어의 변조 여부 탐지 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR20160139914A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200115019A (ko) * 2019-03-26 2020-10-07 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 이더리움 기반의 변조된 거래의 처리 방법, 장치 및 저장 매체

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130020861A (ko) 2011-08-19 2013-03-04 고려대학교 산학협력단 자가암호화를 이용한 소프트웨어 변조방지 방법
KR101256462B1 (ko) * 2012-08-06 2013-04-19 주식회사 안랩 모바일 애플리케이션의 위변조 탐지 장치, 시스템 및 방법
KR101322402B1 (ko) * 2011-11-25 2013-11-21 농업협동조합중앙회 어플리케이션 보안 시스템 및 방법, 이를 위한 통신 단말기
KR101436536B1 (ko) * 2013-06-19 2014-09-01 숭실대학교산학협력단 파일 서버 및 그것을 이용한 프로그램 파일의 전송 방법, 그리고 프로그램 파일 변조 방지 시스템
KR101480040B1 (ko) * 2011-09-23 2015-01-07 네이버비즈니스플랫폼 주식회사 웹 페이지 변조 식별방법, 시스템 및 컴퓨터로 판독 가능한 기록매체

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130020861A (ko) 2011-08-19 2013-03-04 고려대학교 산학협력단 자가암호화를 이용한 소프트웨어 변조방지 방법
KR101480040B1 (ko) * 2011-09-23 2015-01-07 네이버비즈니스플랫폼 주식회사 웹 페이지 변조 식별방법, 시스템 및 컴퓨터로 판독 가능한 기록매체
KR101322402B1 (ko) * 2011-11-25 2013-11-21 농업협동조합중앙회 어플리케이션 보안 시스템 및 방법, 이를 위한 통신 단말기
KR101256462B1 (ko) * 2012-08-06 2013-04-19 주식회사 안랩 모바일 애플리케이션의 위변조 탐지 장치, 시스템 및 방법
KR101436536B1 (ko) * 2013-06-19 2014-09-01 숭실대학교산학협력단 파일 서버 및 그것을 이용한 프로그램 파일의 전송 방법, 그리고 프로그램 파일 변조 방지 시스템

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200115019A (ko) * 2019-03-26 2020-10-07 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 이더리움 기반의 변조된 거래의 처리 방법, 장치 및 저장 매체
US11436604B2 (en) 2019-03-26 2022-09-06 Beijing Baidu Netcom Science And Technology Co., Ltd. Method, apparatus and storage medium for processing ethereum-based falsified transaction

Similar Documents

Publication Publication Date Title
US20160277933A1 (en) Secure Data Communication system between IoT smart devices and a Network gateway under Internet of Thing environment
CN103235906B (zh) 一种应用程序加密、解密方法及加密、解密装置
CN110719173B (zh) 一种信息处理方法及装置
US20170085543A1 (en) Apparatus and method for exchanging encryption key
WO2007083891A1 (en) Method and apparatus for transmitting content to device which does not join domain
KR101531662B1 (ko) 사용자 단말과 서버간 상호 인증 방법 및 시스템
EP2800334A1 (en) Transmission of digital content to select devices
CN114637987A (zh) 基于平台验证的安全芯片固件下载方法及系统
CN106549757B (zh) Web服务的数据真伪识别方法、服务端和客户端
WO2016050118A1 (zh) 信息处理方法和信息处理装置
CN109451504B (zh) 物联网模组鉴权方法及系统
KR101566141B1 (ko) 서명정보를 이용하여 응용 프로그램의 위변조 여부를 탐지하는 사용자 단말기 및 그것을 이용한 위변조 탐지 방법
KR101518689B1 (ko) 핵심 코드를 이용하여 응용 프로그램의 위변조 여부를 탐지하는 사용자 단말기 및 그것을 이용한 위변조 탐지 방법
KR101630462B1 (ko) 키보드 보안 장치 및 방법
KR101473656B1 (ko) 모바일 데이터 보안 장치 및 방법
JP2016212591A (ja) 情報処理システム、情報処理装置、及びファームウェアプログラム
KR101325096B1 (ko) 불법 복제 방지 시스템 및 불법 복제 방지 방법
JP6501701B2 (ja) システム、端末装置、制御方法、およびプログラム
CN108848094B (zh) 数据安全验证方法、装置、系统、计算机设备及存储介质
KR101711024B1 (ko) 부정조작방지 장치 접근 방법 및 그 방법을 채용한 단말 장치
KR20160139914A (ko) 소프트웨어의 변조 여부 탐지 시스템 및 방법
KR101632929B1 (ko) 단말, 및 이를 이용한 웹 페이지 위변조 검증 시스템 및 방법
KR102308248B1 (ko) 양자난수 기반의 양자암호화칩이 탑재된 비화게이트웨이 및 이를 이용한 IoT디바이스간 비화통신 서비스 제공방법
KR101571377B1 (ko) 비콘 데이터 처리 시스템 및 방법
KR101286767B1 (ko) 동적 해싱을 이용한 애플리케이션 프로그램 검증 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application