KR100348027B1 - 운영체제와 컴파일러가 연계된 프로그램 변경방지 시스템및 그 방법 - Google Patents

운영체제와 컴파일러가 연계된 프로그램 변경방지 시스템및 그 방법 Download PDF

Info

Publication number
KR100348027B1
KR100348027B1 KR1020000035930A KR20000035930A KR100348027B1 KR 100348027 B1 KR100348027 B1 KR 100348027B1 KR 1020000035930 A KR1020000035930 A KR 1020000035930A KR 20000035930 A KR20000035930 A KR 20000035930A KR 100348027 B1 KR100348027 B1 KR 100348027B1
Authority
KR
South Korea
Prior art keywords
program
operating system
password
compiler
file
Prior art date
Application number
KR1020000035930A
Other languages
English (en)
Other versions
KR20000054834A (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 KR1020000035930A priority Critical patent/KR100348027B1/ko
Publication of KR20000054834A publication Critical patent/KR20000054834A/ko
Priority to AU2001266397A priority patent/AU2001266397A1/en
Priority to PCT/KR2001/001093 priority patent/WO2002001358A1/en
Application granted granted Critical
Publication of KR100348027B1 publication Critical patent/KR100348027B1/ko

Links

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/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • 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
    • 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

Landscapes

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

Abstract

본 발명은 컴파일러와 운영체제가 연계되어 소프트웨어의 불법변경을 방지하는 시스템 및 방법에 관한것이다. 본 발명의 목적은 프로그램 개발툴인 컴파일러와 상기 컴파일러에서 제작된 프로그램이 운영되는 운영체제 상에 동일한 암호화 모듈을 갖도록 하고 개발자가 컴파일시에 컴파일러에 구비되어 있는 암호화 모듈을 사용해 프로그램을 암호화 시켜 제작하고, 그 프로그램이 판매된 후 실행될 시에 운영체제상에서 해당 암호화 모듈로 프로그램을 검사하여 불법변경이 되었는지 판단하도록 하는 운영체제와 컴파일러가 연계된 프로그램 변경 방지 시스템 및 방법을 제공하는데 있다. 본 발명의 다른 목적은 프로그램 컴파일시에 운영체제의 승인을 받도록 하여 악의적 목적의 프로그램이 개발되지 못하도록하는 시스템 및 방법을 제공하는데 있다. 이와 같은 목적을 달성하기 위한 본 발명에 의한 프로그램 불법변경 방지 시스템의 특징은 프로그램 개발자가 작성한 코드를 컴파일 시키며 컴파일시 운영체제 승인을 받도록 하고, 컴파일된 파일의 정보를 암호화하여 불법변경 확인 암호를 생성하고 상기 컴파일된 파일에 저장하는 컴파일러; 및 상기 작성된 프로그램의 실행 기반이 되며, 상기 프로그램의 실행 전에 파일에 포함된 불법변경 확인 암호와 운영체제 승인 암호를 통해 불법변경 여부와 운영체제의 승인 여부를 확인하는 운영체제를 포함하여 이루어지는데 있다. 또한, 본 발명에 의한 프로그램 불법변경 방지 방법의 특징은 프로그램 개발자가 컴파일러 프로그램을 통해 프로그램 코드 작성을 완료한 후, 컴파일시 운영체제와 컴파일러사이에 표준화된 암호화모듈로 프로그램에 암호화 정보를 삽입하는 제 1단계; 제 1 단계에서 생성 완료된 프로그램을 컴퓨터에 설치한 후, 프로그램 실행시 운영체제가 상기 암호화 정보를 이용해 불법변경되었는지 판단하는 제 2단계; 및 상기 판단결과 변경되었으면 프로그램 실행을 중지하고, 변경되지 않았을 경우 정상실행을 하는 제 3단계를 포함하여 이루어지는데 있다.

Description

운영체제와 컴파일러가 연계된 프로그램 변경방지 시스템 및 그 방법{Modification prevention system of program cooperated with operating system and compiler and method thereof}
본 발명은 소프트웨어의 불법변경 방지 방법에 관한 것으로, 특히 컴파일러와 운영체제가 연계되어 소프트웨어의 불법변경을 방지하는 시스템 및 방법에 관한것이다.
일반적으로 소프트웨어의 정품을 확인하기 위해 사용하던 제품번호 부여방식은 불법복제에 매우 취약하였다. 시디레코더(CD Recorder)를 사용하여 원본을 복사하거나, 하드 디스크에 카피하여도 제품번호만 있으면 설치가 가능하였기 때문이다. 이런 점을 보완하기 위해 시디의 특정트랙에 복사방지를 위한 코드를 입력하여 복제가 이루어지면 해당 코드를 변경시켜 설치를 원천적으로 막는 방법, 하드웨어적인 락을 걸어 해당 락이 존재하지 않으면 실행되지 않는 방법, 소프트웨어 판매회사의 확인을 거친 후에 제품번호를 부여 받아 실행하는 방법 등이 쓰이고 있다. 하지만, 이런 방법들은 모두 역어셈블러와 같은 분석툴을 이용해 프로그램 코드를 분석하여 어떤 루틴에 의해 불법 복사가 판정되는지 조사하는 것이 용이하며, 해당 루틴을 건너뛰게 하여 즉, 불법 복사 루틴을 실행하지 않게 하여 정상실행하는 방법이 공공연히 시행되고 있다. 이러한 프로그램 불법변경은 비단 정품 소프트웨어에서만 그치는 것이 아니라 평가판 프로그램과 같이 날짜제한이 있는 프로그램의 경우에도 이용되고 있으며, 평가판 프로그램의 날짜체크 루틴을 무력화시켜 정해진날짜가 지나도 계속 사용할 수 있게 한다.
이러한 불법변경을 방지하기 위한 종래의 방법중에는 프로그램의 데이타를 암호화 시키고, 불법변경이 발생하였을 경우에는 그 암호가 변경되어 정상실행되지 않게 하는 방법이 있으나, 이는 단지 암호화 루틴을 찾기 힘들뿐이지 불법변경을 방지할 수 있는 근본적인 해결책이 되지 못하며, 프로그램 개발자 입장에서도 프로그램 개발이외에 새로운 암호화 루틴을 개발해야하는 이중고를 겪도록하는 문제점을 여전히 갖고 있다.
본 발명은 상기한 문제점을 해결하기 위해 안출된 것으로, 그 목적은 프로그램 개발툴인 컴파일러와 상기 컴파일러에서 제작된 프로그램이 운영되는 운영체제 상에 동일한 암호화 모듈을 갖도록 하고 개발자가 컴파일시에 컴파일러에 구비되어 있는 암호화 모듈을 사용해 프로그램을 암호화 시켜 제작하고, 그 프로그램이 판매된 후 실행될 시에 운영체제상에서 해당 암호화 모듈로 프로그램을 검사하여 불법변경이 되었는지 판단하도록 하는 운영체제와 컴파일러가 연계된 프로그램 변경 방지 시스템 및 방법을 제공하는데 있다.
본 발명의 다른 목적은 프로그램 컴파일시에 운영체제의 승인을 받도록 하여 악의적 목적의 프로그램이 개발되지 못하도록하는 시스템 및 방법을 제공하는데 있다.
도 1은 본 발명의 실현을 위한 시스템 구성도.
도 2는 본 발명에 의한 컴파일러상에서의 프로그램 암호화 과정을 나타낸 흐름도.
도 3은 본 발명에 의한 운영체제상의 프로그램 불법변경 확인과정을 나타낸 흐름도.
도 4는 본 발명에 의한 운영체제 승인여부 및 악성프로그램 진단과정을 나타낸 흐름도.
< 도면의 주요부분에 대한 부호의 설명 >
100 : 운영체제 개발자 105 : 운영체제 승인 암호 생성부
110 : 악성프로그램 리스트
115 : 프로그램 개발자 정보 데이터베이스
120 : 컴파일러 개발자 140 : 프로그램 개발자
145 : 운영체제 승인부 150 : 로컬암호 생성부
155 : 암호 생성부 160 : 프로그램 사용자
165 : 제어부 170 : 운영체제
이와 같은 목적을 달성하기 위한 본 발명에 의한 프로그램 불법변경 방지 시스템의 특징은 프로그램 개발자가 작성한 코드를 컴파일 시키며 컴파일시 운영체제 승인을 받도록 하고, 컴파일된 파일의 정보를 암호화하여 불법변경 확인 암호를 생성하고 상기 컴파일된 파일에 저장하는 컴파일러; 및 상기 작성된 프로그램의 실행 기반이 되며, 상기 프로그램의 실행 전에 파일에 포함된 불법변경 확인 암호와 운영체제 승인 암호를 통해 불법변경 여부와 운영체제의 승인 여부를 확인하는 운영체제를 포함하여 이루어지는데 있다.
또한, 본 발명에 의한 프로그램 불법변경 방지 방법의 특징은 프로그램 개발자가 컴파일러 프로그램을 통해 프로그램 코드 작성을 완료한 후, 컴파일시 운영체제와 컴파일러사이에 표준화된 암호화 모듈로 프로그램에 암호화 정보를 삽입하는 제 1단계; 제 1 단계에서 생성 완료된 프로그램을 컴퓨터에 설치한 후, 프로그램 실행시 운영체제가 상기 암호화 정보를 이용해 불법변경되었는지 판단하는 제 2단계; 및 상기 판단결과 변경되었으면 프로그램 실행을 중지하고, 변경되지 않았을 경우 정상실행을 하는 제 3단계를 포함하여 이루어지는데 있다.
이하, 첨부한 도면을 통해 본 발명을 상세히 설명한다.
도 1은 본 발명의 실현을 위한 시스템 구성도이다.
본 발명의 실현을 위해서는 우선 운영체제 개발자(100)와 컴파일러 개발자(120) 사이에 표준화된 암호모듈을 사용할 것을 약정하여야 한다. 운영체제 개발자(100)가 운영체제에 포함될 다수의 표준화된 암호화 모듈을 컴파일러(120)에게 제공하면, 컴파일러 개발자(120)는 해당하는 암호화 모듈을 컴파일러에 포함시켜 프로그램 개발자(140)에게 판매하고 프로그램 개발자(140)가 프로그램 코드를완성한 후, 컴파일시에 다수의 암호화 모듈 중 선택된 하나의 암호화 모듈로 프로그램 코드를 이용해 암호화를 하고 해당 암호화 코드를 프로그램내에 포함시킨다.
상기 운영체제라 함은 윈도우즈, 유닉스, OS/2 등을 말하는 것이며, 컴파일러라 함은 비주얼 베이직이나, C++ 등의 프로그램 개발툴을 의미한다.
상기 컴파일러 개발자(120)가 개발한 컴파일러에는 상기 표준화된 암호화 모듈로 컴파일된 파일을 암호화하는 암호생성부(155), 운영체제 승인을 받기 위한 운영체제 승인부(145), 프로그램 개발과정에서 불필요한 운영체제 승인과정을 생략하기 위한 로컬암호 생성부(150)가 포함되어 있다.
상기 운영체제 개발자는 악성 프로그램의 제작을 막기위해 운영체제에서 승인을 해주는 승인암호 모듈(105)과 프로그램 개발자 정보를 저장하는 데이터베이스(115), 악성 프로그램에 대한 리스트를 저장하고 있는 데이터베이스(110)를 구비한다. 그리고, 운영체제 개발자가 사용자에게 판매하는 운영체제에는 프로그램이 변경되었는지 확인하기 위해 로드된 프로그램을 암호화 하는 다수의 모듈을 갖고 있는 암호 생성부(155), 운영체제 승인 여부를 확인하기 위해 운영체제 승인암호를 도출해내는 운영체제 승인 암호 생성부(105), 개발자 컴퓨터에서 유출된 프로그램인지 확인하기 위한 로컬 암호 생성부(150), 악성 프로그램 리스트에 등록되어 있는 것인지 확인하기 위한 악성 프로그램 리스트(110), 및 상기 각 암호 생성부를 제어하며 생성된 암호와 로드된 파일에 저장되어 있는 암호가 동일한지의 여부와 악성프로그램 리스트에 등록된 것인지의 여부를 판단하는 제어부(170)로 구성되어 있다.
상기 프로그램 개발자(140)는 프로그램 개발 완료후, 컴파일시에 인터넷망을 통해 운영체제 개발자(100)에게 운영체제 승인을 받고, 사용자(160)는 운영체제 개발자(100)로부터 악성 프로그램 리스트(110)를 받는다.
이하, 각 과정을 좀 더 상세히 설명한다.
도 2는 본 발명에 의한 컴파일러상에서의 프로그램 암호와 과정을 나타낸 흐름도이다.
도시한 바와 같이 프로그램 코드 작성을 완료한 후에 실행파일이나 DLL(Dynamic Link Library)파일로 컴파일(S202)을 시켜 실행파일 또는 DLL파일을 생성(S203)한다. 이 때, 로컬(Local)로 컴파일 시킬 것인지 배포용으로 컴파일 시킬 것인지 선택(S200)한다. 이렇게 하는 이유는 프로그램 개발시 한 번에 프로그램이 완성되는 것이 아니라 많은 테스트와 버그(bug)를 수정하는 과정을 동반하기 때문에, 컴파일 할 때마다 운영체제 승인(차후 설명)과정을 거치면 프로그램 개발자의 번거로움을 초래할 수밖에 없기 때문이다.
컴파일 유형의 선택(S200)이 완료되면, 프로그램의 암호화에 사용할 암호화 모듈을 선택(S201)한다. 이는 운영체제와 컴파일러 사이에 하나의 암호화 모듈만 사용할 때는 필요없는 단계이며, 좀 더 강력한 불법변경 방지를 실현시키기 위해서는 다수의 암호화 모듈을 사용하는 것이 바람직하다.
상기 단계(S200)에서 로컬용을 선택한 경우에는 프로그램 개발자의 하드웨어 정보를 이용한 설치암호(즉, 시스템을 구별하기 위한 유일한 암호)가 도출되고, 도출된 설치암호로부터 로컬 암호가 도출되며, 운영체제 승인정보가초기화된다(S210). 그런다음 프로그램 정보(예를 들면, 프로그램 개발자명, 프로그램명 등)와 상기 선택된 암호화 모듈 정보로 암호화 모듈 암호를 도출한다(S211). 이는 앞에서도 설명하였지만, 하나의 암호화 모듈을 사용하였을 때는 필요없는 과정이며, 이렇게 암호화 모듈 암호를 도출하는 이유는 차후 운영체제 상에서 프로그램이 실행되었을 때, 사용된 암호화 모듈에 대한 정보가 없다면 갖고 있는 모든 암호화 모듈로 테스트를 하여야 하므로 수행성능이 떨어지기 때문이다. 그리고, 사용된 암호화 모듈에 대한 정보를 그대로 파일에 기록할 경우에는 불법변경이 쉬워지는 문제점도 발생할 수 있게 되므로, 안전장치의 의미로 암호화 모듈에 대한 정보를 암호화 하는 것이다.
이렇게 만들어진 로컬 암호, 운영체제 승인암호, 암호화 모듈 암호, 및 프로그램 정보가 컴파일된 파일에 저장(S212)된다. 그런다음 컴파일된 파일의 크기와 데이터를 상기 선택된 암호화 모듈로 암호화 시켜 파일크기 암호와 체크섬(checksum) 암호를 도출(S213)하고, 도출된 파일크기 암호 및 체크섬 암호가 컴파일된 파일에 저장(S214)된다. 상기 파일크기 암호는 파일의 크기가 변경되었는지 판단하기 위한 것이며, 상기 체크섬 암호는 파일크기는 변경시키지 않고 파일의 데이터 값만 변경시키는 것을 막기 위한 암호이다. 상기 암호화의 형태는 다양한 형태가 있을 수 있을 것이나, 이는 본 발명에서 추구하고자 하는 내용과 다르므로 이는 운영체제 개발자와 컴파일러 개발자 사이의 협의하에 결정되어야 할 것이다.
다음은 개발 단계가 아닌 배포용 프로그램의 컴파일 과정이다. 프로그램의 개발이 완료된 경우에는 컴파일을 할 때, 배포용 컴파일을 선택(S200)하며, 사용할암호화 모듈을 선택(S201)한다. 프로그램 코드의 컴파일이 이루어진(S202, S203) 후, 인터넷망을 통해 운영체제 승인요청을 한다. 이 때, 운영체제 개발자에게 컴파일된 실행파일이나 DLL파일 및 프로그램 정보(예를 들면, 개발자명, 프로그램명 등)를 제공(S205)하고, 운영체제 개발자는 컴파일된 실행파일이나 DLL파일을 운영체제만의 암호화 모듈로 암호화하여 승인암호를 도출(S206)하고, 프로그램 개발자에게 운영체제 승인암호를 제공(S207)한다. 또한, 승인한 프로그램에 대해서는 받은 프로그램 정보, 승인일자를 운영체제 개발자의 데이터베이스에 저장하여 관리(S208)한다. 이렇게 하는 이유는 악의적 목적을 가진 사람이 자신의 정보를 노출하면서까지 운영체제의 승인을 받으려 하지 않을 것이므로, 이러한 프로그램 제작을 사전에 차단하기 위한 목적과, 향후 발견되는 악성 프로그램의 실행을 차단하기 위한 리스트 작성을 하기 위함이다. 상기 악성 프로그램이란 바이러스 프로그램(virus program)과 같이 사용자가 원치않는 결과를 초래하는 프로그램을 말하는 것이다.
운영체제 개발자로부터 운영체제 승인암호를 부여받게 되면 컴파일러는 로컬 암호를 초기화(S209)시킨후 상기 S211~S214의 과정을 거쳐 암호화된 프로그램을 제작한다.
도 3은 본 발명에 의한 운영체제상의 프로그램 불법변경 확인과정을 나타낸 흐름도이며, 도 4는 본 발명에 의한 운영체제 승인여부 및 악성프로그램 진단과정을 나타낸 흐름도이다.
상기 도 2의 과정을 통해 개발된 프로그램을 사용자가 자신의 컴퓨터에 설치완료한다. 해당 프로그램의 실행명령이 인가(S300)되면 운영체제의 프로그램 로더는 실행파일 또는 DLL파일을 호출(S301)하고 로드된 파일의 크기 및 체크섬을 도출(S302)한다. 또한, 파일에 포함되어 있는 프로그램 정보 및 암호화 모듈 암호를 독출한다(S303). 독출된 프로그램 정보와 운영체제에 포함되어 있는 암호화 모듈정보로 암호화 모듈 암호를 도출한다(S304). 그런다음 도출된 암호화 모듈 암호와 상기 독출된 암호화 모듈 암호가 동일한지 판단(S305)한다. 판단결과 동일 하지 않으면 운영체제 상의 모든 암호화 모듈로 테스트를 거쳤는지 확인(S306)을 하여 그렇다면 종료를 하고 그렇지 않다면 다시 다른 암호화 모듈로 상기 S304~305의 과정을 거친다. 상기 단계 S305에서 값이 동일하다면 그 모듈로 암호화가 이루어진 것이므로, 해당 모듈을 선택(S307)하고, 이를 이용해 상기 도출된 파일크기 정보와 체크섬 정보를 암호화하여 파일크기 암호와 체크섬 암호로 도출(S308)한다. 도출이 완료되면 해당 파일에 저장되어 있는 파일크기 암호와 체크섬 암호를 독출(S309)한다. 상기 도출된 파일크기 암호와 독출된 파일크기 암호가 동일한지 판단(S310)하여 동일하지 않으면 종료하고, 동일하면 도출된 체크섬 암호와 독출된 체크섬 암호도 동일한지 다시 판단(S311)한다. 판단결과 동일하지 않으면 종료하고, 동일하면 다음과정(A)으로 넘어간다. 이 과정을 통해 파일 변경이 이루어졌는지를 판단할 수가 있다.
상기 과정을 통과하면, 이제는 운영체제의 승인을 받았는지 그리고, 악성프로그램의 리스트에 들어있는지 판단하는 과정을 거치게 된다.
로드된 파일에서 로컬 암호를 독출(S400)한다. 독출된 로컬암호가 비어있는지 판단(S401)하여 비어있다면 운영체제의 승인을 받은 것이므로 로드된 파일의 정보를 운영체제에 포함되어 있는 - 상기 도 2 과정의 승인암호 도출에 사용된 암호화 모듈과 동일한 - 운영체제 승인 암호화 모듈로 암호화 하여 운영체제 승인암호를 도출하고 로드된 파일에 저장되어 있는 운영체제 승인암호를 독출(S402)한다. 도출된 운영체제 승인암호와 독출된 운영체제 승인암호를 비교(S403)하여 동일하지 않으면 종료하고 그렇지 않으면 다음단계로 넘어간다.
상기 S401단계에서 독출된 로컬암호가 비어있지 않다면 아직 개발중이라는 의미이므로, 개발자의 컴퓨터에 설치되어 있는지를 판단하여 운영체제의 승인을 받지 않고 비밀리에 유포시키려는 것인지 판단한다. 우선 설치된 컴퓨터의 설치암호를 도출하고 도출된 설치암호로 부터 로컬 암호를 도출(S404)한다. 도출된 로컬암호와 독출된 로컬암호가 동일한지 판단(S405)하여 동일하지 않으면, 개발자 컴퓨터에서 유출된 프로그램이므로, 프로그램을 종료시킨다. 상기 판단결과(S405)가 동일하면 아직도 개발중인 프로그램이므로 다음단계로 넘어간다.
이제는 위 모든 과정을 거쳤음에도 불구하고 이러한 프로텍트를 모두 통과한 악성 프로그램을 진단하여 실행을 방지하기 위한 과정이다.
상기 로드된 파일에서 독출되어 있는 프로그램 정보가 운영체제 개발자로부터 다운받은 악성 프로그램 리스트에 존재하는 것인지 판단(S406)한다. 이 악성 프로그램 리스트는 운영체제 개발자가 입수한 악성프로그램에 대한 프로그램 정보를 새로이 업데이트 될 때마다 운영체제 사용자에게 제공하는 것이다. 상기 판단(S406)결과 존재하지 않으면 정상실행(S407)을 하고, 존재하면 종료를 하여 악성 프로그램의 실행을 방지한다.
여기서 한 가지 문제가 되는 사항이 있는데, 만약 이 모든 과정을 테스트하고 제어하는 운영체제의 제어모듈이 불법변경의 대상이 되면 상기한 과정들이 의미가 없게 될 수도 있다. 따라서, 이러한 위험을 막기위해 운영체제 상의 타 모듈이 상기 제어모듈이 변화되었는가를 상기 도3의 과정과 동일하게 판단을 하도록 이중 안전장치를 강구하거나, 그보다 안전한 방법으로 롬 바이오스(ROM BIOS)에서 부팅 초기에 상기 제어모듈이 변경되었는지 테스트 하도록 하는 방법을 이용할 수 있다. 상기 롬 바이오스에는 하나의 운영체제에 국한되지 않기 위해 모든 운영체제의 제어모듈을 테스트 하는 루틴을 삽입하는 것이 바람직하다. 또한, 본 발명에 의한 불법변경 방지 방법은 앞에서도 언급하였지만, 암호화 루틴이 운영체제 개발자와 컴파일러 개발자 사이에 표준화되고 동일한 암호화 루틴을 사용하도록 협약이 이루어져야 하며, 종래의 프로그램들은 새로운 운영체제에서 실행되기 위해 변경절차를 거쳐야 한다. 따라서, 본 발명이 실현되기 위해서는 일련의 과도기적인 단계 - 종래의 프로그램과 암호화 모듈로 생성된 새로운 프로그램이 동시에 실행되는 - 가 수반되어야 한다. 또, 이러한 프로텍트 이외에 추가 변경방지 코드나 정품확인 코드를 넣는 것은 프로그램 개발자의 선택사항이므로, 이는 언급하지 않는다.
이상 상술한 바와 같이, 본 발명에 의하면 소프트웨어 개발자는 소프트웨어의 불법변경을 막기위해 별도의 암호코드를 추가하려는 노력을 기울일 필요가 없게되며, 운영체제 차원에서 불법변경 여부를 판별하므로 불법변경을 원천적으로 막을수 있게된다. 또한, 바이러스 프로그램에 의해 감염된 프로그램은 실행이 되지않아 바이러스의 확산을 막을 수 있으며, 그 이전에 운영체제로의 사전등록과정을 거쳐 승인을 받은 프로그램만 실행이 되므로, 바이러스 프로그램의 개발을 막을 수 있는 이점이 있다. 그리고, 이러한 보안을 뚫고 생성되는 바이러스라도 운영체제에서 악성 프로그램의 리스트를 작성해 배포하므로, 바이러스의 전파를 막을 수 있는 이점도 있다.

Claims (14)

  1. 프로그램 불법변경 방지 시스템에 있어서,
    프로그램 개발자가 작성한 코드를 컴파일 시키며 컴파일시 운영체제 승인을 받도록 하고, 컴파일된 파일의 정보를 암호화하여 불법변경 확인 암호를 생성하고 상기 컴파일된 파일에 저장하는 컴파일러; 및
    상기 작성된 프로그램의 실행 기반이 되며, 상기 프로그램의 실행 전에 파일에 포함된 불법변경 확인 암호와 운영체제 승인 암호를 통해 불법변경 여부와 운영체제의 승인 여부를 확인하는 운영체제를 포함하는 것을 특징으로 하는 운영체제와 컴파일러가 연계된 프로그램 변경방지 시스템.
  2. 제 1 항에 있어서, 상기 운영체제 승인은 프로그램 정보와 컴파일된 파일을 인터넷망을 통해 운영체제 개발자에게 제공하고, 운영체제 개발자로부터 컴파일된 파일의 운영체제 승인 암호를 수신받아 저장하는 것을 특징으로 하는 운영체제와 컴파일러가 연계된 프로그램 변경방지 시스템.
  3. 제 1 항에 있어서, 상기 컴파일러는 운영체제 승인을 받기 위한 운영체제 승인부(145); 및
    컴파일된 파일의 정보를 이용해 불법변경 확인 암호를 생성하는 암호생성부(155)를 포함하는 것을 특징으로 하는 운영체제와 컴파일러가 연계된 프로그램 변경방지 시스템.
  4. 제 1 항에 있어서, 상기 운영체제는 프로그램이 변경되었는지 확인하기 위해 로드된 프로그램 정보를 암호화 하는 암호 생성부(155);
    운영체제 승인 여부를 확인하기 위해 운영체제 승인암호를 도출해내는 운영체제 승인 암호 생성부(105);
    운영체제 개발자로부터 다운받은 악성 프로그램에 대한 정보를 저장하고 있는 악성 프로그램 리스트(110); 및
    상기 각 암호 생성부(105, 155)를 제어하며 생성된 암호와 로드된 파일에 저장되어 있는 암호가 동일한지의 여부와 악성프로그램 리스트(110)에 등록된 것인지의 여부를 판단하는 제어부(165)를 포함하는 것을 특징으로 하는 운영체제와 컴파일러가 연계된 프로그램 변경방지 시스템.
  5. 제 3 항 또는 제 4 항에 있어서, 프로그램의 개발이 완료되지 않았을 경우에 컴파일을 간소화 하며, 프로그램 개발자 시스템에서만 상기 프로그램이 실행되도록 하기위한 로컬 암호 생성부(150)를 더 포함하는 것을 특징으로 하는 운영체제와 컴파일러가 연계된 프로그램 변경방지 시스템.
  6. 제 3 항 또는 제 4 항에 있어서, 상기 암호 생성부(155)는 다수개의 암호화 모듈을 갖고 있는 것을 특징으로 하는 운영체제와 컴파일러가 연계된 프로그램 변경방지 시스템.
  7. 소프트웨어의 불법변경을 방지하기 위한 방법에 있어서,
    프로그램 개발자가 컴파일러 프로그램을 통해 프로그램 코드 작성을 완료한 후, 컴파일시 운영체제와 컴파일러사이에 표준화된 암호화 모듈로 프로그램에 암호화 정보를 삽입하는 제 1단계;
    제 1 단계에서 생성 완료된 프로그램을 컴퓨터에 설치한 후, 프로그램 실행시 운영체제가 상기 암호화 정보를 이용해 불법변경되었는지 판단하는 제 2단계; 및
    상기 판단결과 변경되었으면 프로그램 실행을 중지하고, 변경되지 않았을 경우 정상실행을 하는 제 3단계를 포함하는 것을 특징으로 하는 운영체제와 컴파일러가 연계된 프로그램 변경방지 방법.
  8. 제 7 항에 있어서, 악성 프로그램의 실행을 방지하기 위하여 해당 프로그램에서 독출된 프로그램 정보가 악성 프로그램 리스트에 존재하는지를 판단하여 존재하면 실행을 중지하고 존재하지 않으면 정상실행하는 단계를 더 포함하는 것을 특징으로 하는 운영체제와 컴파일러가 연계된 프로그램 변경방지 방법.
  9. 제 7 항에 있어서, 제 1단계는
    프로그램 개발자가 프로그램 코드 작성을 완료한 후에 컴파일을 시키는 제 1단계;
    컴파일 옵션이 로컬용인지 배포용인지 판단하는 제 2단계;
    제 2단계의 판단결과 로컬용일 경우, 프로그램 개발자 컴퓨터의 설치암호를 도출하고, 도출된 설치암호로부터 로컬 암호를 도출하며 운영체제 승인 정보를 초기화 하는 제 3단계;
    제 2단계의 판단결과 배포용일 경우, 컴파일된 파일과 프로그램 정보를 인터넷망을 통해 운영체제 개발자에게 전송하는 제 4단계;
    상기 전송이 완료되면 운영체제 개발자는 컴파일된 파일정보로 승인암호 생성모듈을 이용해 승인암호를 도출하여 프로그램 개발자에게 전송하는 제 5단계;
    운영체제 승인된 프로그램에 대해서 프로그램 정보, 승인일자를 운영체제 개발자의 데이터베이스에 저장하는 제 6단계;
    운영체제 개발자로부터 운영체제 승인암호를 부여받게 되면 로컬 암호를 초기화하는 제 7단계;
    상기 로컬 암호, 운영체제 승인 암호와 프로그램 정보를 컴파일된 파일에 저장하는 제 8단계; 및
    컴파일된 파일의 크기와 데이터를 암호화 모듈로 암호화하여 파일크기 암호와 체크섬 암호를 도출하고 해당 파일에 저장하는 제 9단계를 포함하는 것을 특징으로 하는 운영체제와 컴파일러가 연계된 프로그램 변경방지 방법.
  10. 제 9 항에 있어서, 암호화 모듈이 다수개일 때 운영체제의 변경확인 수행을향상시키기 위하여 프로그램 정보와 사용된 암호화 모듈을 이용해 암호화 모듈 암호를 도출하여 컴파일된 파일에 저장하는 단계를 더 포함하는 것을 특징으로 하는 운영체제와 컴파일러가 연계된 프로그램 변경방지 방법.
  11. 제 7 항에 있어서, 제 2단계는
    사용자가 프로그램 설치를 완료하고 실행명령을 인가하는 제 1단계;
    상기 실행명령이 인가되면 운영체제의 프로그램 로더에 의해 해당 파일을 메모리로 로드하는 제 2단계;
    로드된 파일의 크기 및 체크섬을 도출하여, 도출된 파일크기 정보와 데이터 정보를 운영체제에 포함되어 있는 암호화 모듈로 암호화하여 파일크기 암호와 체크섬 암호를 도출하는 제 3단계;
    해당 파일에 저장되어 있는 파일크기 암호와 체크섬 암호를 독출하는 제 4단계;
    상기 도출된 파일크기 암호와 독출된 파일크기 암호가 동일한지 판단하는 제 5단계;
    상기 제 5단계의 판단결과 동일하면, 도출된 체크섬 암호와 독출된 체크섬 암호가 동일한지 판단하는 제 6단계;
    상기 제 6단계의 판단결과 동일하면, 로드된 파일에서 로컬 암호를 독출하는 제 7단계;
    상기 독출된 로컬암호가 비어있으면, 로드된 파일의 정보로 운영체제 승인암호 생성 모듈을 이용해 운영체제 승인암호를 도출하는 제 8단계;
    상기 승인암호 도출이 완료되면 로드된 파일에 저장되어 있는 운영체제 승인암호를 독출하여 상기 도출된 운영체제 승인암호와 동일한지 판단하는 제 9단계;
    제 7단계에서 독출된 로컬암호가 비어있지 않으면, 설치된 컴퓨터의 설치암호를 도출하고 도출된 설치암호로 부터 로컬 암호를 도출하여 도출된 로컬암호와 독출된 로컬암호가 동일한지 판단하는 제 10단계를 포함하는 것을 특징으로 하는 운영체제와 컴파일러가 연계된 프로그램 변경방지 방법.
  12. 제 11 항에 있어서, 암호화 모듈이 다수개일 경우, 사용된 암호화 모듈을 찾기위해 프로그램 실행시 독출된 프로그램 정보와 운영체제 상의 암호화 모듈을 이용해 암호화 모듈 암호를 도출하고, 상기 프로그램에서 독출된 암호화 모듈 암호와 동일한지 판단하여 사용된 암호화 모듈을 찾는 단계를 더 포함하는 것을 특징으로 하는 운영체제와 컴파일러가 연계된 프로그램 변경방지 방법.
  13. 제 11 항에 있어서, 운영체제의 부팅시 롬 바이오스에 의해 운영체제의 제어모듈이 변경되었는지 판단하는 단계를 더 포함하는 것을 특징으로 하는 운영체제와 컴파일러가 연계된 프로그램 변경방지 방법.
  14. 제 11 항에 있어서, 운영체제의 타 모듈이 운영체제의 제어모듈이 변경되었는지 판단하는 단계를 더 포함하는 것을 특징으로 하는 운영체제와 컴파일러가 연계된 프로그램 변경방지 방법.
KR1020000035930A 2000-06-28 2000-06-28 운영체제와 컴파일러가 연계된 프로그램 변경방지 시스템및 그 방법 KR100348027B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020000035930A KR100348027B1 (ko) 2000-06-28 2000-06-28 운영체제와 컴파일러가 연계된 프로그램 변경방지 시스템및 그 방법
AU2001266397A AU2001266397A1 (en) 2000-06-28 2001-06-27 System for preventing illegal change of program with operation system and compiler cooperated, and method thereof
PCT/KR2001/001093 WO2002001358A1 (en) 2000-06-28 2001-06-27 System for preventing illegal change of program with operation system and compiler cooperated, and method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020000035930A KR100348027B1 (ko) 2000-06-28 2000-06-28 운영체제와 컴파일러가 연계된 프로그램 변경방지 시스템및 그 방법

Publications (2)

Publication Number Publication Date
KR20000054834A KR20000054834A (ko) 2000-09-05
KR100348027B1 true KR100348027B1 (ko) 2002-08-07

Family

ID=19674398

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020000035930A KR100348027B1 (ko) 2000-06-28 2000-06-28 운영체제와 컴파일러가 연계된 프로그램 변경방지 시스템및 그 방법

Country Status (3)

Country Link
KR (1) KR100348027B1 (ko)
AU (1) AU2001266397A1 (ko)
WO (1) WO2002001358A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100929870B1 (ko) * 2002-12-04 2009-12-04 삼성전자주식회사 컴퓨터 시스템의 바이오스 보안 유지방법
JP4335707B2 (ja) * 2004-02-06 2009-09-30 Necエレクトロニクス株式会社 プログラム改竄検出装置、及びプログラム改竄検出プログラムおよびプログラム改竄検出方法
GB2440199B (en) 2006-07-13 2008-11-12 British Telecomm Electronic programme guide for a mobile communications device

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR970002625A (ko) * 1995-06-15 1997-01-28 김광호 응용 프로그램의 불법 복사 방지를 위한 프로그램 잠금 방법
JPH1031587A (ja) * 1996-07-15 1998-02-03 Hitachi Ltd データ端末装置およびコンピュータプログラム
KR100200445B1 (ko) * 1994-04-25 1999-06-15 포만 제프리 엘 파일 액세스 보안유지 방법 및 장치

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3633747B2 (ja) * 1997-04-11 2005-03-30 松下電器産業株式会社 マイクロプロセッサのプログラムデバッグ装置
JPH11243565A (ja) * 1998-02-26 1999-09-07 Nec Telecom Syst Ltd ボタン電話装置におけるサービスクラス変更方式および変更方法
KR100332763B1 (ko) * 1999-02-10 2002-04-17 구자홍 디지탈데이터 플레이어의 복제방지 장치 및 방법
KR100367094B1 (ko) * 1999-10-22 2003-01-06 한국전자통신연구원 컴퓨터 프로그램 온라인 유통 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100200445B1 (ko) * 1994-04-25 1999-06-15 포만 제프리 엘 파일 액세스 보안유지 방법 및 장치
KR970002625A (ko) * 1995-06-15 1997-01-28 김광호 응용 프로그램의 불법 복사 방지를 위한 프로그램 잠금 방법
JPH1031587A (ja) * 1996-07-15 1998-02-03 Hitachi Ltd データ端末装置およびコンピュータプログラム

Also Published As

Publication number Publication date
KR20000054834A (ko) 2000-09-05
WO2002001358A1 (en) 2002-01-03
AU2001266397A1 (en) 2002-01-08

Similar Documents

Publication Publication Date Title
US7539875B1 (en) Secure repository with layers of tamper resistance and system and method for providing same
US7188241B2 (en) Protecting software from unauthorized use by applying machine-dependent modifications to code modules
US7254586B2 (en) Secure and opaque type library providing secure data protection of variables
US7051200B1 (en) System and method for interfacing a software process to secure repositories
US7747877B2 (en) Tamper-resistant trusted Java virtual machine and method of using the same
US7287166B1 (en) Guards for application in software tamperproofing
Vachharajani et al. RIFLE: An architectural framework for user-centric information-flow security
JP5460699B2 (ja) ソフトウェアアプリケーションのホワイトボックス実装を生成するためのシステムおよび方法
US6480959B1 (en) Software system and associated methods for controlling the use of computer programs
US6643775B1 (en) Use of code obfuscation to inhibit generation of non-use-restricted versions of copy protected software applications
EP0556305B1 (en) A secure system for activating personal computer software at remote locations
US20030120938A1 (en) Method of securing software against reverse engineering
JP4976991B2 (ja) 情報処理装置、プログラム検証方法及びプログラム
US8341751B2 (en) Software license management
US8225290B2 (en) Systems and methods for regulating execution of computer software
KR19980081644A (ko) 정보처리장치, 방법 및 기록매체
Devanbu et al. Techniques for trusted software engineering
KR100348027B1 (ko) 운영체제와 컴파일러가 연계된 프로그램 변경방지 시스템및 그 방법
Bieber et al. The PACAP prototype: a tool for detecting Java Card illegal flow
WO1996018951A1 (en) Methods and apparatus for protection of executable programs, libraries and data
CN116964575A (zh) 代码部署
CN108804880A (zh) 一种软件生成方法和装置
Jadhav Protecting the integrity of Android applications by employing automated self-introspection methods
Muthana et al. A proof-producing machine-code analyzer for secure information flow
Bridges et al. RIFLE: An Architectural Framework for User-Centric Information-Flow Security

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee