KR101440234B1 - 프로그램 무결성 관리 방법, 시스템 및 그 방법을 컴퓨터 상에서 실행하는 프로그램을 기록한 기록매체 - Google Patents

프로그램 무결성 관리 방법, 시스템 및 그 방법을 컴퓨터 상에서 실행하는 프로그램을 기록한 기록매체 Download PDF

Info

Publication number
KR101440234B1
KR101440234B1 KR1020130059975A KR20130059975A KR101440234B1 KR 101440234 B1 KR101440234 B1 KR 101440234B1 KR 1020130059975 A KR1020130059975 A KR 1020130059975A KR 20130059975 A KR20130059975 A KR 20130059975A KR 101440234 B1 KR101440234 B1 KR 101440234B1
Authority
KR
South Korea
Prior art keywords
information
integrity
program
code
generating
Prior art date
Application number
KR1020130059975A
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 KR1020130059975A priority Critical patent/KR101440234B1/ko
Application granted granted Critical
Publication of KR101440234B1 publication Critical patent/KR101440234B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Quality & Reliability (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 프로그램 무결성 관리 방법, 시스템 및 그 방법을 컴퓨터 상에서 실행하는 프로그램을 기록한 기록매체에 관한 것으로, 본 발명은 프로그램의 코드 정보가 무단 변조되었는지 여부를 검증하는 프로그램 무결성 관리 방법으로, 상기 프로그램의 코드 정보를 이용하여, 중간 코드를 생성하는 단계; 무결성 정보와 무결성 확인 정보를 생성하는 단계; 상기 중간 코드에 상기 무결성 정보와 상기 무결성 확인 정보를 추가하는 단계; 및 상기 중간 코드의 코드 정보를 이용하여, 최종 코드를 생성하는 단계를 포함하는 프로그램 무결성 관리 방법을 제공한다. 상기와 같은 구성을 통하여, 본 발명에 따른 프로그램 무결성 관리 방법 및 시스템은 인터넷 연결 여부와 같은 사용자 환경에 구애받지 않고 프로그램의 무결성을 검증할 수 있다. 그리고, 중간 코드 내 무결성 정보의 존재 여부를 확인하는 간단한 작업만으로 프로그램의 무결성을 검증할 수 있어, 프로그램이 실행되는 시스템에 부하를 발생하지 않고, 빠른 속도로 무결성 검증이 가능하다.

Description

프로그램 무결성 관리 방법, 시스템 및 그 방법을 컴퓨터 상에서 실행하는 프로그램을 기록한 기록매체{THE METHOD AND SYSTEM FOR MANAGING PROGRAM INTEGRITY, AND COMPUTER-RADABLE RECORDING MEDIUM STORING PROGRAM INTEGRITY MANAGEMENT PROGRAM RECORED THERON}
본 발명은 프로그램 무결성 관리 방법, 시스템 및 그 방법을 컴퓨터 상에서 실행하는 프로그램을 기록한 기록매체에 관한 것으로, 보다 구체적으로는 프로그램의 중간 코드에는 기록되나 최종 코드에 기록되지 않는 무결성 정보를 이용한 프로그램의 무결성 관리 방법, 시스템 및 기록매체에 관한 것이다.
최근 전자분야의 발전으로 인해 다양한 하드웨어(Hardware) 기기들이 전자화, 디지털화 되고 있고, 이에 따라 소프트웨어(Software) 프로그램에 의해 동작되는 하드웨어 기기들이 점차 늘어나고 있다.
그중 대표적인 것이 컴퓨터(Computer)로, 컴퓨터에는 운영체제(OS, Operating System)이 설치되어 있고, 각종 어플리케이션이 별도의 프로그램으로 컴퓨터에 설치되어 동작된다. 이러한 컴퓨터는 비단 데스크톱과 같은 개인용 컴퓨터(Personal Computer) 뿐만 아니라 스마트폰(Smart Phone)과 같은 통신 단말기도 해당된다.
그러나, 이처럼 소프트웨어에 의해 프로그래밍된 어플리케이션들이 이용됨에 따라 가장 크게 문제가 되는 것은 해당 프로그램의 해킹(Hacking)이다.
일반적으로 해킹은 컴퓨터 네트워크의 취약한 보안망에 불법적으로 접근하거나 정보 시스템 또는 특정 단말기 상의 동작에 유해한 영향을 끼치는 제반 행위를 일컫는 것으로서, 결국 어플리케이션의 프로그램 코드를 임의로 조작하여 해당 어플리케이션을 개발한 개발자가 의도하지 않은 형태로 어플리케이션이 동작하도록 하는 것을 말한다.
프로그램의 해킹의 일례로는, 인증되지 않은 다수의 사용자에게 어플리케이션을 배포하기 위하여 프로그램 코드를 복사(Copy)하거나, 해커(Hacker)가 원하는 기능을 어플리케이션이 수행하도록 프로그램 코드를 조작(Manipulate)하는 경우가 있다.
이와 같은 프로그램의 해킹은, 개발자의 저작권을 해치거나 어플리케이션이 실행되는 시스템 전반에 큰 영향을 미치는 것으로서 결코 무시하거나 간과할 수 없는 중요한 문제에 해당한다.
따라서, 어플리케이션의 프로그램 코드가 복사되거나 조작되었는지 판단하는 프로그램 무결성(Integrity) 관리가 필요하게 되었다.
기존의 프로그램 무결성 관리 방법은, 사용자가 어플리케이션 관리 서버에 접속하여 해당 프로그램이 복사 또는 조작되었는지 확인하거나, 다양한 알고리즘이 적용된 복잡한 절차를 걸쳐 이루어 졌다. 그러나, 이러한 기존 방법은 인터넷이 가능한 환경에서만 수행되거나, 어플리케이션이 실행되는 시스템에 부하가 생기는 문제점이 발생되었다.
따라서, 인터넷 접속 여부와 같은 사용자 환경에 구애되지 않으며, 간단한 작업만으로 프로그램 코드의 복사 또는 조작 여부를 확인할 수 있는, 효율적인 프로그램 무결성 관리 방법 및 시스템이 요구되고 있다.
본 발명은 상기의 문제점을 해결하기 위하여 창작된 것으로, 사용자 환경에 구애받지 않으며, 프로그램이 실행되는 시스템에 부하가 발생되지 않도록 구성된 효율적인 프로그램 무결성 관리 방법, 시스템 및 그 방법을 컴퓨터 상에서 실행하는 프로그램을 기록한 기록매체를 제공하는 것을 목적으로 한다.
상기 목적을 달성하기 위하여, 본 발명은 프로그램의 코드 정보가 무단 변조되었는지 여부를 검증하는 프로그램 무결성 관리 방법으로, 상기 프로그램의 코드 정보를 이용하여, 중간 코드를 생성하는 단계; 무결성 정보와 무결성 확인 정보를 생성하는 단계; 상기 중간 코드에 상기 무결성 정보와 상기 무결성 확인 정보를 추가하는 단계; 및 상기 중간 코드의 코드 정보를 이용하여, 최종 코드를 생성하는 단계를 포함하는 프로그램 무결성 관리 방법을 제공한다.
또한, 본 발명은 상기 중간 코드에 상기 무결성 정보가 존재하는지 여부를 확인하여, 상기 프로그램의 코드 정보가 무단 변조되었는지 여부를 검증하는 단계를 포함하는 실시예를 포함한다.
또한, 본 발명은 상기 무결성 정보와 상기 무결성 확인 정보가 매치되는지 여부를 확인하여, 상기 프로그램의 코드 정보가 무단 변조되었는지 여부를 검증하는 단계를 포함하는 실시예를 포함한다.
또한, 본 발명은 상기 무결성 정보는, 무작위(Random) 정보, 상기 코드 정보를 암호화한 정보, 개발자 정보, 사용자 인증 정보 중 적어도 하나로 구성된 실시예를 포함한다.
또한, 본 발명은 상기 프로그램의 코드 정보가 무단 변조되지 않은 것으로 검증된 경우, 상기 최종 코드를 실행하는 단계를 포함하는 실시예를 포함한다.
또한, 본 발명은 프로그램의 코드 정보가 무단 변조되었는지 여부를 검증하는 프로그램 무결성 관리 시스템으로, 상기 프로그램의 코드 정보를 이용하여, 중간 코드를 생성하는 제 1 변환부; 무결성 정보와 무결성 확인 정보를 생성하고, 상기 중간 코드에 상기 무결성 정보와 상기 무결성 확인 정보를 추가 무결성 정보 생성부; 및 상기 중간 코드의 코드 정보를 이용하여, 최종 코드를 생성하는 제 2 변환부를 포함하는 프로그램 무결성 관리 시스템을 제공한다.
또한, 본 발명은 상기 중간 코드에 상기 무결성 정보가 존재하는지 여부를 확인하여, 상기 프로그램의 코드 정보가 무단 변조되었는지 여부를 검증하는 무결성 검증부를 포함하는 실시예를 포함한다.
또한, 본 발명은 상기 무결성 정보와 상기 무결성 확인 정보가 매치되는지 여부를 확인하여, 상기 프로그램의 코드 정보가 무단 변조되었는지 여부를 검증하는 무결성 검증부를 포함하는 실시예를 포함한다.
또한, 본 발명은 상기 무결성 정보는, 무작위(Random) 정보, 상기 코드 정보를 암호화한 정보, 개발자 정보, 사용자 인증 정보 중 적어도 하나로 구성된 실시예를 포함한다.
또한, 본 발명은 상기 프로그램의 코드 정보가 무단 변조되지 않은 것으로 검증된 경우, 상기 최종 코드를 실행하는 프로그램 실행부를 포함하는 실시예를 포함한다.
또한, 본 발명은 프로그램의 코드 정보가 무단 변조되었는지 여부를 검증하는 프로그램 무결성 관리 방법을 컴퓨터 상에서 실행하는 프로그램을 기록한 기록매체로, 상기 프로그램 무결성 관리 방법은, 상기 프로그램의 코드 정보를 이용하여, 중간 코드를 생성하는 단계; 무결성 정보와 무결성 확인 정보를 생성하는 단계; 상기 중간 코드에 상기 무결성 정보와 상기 무결성 확인 정보를 추가하는 단계; 및 상기 중간 코드의 코드 정보를 이용하여, 최종 코드를 생성하는 단계를 포함하는 기록매체를 제공한다.
본 발명은 상술한 실시예에 한정되지 않으며, 첨부된 청구범위에서 알 수 있는 바와 같이 본 발명이 속한 분야의 통상의 지식을 가진 자에 의해 변형이 가능하고 이러한 변형은 본 발명의 범위에 속함을 밝혀둔다.
상기와 같은 구성을 통하여, 본 발명에 따른 프로그램 무결성 관리 방법 및 시스템은 인터넷 연결 여부와 같은 사용자 환경에 구애받지 않고 프로그램의 무결성을 검증할 수 있다. 그리고, 중간 코드 내 무결성 정보의 존재 여부를 확인하는 간단한 작업만으로 프로그램의 무결성을 검증할 수 있어, 프로그램이 실행되는 시스템에 부하를 발생하지 않고, 빠른 속도로 무결성 검증이 가능하다.
도 1은 본 발명의 실시예에 따른 프로그램 무결성 관리 시스템의 사용 환경을 도시한 도면이다.
도 2는 본 발명의 실시예에 따른 프로그램 무결성 관리 시스템의 구성도이다.
도 3은 본 발명의 실시예에 따른 프로그램 실행 방법의 순서도이다.
도 4는 본 발명의 실시예에 따른 프로그램 무결성 관리 방법의 순서도이다.
도 5는 본 발명의 실시예에 따른 원본 코드를 도시한 도면이다.
도 6은 본 발명의 실시예에 따른 무결성 정보와 무결성 확인 정보를 포함한 중간 코드를 도시한 도면이다.
도 7은 본 발명의 실시예에 따른 최종 코드를 도시한 도면이다.
도 8은 본 발명의 실시예에 따른 프로그램 무결성 검증 방법의 순서도이다.
이하 첨부된 도면을 참조하여 본 발명의 실시예를 본 발명이 속하는 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세하게 설명한다. 이하 설명에서 동일한 구성 요소에는 설명의 편의상 동일 명칭 및 동일 부호를 부여한다.
본 발명에서 사용되는 용어는 가능한 한 현재 널리 사용되는 일반적인 용어를 선택하였으나, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우는 해당되는 발명의 설명부분에서 상세히 그 의미를 기재하였으므로, 단순한 용어의 명칭이 아닌 용어가 가지는 의미로서 본 발명을 파악하여야 한다.
이하의 설명에서 사용되는 구성요소에 대한 접미사 "모듈" 및 "부"는 명세서 작성의 용이함만이 고려되어 부여되거나 혼용되는 것으로서, 그 자체로 서로 구별되는 의미 또는 역할을 갖는 것은 아니다.
도 1은 본 발명의 실시예에 따른 프로그램 무결성 관리 시스템(100)의 사용 환경을 도시한 도면이다.
프로그램 무결성 관리 시스템(100)은 개발자가 아닌 타인에 의해 프로그램이 무단으로 변조되었는지 여부를 검증하는, 프로그램 무결성(Integrity) 검증 시스템이다.
프로그램 개발자는 프로그램을 작성하여 인증된 사용자들에게 배포한다. 인증된 사용자는 해당 프로그램을 컴퓨터, 태블릿 PC, 스마트폰과 같은 디바이스에서 실행시키는 것이다.
그러나, 해커와 같이 인증되지 않은 사용자가 프로그램을 무단으로 변조하여 무단으로 배포하는 경우가 발생한다. 프로그램 무결성 관리 시스템(100)은 이와 같이 검증 프로그램이 무단으로 변조되어 배포된 프로그램인지 여부를 판단할 수 있는 시스템이다.
관련하여, 프로그램의 코드는 C, C++, Basic, Java와 같은 다양한 프로그램 언어로 작성될 수 있는데, 본 명세서에서 설명하는 프로그램은 Java 언어로 작성된 자바(Java) 프로그램인 경우를 일례로 하여 설명하기로 한다.
도 2는 본 발명의 실시예에 따른 프로그램 무결성 관리 시스템(100)의 구성도이다.
도면과 같이, 프로그램 무결성 관리 시스템(100)은 제 1 변환부(110), 무결성 정보 생성부(120), 제 2 변환부(130), 프로그램 실행부(140), 무결성 검증부(150)를 포함한다.
제 1 변환부(110)는 프로그램의 원본 코드(10)를 중간 코드(20)로 변환한다. 프로그램 원본 코드(10)는 사용자에게 배포되는 프로그램 코드이고, 중간 코드(20)는 프로그램을 실행하는 과정에서 생성되는 코드이다.
도 3에서 후술하는 바와 같이, 프로그램 무결성 관리 시스템(100)이 프로그램을 실행하기 위해서는, 프로그램 무결성 관리 시스템(100)은 프로그램의 원본 코드(10)를 중간 코드(20)와 최종 코드(30)로 변환하고, 변환된 최종 코드(30)를 실행하여야 한다.
제 1 변환부(100)는 프로그램의 원본 코드(10)를 중간 코드(20)로 변환하는 것으로, 자바 프로그램을 일례로 설명하면, 사용자에게 배포되는 "Java" 파일을 "Dex" 파일로 변환하는 것이다. "Java" 파일인 원본 코드(10)와 "Dex" 파일인 중간 코드(20)에 대하여는, 이하 도 5 내지 6에서 자세히 후술하도록 한다.
원본 코드(10)는 프로그램 실행에 필요한 코드 정보가 기록되어 있다. 제 1 변환부(100)는 원본 코드(10)에 기록된 코드 정보를 기 설정된 형식으로 변환하여 중간 코드(20)를 생성하는 것이다.
무결성 정보 생성부(120)는 무결성 정보(21)와 무결성 확인 정보(22)를 생성하여, 생성된 무결성 정보(21)와 무결성 확인 정보(22)를 중간 코드(20)에 추가한다.
무결성 정보(21)는 프로그램의 무단 변조 여부를 판단하는 정보이고, 무결성 확인 정보(22)는 무결성 정보(21)의 무단 변조 여부를 판단하는 정보이다. 무결성 정보(21)와 무결성 확인 정보(22)의 구성에 대하여는, 이하 도 6에서 자세히 후술하도록 한다.
무결성 정보 생성부(120)는 생성된 무결성 정보(21)와 무결성 확인 정보(22)를, 중간 코드(20)에 코드 정보와 함께 추가하는 것이다.
제 2 변환부(130)는 중간 코드(20)를 최종 코드(30)로 변환한다. 무결성 정보(21)와 무결성 확인 정보(22)가 포함된 중간 코드(20)를 시스템 상에서 실행가능한 최종 코드(30)로 변환한다.
자바 프로그램을 일례로 설명하면, 제 2 변환부(130)는 "Dex" 파일을 시스템 상에서 실행이 가능한 "Java" 파일로 변환하는 것이다. "Dex" 파일인 중간 코드(20)와 "Java" 파일인 최종 코드(30)에 대하여는, 이하 도 6 내지 7에서 자세히 후술하도록 한다.
제 2 변환부(130)는 중간 코드(20)를 이용하여 최종 코드(30)를 생성하는 것으로, 중간 코드(20)에 기록된 코드 정보를 실행가능한 프로그램 코드인 최종 코드(30)로 변환하는 것이다. 이때, 제 2 변환부(130)는 중간 코드(20)에 기록된 무결성 정보(21)와 무결성 확인 정보(22)가 아닌 코드 정보만을 포함하는 최종 코드(30)를 생성한다.
프로그램 실행부(140)는 변환된 최종 코드(30)를 실행한다. 프로그램 실행부(140)는 최종 코드(30)에 기록된 코드 정보를 이용하여, 프로그램을 실행하는 것이다.
무결성 검증부(150)는 검증 프로그램의 무결성 여부를 검증한다. 무결성 검증부(150)는 중간 코드(20)에 기록되는 무결성 정보(21)와 무결성 확인 정보(22)를 이용하여, 프로그램의 무결성 여부를 검증하는 것으로, 이에대한 구체적인 내용은 이하 도 8에서 자세히 후술하도록 한다.
도 3은 본 발명의 실시예에 따른 프로그램 실행 방법의 순서도이다.
도면과 같이, 프로그램 무결성 관리 시스템(100)의 프로그램 실행 방법은, 프로그램의 원본 코드(10)를 중간 코드(20)로 변환하는 단계(S100), 중간 코드(20)를 최종 코드(30)로 변환하는 단계(S110), 변환된 최종 코드(30)를 실행하는 단계(S120)으로 구성된다.
우선, 제 1 변환부(110)는 프로그램의 원본 코드(10)를 중간 코드(20)로 변환한다.(S100) 제 1 변환부(100)는 원본 코드(10)에 기록된 코드 정보를 기 설정된 형식으로 변환하여 중간 코드(20)를 생성하는 것이다.
그리고, 제 2 변환부(130)는 중간 코드(20)를 최종 코드(30)로 변환한다.(S110) 제 2 변환부(130)는 중간 코드(10)에 기록된 코드 정보를 기 설정된 형식으로 변환하여 최종 코드(30)를 생성하는 것이다.
마지막으로, 프로그램 실행부(140)는 변환된 최종 코드(30)를 실행한다.(S120) 프로그램 실행부(140)는 최종 코드(30)에 기록된 코드 정보를 이용하여, 프로그램을 실행하는 것이다.
즉, 원본 코드(10), 중간 코드(20) 및 최종 코드(30)는 각각 기 설정된 형식으로 구성된 코드 정보가 기록된다. 코드 정보는 프로그램 명령어들의 집합, 프로그램 실행 시퀸스 등의 정보가 포함된다.
본 발명의 프로그램 무결성 관리 방법은, 개발자가 아닌 타인에 의해 코드 정보가 무단으로 변조되었는지 여부를 확인하는 방법에 대한 것이다.
도 4는 본 발명의 실시예에 따른 프로그램 무결성 관리 방법의 순서도이다.
도면에서 보는 바와 같이, 프로그램 무결성 관리 방법은 원본 코드(10)를 중간 코드(20)로 변환하는 단계(S200), 무결성 정보(21)와 무결성 확인 정보(22)를 생성하는 단계(S210), 중간 코드(20)에 무결성 정보(21)와 무결성 확인 정보(22)를 추가하는 단계(S220), 중간 코드(20)를 최종 코드(30)로 변환하는 단계(S230), 최종 코드(30)를 실행하는 단계(S240)으로 구성된다.
우선, 제 1 변환부(110)는 원본 코드(10)를 중간 코드(20)로 변환한다. 전술한 바와 같이, 프로그램 원본 코드(10)는 사용자에게 배포되는 프로그램 코드이고, 중간 코드(20)는 프로그램을 실행하는 과정에서 생성되는 코드로, 제 1 변환부(100)는 원본 코드(10)에 기록된 코드 정보를 기 설정된 형식으로 변환하여 중간 코드(20)를 생성하는 것이다.
자바 프로그램을 일례로 설명하면, 제 1 변환부(100)는 사용자에게 배포되는 "Java" 파일을 "Dex" 파일로 변환하는 것이다.
도 5는 본 발명의 실시예에 따른 원본 코드(10)를 도시한 도면이다.
자바 프로그램의 원본 코드(10)는 파일명 ".java"로 구성된 "Java" 파일로, 원본 코드(10)에는 도면과 같은 코드 정보가 기록된다. 코드 정보는 프로그램 명령어들의 집합, 프로그램 실행 시퀸스 등의 정보로, 자바 프로그램 언어로 작성된 코드 정보가 원본 코드(10)에 기록되는 것이다.
그리고, 무결성 정보 생성부(120)는 무결성 정보(21)와 무결성 확인 정보(22)를 생성하고,(S210) 생성된 무결성 정보(21)와 무결성 확인 정보(22)를 중간 코드(30)에 추가한다.(S220) 무결성 정보 생성부(120)는 생성된 무결성 정보(21)와 무결성 확인 정보(22)를, 중간 코드(20)에 코드 정보와 함께 추가하는 것이다.
도 6은 본 발명의 실시예에 따른 무결성 정보(21)와 무결성 확인 정보(22)를 포함한 중간 코드(20)를 도시한 도면이다.
자바 프로그램의 중간 코드(20)는 도면과 같이, "dex" 파일과 "so" 파일로 구성될 수 있다. 중간 코드(20)의 코드 정보는 기 설정된 형식으로 "dex" 파일과 "so" 파일에 각각 기록되는 것이다.
그리고, 무결성 정보(21)와 무결성 확인 정보(22)도 중간 코드(20)에 코드 정보와 함께 기록된다. 도면에서 보는 바와 같이, 무결성 정보(21)는 "dex" 파일에 기록되고, 무결성 확인 정보(22)는 "so" 파일에 기록될 수 있다.
그러나, 도면에서는 무결성 정보(21)는 "dex" 파일에, 무결성 확인 정보(22)는 "so" 파일에 기록되는 것으로 도시하고 있으나, 이는 일례에 불과하며, 무결성 정보(21)와 무결성 확인 정보(22)의 기록 위치는 이에 한정되지 아니한다.
무결성 정보(21)는 프로그램의 무단 변조 여부를 판단하는 정보로, 무결성 정보(21)는 무작위(Random) 정보, 코드 정보를 암호화한 정보, 개발자 정보, 사용자 인증 정보 등의 다양한 실시예로 구성될 수 있다.
그리고, 무결성 확인 정보(22)는 무결성 정보(21)의 무단 변조 여부를 판단하는 정보로, 무결성 확인 정보(22)는 무결성 정보(21)를 암호화한 정보로 구성된다. 즉, 무결성 확인 정보(22)는 무결성 정보(21)의 CRC 값, 해쉬(Hash) 함수 값 등의 다양한 실시예로 구성될 수 있다.
그리고, 제 2 변환부(130)는 중간 코드(20)를 최종 코드(30)로 변환한다.(S230) 무결성 정보(21)와 무결성 확인 정보(22)가 포함된 중간 코드(20)를 시스템 상에서 실행가능한 최종 코드(30)로 변환하는 것으로, 자바 프로그램을 일례로 설명하면, 제 2 변환부(130)는 "Dex" 파일을 시스템 상에서 실행이 가능한 "Java" 파일로 변환하는 것이다.
제 2 변환부(130)는 중간 코드(20)에 기록된 코드 정보를 이용하여, 실행가능한 프로그램 코드인 최종 코드(30)를 생성한다. 즉, 제 2 변환부(130)는 중간 코드(20)에 기록된 무결성 정보(21)와 무결성 확인 정보(22)가 아닌 코드 정보만을 포함하는 최종 코드(30)를 생성한다. 따라서, 최종 코드(30)에는 무결성 정보(21)와 무결성 확인 정보(22)가 기록되지 않는다.
도 7은 본 발명의 실시예에 따른 최종 코드(30)를 도시한 도면이다.
전술한 바와 같이, 최종 코드(30)는 시스템 상에서 실행이 가능한 프로그램 코드로, 원본 코드(10)와 동일한 "Java" 파일로 구성될 수 있다.
마지막으로, 프로그램 실행부(140)는 변환된 최종 코드(30)를 실행한다.(S240) 프로그램 실행부(140)는 최종 코드(30)에 기록된 코드 정보를 이용하여, 프로그램을 실행하는 것이다.
도 8은 본 발명의 실시예에 따른 프로그램 무결성 검증 방법의 순서도이다.
도면에서 보는 바와 같이, 프로그램 무결성 검증 방법은 검증 프로그램의 원본 코드(10)를 중간 코드(20)로 변환하는 단계(S300), 중간 코드(20)에 무결성 정보(21)의 존재여부를 확인하는 단계(S310), 무결성 정보(21)와 무결성 확인 정보(22)가 매치되는지 여부를 확인하는 단계(S320), 프로그램 결함을 확인하는 단계(S330), 프로그램 무결성을 확인하는 단계(S340)으로 구성된다. 이러한 프로그램 무결성 검증 방법은 프로그램 무결성 검증 시스템(100)에 포함되어 구성된 무결성 검증부(150)에서 구현될 수 있다.
우선, 무결성 검증부(150)는 검증 프로그램의 원본 코드(10)를 중간 코드(20)로 변환한다.(S300)
그리고, 무결성 검증부(150)는 중간 코드(20)에 무결성 정보(21)가 존재하는지 여부를 확인한다.(S310)
중간 코드(20)에 무결성 정보(21)가 존재하지 않으면, 무결성 검증부(150)는 검증 프로그램이 개발자가 아닌 타인에 의해 코드 정보가 무단으로 변조되는 등의 결함이 존재하는 것으로 판단한다.(S330)
중간 코드(20)에 무결성 정보(21)가 존재하면, 무결성 검증부(150)는 무결성 정보(21)와 무결성 확인 정보(22)가 매치되는지 여부를 확인한다.(S320)
무결성 정보(21)와 무결성 확인 정보(22)가 매치되지 않으면, 무결성 검증부(150)는 검증 프로그램에 결함이 존재하는 것으로 판단하고,(S330) 무결성 정보(21)와 무결성 확인 정보(22)가 매치되면, 무결성 검증부(150)는 검증 프로그램의 무결성을 확인하는 것이다.(S340)
그리고, 검증 프로그램의 무결성이 확인되면, 제 2 변환부(130)는 중간 코드를 최종 코드로 변환하고, 프로그램 실행부(140)는 변환된 최종 코드를 실행한다.
따라서, 프로그램 무결성 검증 방법은 중간 코드(20) 내 무결성 정보(21)의 존재 여부, 무결성 정보(21)와 무결성 확인 정보(22)가 매치 여부 확인과 같은 간단한 작업만으로 프로그램의 무결성을 검증할 수 있어, 프로그램이 실행되는 시스템에 부하를 발생하지 않고, 빠른 속도로 무결성 검증이 가능하다.
또한, 인터넷 연결되지 않은 사용자 환경에서도 프로그램 무결성 검증 방법을 실행할 수 있어, 사용자 환경에 구애받지 않고 프로그램의 무결성을 검증할 수 있다.
상기에서 본 발명의 바람직한 실시예에 대하여 설명하였지만, 본 발명은 이에 한정되는 것이 아니고 특허청구범위와 발명의 상세한 설명 및 첨부한 도면의 범위 안에서 여러 가지로 변형하여 실시하는 것이 가능하고 이 또한 본 발명의 범위에 속하는 것은 당연하다.

Claims (11)

  1. 삭제
  2. 프로그램의 코드 정보가 무단 변조되었는지 여부를 검증하는 프로그램 무결성 관리 방법으로,
    상기 프로그램의 코드 정보를 이용하여, 중간 코드를 생성하는 단계;
    무결성 정보와 무결성 확인 정보를 생성하는 단계;
    상기 중간 코드에 상기 무결성 정보와 상기 무결성 확인 정보를 추가하는 단계;
    상기 중간 코드의 코드 정보를 이용하여, 최종 코드를 생성하는 단계; 및
    상기 중간 코드에 상기 무결성 정보가 존재하는지 여부를 확인하여, 상기 프로그램의 코드 정보가 무단 변조되었는지 여부를 검증하는 단계를 포함하는 프로그램 무결성 관리 방법.
  3. 프로그램의 코드 정보가 무단 변조되었는지 여부를 검증하는 프로그램 무결성 관리 방법으로,
    상기 프로그램의 코드 정보를 이용하여, 중간 코드를 생성하는 단계;
    무결성 정보와 무결성 확인 정보를 생성하는 단계;
    상기 중간 코드에 상기 무결성 정보와 상기 무결성 확인 정보를 추가하는 단계;
    상기 중간 코드의 코드 정보를 이용하여, 최종 코드를 생성하는 단계; 및
    상기 무결성 정보와 상기 무결성 확인 정보가 매치되는지 여부를 확인하여, 상기 프로그램의 코드 정보가 무단 변조되었는지 여부를 검증하는 단계를 포함하는 프로그램 무결성 관리 방법.
  4. 제 2 항 또는 제 3 항에 있어서,
    상기 무결성 정보는,
    무작위(Random) 정보, 상기 코드 정보를 암호화한 정보, 개발자 정보, 사용자 인증 정보 중 적어도 하나로 구성된 프로그램 무결성 관리 방법.
  5. 제 2 항 또는 제 3 항에 있어서,
    상기 프로그램의 코드 정보가 무단 변조되지 않은 것으로 검증된 경우, 상기 최종 코드를 실행하는 단계를 포함하는 프로그램 무결성 관리 방법.
  6. 삭제
  7. 프로그램의 코드 정보가 무단 변조되었는지 여부를 검증하는 프로그램 무결성 관리 시스템으로,
    상기 프로그램의 코드 정보를 이용하여, 중간 코드를 생성하는 제 1 변환부;
    무결성 정보와 무결성 확인 정보를 생성하고, 상기 중간 코드에 상기 무결성 정보와 상기 무결성 확인 정보를 추가 무결성 정보 생성부;
    상기 중간 코드의 코드 정보를 이용하여, 최종 코드를 생성하는 제 2 변환부; 및
    상기 중간 코드에 상기 무결성 정보가 존재하는지 여부를 확인하여, 상기 프로그램의 코드 정보가 무단 변조되었는지 여부를 검증하는 무결성 검증부를 포함하는 프로그램 무결성 관리 시스템.
  8. 프로그램의 코드 정보가 무단 변조되었는지 여부를 검증하는 프로그램 무결성 관리 시스템으로,
    상기 프로그램의 코드 정보를 이용하여, 중간 코드를 생성하는 제 1 변환부;
    무결성 정보와 무결성 확인 정보를 생성하고, 상기 중간 코드에 상기 무결성 정보와 상기 무결성 확인 정보를 추가 무결성 정보 생성부;
    상기 중간 코드의 코드 정보를 이용하여, 최종 코드를 생성하는 제 2 변환부; 및
    상기 무결성 정보와 상기 무결성 확인 정보가 매치되는지 여부를 확인하여, 상기 프로그램의 코드 정보가 무단 변조되었는지 여부를 검증하는 무결성 검증부를 포함하는 프로그램 무결성 관리 시스템.
  9. 제 7 항 또는 제 8 항에 있어서,
    상기 무결성 정보는,
    무작위(Random) 정보, 상기 코드 정보를 암호화한 정보, 개발자 정보, 사용자 인증 정보 중 적어도 하나로 구성된 프로그램 무결성 관리 시스템.
  10. 제 7 항 또는 제 8 항에 있어서,
    상기 프로그램의 코드 정보가 무단 변조되지 않은 것으로 검증된 경우, 상기 최종 코드를 실행하는 프로그램 실행부를 포함하는 프로그램 무결성 관리 시스템.
  11. 제 2 항 또는 제 3 항의 프로그램의 코드 정보가 무단 변조되었는지 여부를 검증하는 프로그램 무결성 관리 방법을 컴퓨터 상에서 실행하는 프로그램을 기록한 컴퓨터 판독가능 기록매체.
KR1020130059975A 2013-05-27 2013-05-27 프로그램 무결성 관리 방법, 시스템 및 그 방법을 컴퓨터 상에서 실행하는 프로그램을 기록한 기록매체 KR101440234B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130059975A KR101440234B1 (ko) 2013-05-27 2013-05-27 프로그램 무결성 관리 방법, 시스템 및 그 방법을 컴퓨터 상에서 실행하는 프로그램을 기록한 기록매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130059975A KR101440234B1 (ko) 2013-05-27 2013-05-27 프로그램 무결성 관리 방법, 시스템 및 그 방법을 컴퓨터 상에서 실행하는 프로그램을 기록한 기록매체

Publications (1)

Publication Number Publication Date
KR101440234B1 true KR101440234B1 (ko) 2014-09-12

Family

ID=51760085

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130059975A KR101440234B1 (ko) 2013-05-27 2013-05-27 프로그램 무결성 관리 방법, 시스템 및 그 방법을 컴퓨터 상에서 실행하는 프로그램을 기록한 기록매체

Country Status (1)

Country Link
KR (1) KR101440234B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030092850A (ko) * 2002-05-31 2003-12-06 박동현 크랙킹 대처기능을 갖는 컨텐츠제작방법 및 그 컨텐츠의크랙킹 대처방법
KR20060080157A (ko) * 2006-06-12 2006-07-07 박재형 파일변조를 이용한 프로그램 기능추가 방법 및 설치,실행방법
KR101214893B1 (ko) * 2011-12-16 2013-01-09 주식회사 안랩 어플리케이션의 유사성 검출 장치 및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030092850A (ko) * 2002-05-31 2003-12-06 박동현 크랙킹 대처기능을 갖는 컨텐츠제작방법 및 그 컨텐츠의크랙킹 대처방법
KR20060080157A (ko) * 2006-06-12 2006-07-07 박재형 파일변조를 이용한 프로그램 기능추가 방법 및 설치,실행방법
KR101214893B1 (ko) * 2011-12-16 2013-01-09 주식회사 안랩 어플리케이션의 유사성 검출 장치 및 방법

Similar Documents

Publication Publication Date Title
US7788730B2 (en) Secure bytecode instrumentation facility
TWI420338B (zh) 安全之瀏覽器基礎應用程式
US20170116410A1 (en) Software protection
US8074287B2 (en) Renewable and individualizable elements of a protected environment
US9898587B2 (en) Software protection using an installation product having an entitlement file
EP3455764B1 (en) Method and apparatus for dynamic executable verification
US8955043B2 (en) Type-preserving compiler for security verification
KR20080037048A (ko) 라이센스에 따른 생산 작용 변경
JP5091925B2 (ja) ライセンスファイルのインストール方法
JP2016527608A (ja) プロセス認証とリソースパーミッション
CN101199159A (zh) 安全引导
US8862892B2 (en) System and method for detecting a security compromise on a device
US20100223469A1 (en) Method, System and Computer Program Product for Certifying Software Origination
WO2022078366A1 (zh) 应用保护方法、装置、设备及介质
WO2011096162A1 (ja) 機密性分析支援システム、方法及びプログラム
CS Machado et al. Software control and intellectual property protection in cyber-physical systems
KR101440234B1 (ko) 프로그램 무결성 관리 방법, 시스템 및 그 방법을 컴퓨터 상에서 실행하는 프로그램을 기록한 기록매체
Shang et al. ICS software trust measurement method based on dynamic length trust chain
Msgna et al. Secure application execution in mobile devices
KR101097105B1 (ko) Sw 소스코드 난독화와 버전 관리시스템과의 연동 방법 및 시스템
US20240143805A1 (en) Document protection mechanism
de Oliveira Secure Documents in Collaborative Environments
KR20080008328A (ko) 보호 컴퓨팅 환경의 갱신 가능하고 개별화 가능한 요소
CN107305607A (zh) 一种防止后台恶意程序独立运行的方法和装置
Mathivanan Android Security: Exploration and Exploitation of weakness in Android's Dalvik Executables

Legal Events

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

Payment date: 20170608

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190902

Year of fee payment: 6