KR20180004065A - 파일 보호 방법 및 시스템 - Google Patents

파일 보호 방법 및 시스템 Download PDF

Info

Publication number
KR20180004065A
KR20180004065A KR1020170181080A KR20170181080A KR20180004065A KR 20180004065 A KR20180004065 A KR 20180004065A KR 1020170181080 A KR1020170181080 A KR 1020170181080A KR 20170181080 A KR20170181080 A KR 20170181080A KR 20180004065 A KR20180004065 A KR 20180004065A
Authority
KR
South Korea
Prior art keywords
file
command
protection
application
control
Prior art date
Application number
KR1020170181080A
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 KR1020170181080A priority Critical patent/KR20180004065A/ko
Publication of KR20180004065A publication Critical patent/KR20180004065A/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2147Locking files

Landscapes

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

Abstract

파일 보호 방법 및 시스템이 개시된다. 컴퓨터로 구현되는 서버의 파일 보호 방법이 제공된다. 파일 보호 방법은, 어플리케이션의 설치 및 구동을 위한 파일들이 포함된 패키지를 입력받는 단계, 상기 패키지에 파일 보호 모듈의 동작을 위한 보호 파일을 추가하는 단계 및 상기 보호 파일이 추가된 패키지를 네트워크를 통해 제공하는 단계를 포함할 수 있다. 이때 상기 보호 파일이 추가된 패키지를 통해 상기 어플리케이션이 설치 및 구동된 전자 기기에서 상기 어플리케이션의 서비스 코드를 통해 상기 어플리케이션에 의해 제어되는 특정 파일에 대한 제어 명령이 실행되는 경우, 상기 파일 보호 모듈이 포함하는 보호 명령이 호출되고, 상기 호출된 보호 명령을 통해 상기 특정 파일에 대한 제어 및 상기 특정 파일에 저장된 데이터에 대한 무결성 검증이 처리될 수 있다.

Description

파일 보호 방법 및 시스템{METHOD AND SYSTEM FOR PROTECTING FILE}
아래의 설명은 파일 보호 방법 및 시스템에 관한 것이다.
서버-클라이언트 환경에서 클라이언트는 클라이언트 프로그램인 특정 어플리케이션을 통해 서버에 접속하고, 접속된 서버로부터 서비스를 제공받을 수 있다. 이때, 서비스와 관련된 주요 데이터 파일들은 주요 데이터들에 대한 무결성 검증이나 주요 데이터들에 대한 조작으로부터의 보호를 위해 서버에 저장될 수 있다.
예를 들어, 한국등록특허 제10-1082917호(원격 컴퓨팅 환경에서 사용자 데이터의 무결성 검증 방법 및 그 시스템)는 사용자 데이터의 무결성 검증을 위해 사용자 데이터의 암호문과 사용자 데이터에 대한 블룸 필터(Bloom filter)를 원격 컴퓨팅 서비스를 제공하는 서버의 스토리지(storage)에 저장시키고, 사용자로부터 자신의 사용자 데이터에 대한 다운로드 요청이 있는 경우, 요청된 사용자 데이터에 상응하는 암호문의 일부와 블룸 필터의 일부를 스토리지로부터 호출하여 사용자에게 전송하며, 전송받은 일부 암호문이 전송받은 일부 블룸 필터에 속하는지 판단하여 다운로드 요청한 사용자 데이터의 무결성(integrity)을 검증하는 구성을 개시하고 있다.
그러나, 오프라인 모드를 지원하는 게임과 같이, 주요 데이터 파일들이 클라이언트에 저장되고, 지속적으로 갱신되는 서비스들이 존재한다. 이처럼 주요 데이터 파일들이 클라이언트에 저장되는 서비스들에 대해 지속적인 서버와의 통신을 통해 주요 데이터의 무결성을 검증하는 것은 매우 비효율적이다. 뿐만 아니라, 클라이언트에 저장된 주요 데이터 파일은 사용자의 접근이 용이하기 때문에 클라이언트에서 해당 파일을 조작하는 것을 막기 어렵다는 문제점이 있다.
서버로 등록되는 어플리케이션의 파일들에 파일 보호 모듈을 추가하여 전자 기기로 전송하고, 전자 기기에서 구동된 어플리케이션의 서비스 코드에서 특정 파일에 대한 열기 명령, 읽기 명령 및/또는 쓰기 명령이 실행되는 경우에 파일 보호 모듈의 열기 명령, 읽기 명령 및/또는 쓰기 명령을 호출할 수 있도록 하며, 파일 보호 모듈의 열기 명령, 읽기 명령 및/또는 쓰기 명령이 해당 특정 파일에 대한 열기, 읽기 및/또는 쓰기를 처리함과 동시에 파일에 대한 무결성을 검증하도록 하여 주요 파일을 보호할 수 있는 파일 보호 방법 및 시스템을 제공한다.
컴퓨터로 구현되는 서버의 파일 보호 방법에 있어서, 어플리케이션의 설치 및 구동을 위한 파일들이 포함된 패키지를 입력받는 단계; 상기 패키지에 파일 보호 모듈의 동작을 위한 보호 파일을 추가하는 단계; 및 상기 보호 파일이 추가된 패키지를 네트워크를 통해 제공하는 단계를 포함하고, 상기 보호 파일이 추가된 패키지를 통해 상기 어플리케이션이 설치 및 구동된 전자 기기에서 상기 어플리케이션의 서비스 코드를 통해 상기 어플리케이션에 의해 제어되는 특정 파일에 대한 제어 명령이 실행되는 경우, 상기 파일 보호 모듈이 포함하는 보호 명령이 호출되고, 상기 호출된 보호 명령을 통해 상기 특정 파일에 대한 제어 및 상기 특정 파일에 저장된 데이터에 대한 무결성 검증이 처리되는 것을 특징으로 하는 파일 보호 방법을 제공한다.
컴퓨터로 구현되는 전자 기기와 결합되어 파일 보호 방법을 실행시키기 위해 매체에 저장된 컴퓨터 프로그램에 있어서, 상기 파일 보호 방법은, 상기 전자 기기에 설치된 어플리케이션을 구동하는 단계; 상기 어플리케이션의 서비스 코드에 따라 서비스를 제공하는 단계; 상기 어플리케이션에 의해 제어되는 특정 파일에 대한 제어 명령이 실행되는 경우, 상기 어플리케이션에 포함된 파일 보호 모듈이 포함하는 보호 명령을 호출하는 단계; 및 상기 호출된 보호 명령을 통해 상기 특정 파일에 대한 제어 및 상기 특정 파일에 저장된 데이터에 대한 무결성 검증을 처리하는 단계를 포함하고, 상기 파일 보호 모듈은, 서버에서 어플리케이션의 설치 및 구동을 위한 파일들이 포함된 패키지에 추가되어 제공되는 것을 특징으로 하는 컴퓨터 프로그램을 제공한다.
컴퓨터로 구현되는 전자 기기의 파일 보호 방법에 있어서, 상기 전자 기기에 설치된 어플리케이션을 구동하는 단계; 상기 어플리케이션의 서비스 코드에 따라 서비스를 제공하는 단계; 상기 어플리케이션에 의해 제어되는 특정 파일에 대한 제어 명령이 실행되는 경우, 상기 어플리케이션에 포함된 파일 보호 모듈이 포함하는 보호 명령을 호출하는 단계; 및 상기 호출된 보호 명령을 통해 상기 특정 파일에 대한 제어 및 상기 특정 파일에 저장된 데이터에 대한 무결성 검증을 처리하는 단계를 포함하고, 상기 파일 보호 모듈은, 서버에서 어플리케이션의 설치 및 구동을 위한 파일들이 포함된 패키지에 추가되어 제공되는 것을 특징으로 하는 파일 보호 방법을 제공한다.
서버로 등록되는 어플리케이션의 파일들에 파일 보호 모듈을 추가하여 전자 기기로 전송하고, 전자 기기에서 구동된 어플리케이션의 서비스 코드에서 특정 파일에 대한 열기 명령, 읽기 명령 및/또는 쓰기 명령이 실행되는 경우에 파일 보호 모듈의 열기 명령, 읽기 명령 및/또는 쓰기 명령을 호출할 수 있도록 하며, 파일 보호 모듈의 열기 명령, 읽기 명령 및/또는 쓰기 명령이 해당 특정 파일에 대한 열기, 읽기 및/또는 쓰기를 처리함과 동시에 파일에 대한 무결성을 검증하도록 하여 주요 파일을 보호할 수 있다.
어플리케이션의 개발자가 파일의 무결성 보호를 위해 어플리케이션에 별도의 보호 코드를 추가하거나 서버에서 무결성을 보호하도록 별도의 기능을 추가할 필요 없이 어플리케이션 본래의 서비스 개발에만 집중하도록 할 수 있다.
도 1은 본 발명의 일실시예에 따른 네트워크 환경의 예를 도시한 도면이다.
도 2는 본 발명의 일실시예에 있어서, 전자 기기 및 서버의 내부 구성을 설명하기 위한 블록도이다.
도 3은 본 발명의 일실시예에 따른 서버의 프로세서가 포함할 수 있는 구성요소의 예를 도시한 도면이다.
도 4는 본 발명의 일실시예에 따른 서버가 수행할 수 있는 방법의 예를 도시한 흐름도이다.
도 5는 본 발명의 일실시예에 따른 전자 기기의 프로세서가 포함할 수 있는 구성요소의 예를 도시한 도면이다.
도 6은 본 발명의 일실시예에 따른 전자 기기가 수행할 수 있는 방법의 예를 도시한 흐름도이다.
도 7은 본 발명의 일실시예에 있어서, 서버가 패키지에 보호 파일을 추가하여 전자 기기로 전송하는 과정의 예를 도시한 도면이다.
도 8은 본 발명의 일실시예에 있어서, SDK 방식에 따라 파일을 보호하는 방법의 예를 도시한 도면이다.
도 9는 본 발명의 일실시예에 있어서, 후킹 모드에 따라 파일을 보호하는 방법의 예를 도시한 도면이다.
이하, 실시예를 첨부한 도면을 참조하여 상세히 설명한다.
도 1은 본 발명의 일실시예에 따른 네트워크 환경의 예를 도시한 도면이다. 도 1의 네트워크 환경은 복수의 전자 기기들(110, 120, 130, 140), 복수의 서버들(150, 160) 및 네트워크(170)를 포함하는 예를 나타내고 있다. 이러한 도 1은 발명의 설명을 위한 일례로 전자 기기의 수나 서버의 수가 도 1과 같이 한정되는 것은 아니다.
복수의 전자 기기들(110, 120, 130, 140)은 컴퓨터 장치로 구현되는 고정형 단말이거나 이동형 단말일 수 있다. 복수의 전자 기기들(110, 120, 130, 140)의 예를 들면, 스마트폰(smart phone), 휴대폰, 네비게이션, 컴퓨터, 노트북, 디지털방송용 단말, PDA(Personal Digital Assistants), PMP(Portable Multimedia Player), 태블릿 PC 등이 있다. 일례로 전자 기기 1(110)은 무선 또는 유선 통신 방식을 이용하여 네트워크(170)를 통해 다른 전자 기기들(120, 130, 140) 및/또는 서버(150, 160)와 통신할 수 있다.
통신 방식은 제한되지 않으며, 네트워크(170)가 포함할 수 있는 통신망(일례로, 이동통신망, 유선 인터넷, 무선 인터넷, 방송망)을 활용하는 통신 방식뿐만 아니라 기기들간의 근거리 무선 통신 역시 포함될 수 있다. 예를 들어, 네트워크(170)는, PAN(personal area network), LAN(local area network), CAN(campus area network), MAN(metropolitan area network), WAN(wide area network), BBN(broadband network), 인터넷 등의 네트워크 중 하나 이상의 임의의 네트워크를 포함할 수 있다. 또한, 네트워크(170)는 버스 네트워크, 스타 네트워크, 링 네트워크, 메쉬 네트워크, 스타-버스 네트워크, 트리 또는 계층적(hierarchical) 네트워크 등을 포함하는 네트워크 토폴로지 중 임의의 하나 이상을 포함할 수 있으나, 이에 제한되지 않는다.
서버(150, 160) 각각은 복수의 전자 기기들(110, 120, 130, 140)과 네트워크(170)를 통해 통신하여 명령, 코드, 파일, 컨텐츠, 서비스 등을 제공하는 컴퓨터 장치 또는 복수의 컴퓨터 장치들로 구현될 수 있다.
일례로, 서버(150)는 전자 기기 2(120)로부터 등록되는 어플리케이션에 파일 보호 모듈을 위한 파일을 추가할 수 있다. 파일 보호 모듈이 포함된 어플리케이션은 서버(150)나 또는 별도의 서버(160)를 통해 전자 기기 1(110)로 제공될 수 있으며, 전자 기기 1(110)은 어플리케이션을 설치 및 구동하여 어플리케이션이 제공하는 서비스를 제공받을 수 있으며, 파일 보호 모듈을 통해 전자 기기 1(110)에 저장된 주요 데이터 파일을 보호 받을 수 있다.
도 2는 본 발명의 일실시예에 있어서, 전자 기기 및 서버의 내부 구성을 설명하기 위한 블록도이다. 도 2에서는 하나의 전자 기기에 대한 예로서 전자 기기 1(110), 그리고 하나의 서버에 대한 예로서 서버(150)의 내부 구성을 설명한다. 다른 전자 기기들(120, 130, 140)이나 서버(160) 역시 동일한 또는 유사한 내부 구성을 가질 수 있다.
전자 기기 1(110)과 서버(150)는 메모리(211, 221), 프로세서(212, 222), 통신 모듈(213, 223) 그리고 입출력 인터페이스(214, 224)를 포함할 수 있다. 메모리(211, 221)는 컴퓨터에서 판독 가능한 기록 매체로서, RAM(random access memory), ROM(read only memory) 및 디스크 드라이브와 같은 비소멸성 대용량 기록장치(permanent mass storage device)를 포함할 수 있다. 또한, 메모리(211, 221)에는 운영체제와 적어도 하나의 프로그램 코드(일례로 전자 기기 1(110)에 설치되어 구동되는 브라우저나 영상 통화를 위한 어플리케이션 등을 위한 코드)가 저장될 수 있다. 이러한 소프트웨어 구성요소들은 드라이브 메커니즘(drive mechanism)을 이용하여 메모리(211, 221)와는 별도의 컴퓨터에서 판독 가능한 기록 매체로부터 로딩될 수 있다. 이러한 별도의 컴퓨터에서 판독 가능한 기록 매체는 플로피 드라이브, 디스크, 테이프, DVD/CD-ROM 드라이브, 메모리 카드 등의 컴퓨터에서 판독 가능한 기록 매체를 포함할 수 있다. 다른 실시예에서 소프트웨어 구성요소들은 컴퓨터에서 판독 가능한 기록 매체가 아닌 통신 모듈(213, 223)을 통해 메모리(211, 221)에 로딩될 수도 있다. 예를 들어, 적어도 하나의 프로그램은 개발자들 또는 어플리케이션의 설치 파일을 배포하는 파일 배포 시스템(일례로 상술한 서버(160))이 네트워크(170)를 통해 제공하는 파일들에 의해 설치되는 프로그램(일례로 상술한 어플리케이션)에 기반하여 메모리(211, 221)에 로딩될 수 있다.
프로세서(212, 222)는 기본적인 산술, 로직 및 입출력 연산을 수행함으로써, 컴퓨터 프로그램의 명령을 처리하도록 구성될 수 있다. 명령은 메모리(211, 221) 또는 통신 모듈(213, 223)에 의해 프로세서(212, 222)로 제공될 수 있다. 예를 들어 프로세서(212, 222)는 메모리(211, 221)와 같은 기록 장치에 저장된 프로그램 코드에 따라 수신되는 명령을 실행하도록 구성될 수 있다.
통신 모듈(213, 223)은 네트워크(170)를 통해 전자 기기 1(110)과 서버(150)가 서로 통신하기 위한 기능을 제공할 수 있으며, 다른 전자 기기(일례로 전자 기기 2(120)) 또는 다른 서버(일례로 서버(160))와 통신하기 위한 기능을 제공할 수 있다. 일례로, 전자 기기 1(110)의 프로세서(212)가 메모리(211)와 같은 기록 장치에 저장된 프로그램 코드에 따라 생성한 요청(일례로 영상 통화 서비스를 위한 요청)이 통신 모듈(213)의 제어에 따라 네트워크(170)를 통해 서버(150)로 전달될 수 있다. 역으로, 서버(150)의 프로세서(222)의 제어에 따라 제공되는 제어 신호나 명령, 컨텐츠, 파일 등이 통신 모듈(223)과 네트워크(170)를 거쳐 전자 기기 1(110)의 통신 모듈(213)을 통해 전자 기기 1(110)로 수신될 수 있다. 예를 들어 통신 모듈(213)을 통해 수신된 서버(150)의 제어 신호나 명령 등은 프로세서(212)나 메모리(211)로 전달될 수 있고, 컨텐츠나 파일 등은 전자 기기 1(110)가 더 포함할 수 있는 저장 매체로 저장될 수 있다.
입출력 인터페이스(214, 224)는 입출력 장치(215)와의 인터페이스를 위한 수단일 수 있다. 예를 들어, 입력 장치는 키보드 또는 마우스 등의 장치를, 그리고 출력 장치는 어플리케이션의 통신 세션을 표시하기 위한 디스플레이와 같은 장치를 포함할 수 있다. 다른 예로 입출력 인터페이스(214)는 터치스크린과 같이 입력과 출력을 위한 기능이 하나로 통합된 장치와의 인터페이스를 위한 수단일 수도 있다. 보다 구체적인 예로, 전자 기기 1(110)의 프로세서(212)는 메모리(211)에 로딩된 컴퓨터 프로그램의 명령을 처리함에 있어서 서버(150)나 전자 기기 2(120)가 제공하는 데이터를 이용하여 구성되는 서비스 화면이나 컨텐츠가 입출력 인터페이스(214)를 통해 디스플레이에 표시될 수 있다.
또한, 다른 실시예들에서 전자 기기 1(110) 및 서버(150)는 도 2의 구성요소들보다 더 많은 구성요소들을 포함할 수도 있다. 그러나, 대부분의 종래기술적 구성요소들을 명확하게 도시할 필요성은 없다. 예를 들어, 전자 기기 1(110)은 상술한 입출력 장치(215) 중 적어도 일부를 포함하도록 구현되거나 또는 트랜시버(transceiver), GPS(Global Positioning System) 모듈, 카메라, 각종 센서, 데이터베이스 등과 같은 다른 구성요소들을 더 포함할 수도 있다. 보다 구체적인 예로, 전자 기기 1(110)이 스마트폰인 경우, 일반적으로 스마트폰이 포함하고 있는 가속도 센서나 자이로 센서, 카메라, 각종 물리적인 버튼, 터치패널을 이용한 버튼, 입출력 포트, 진동을 위한 진동기 등의 다양한 구성요소들이 전자 기기 1(110)에 더 포함되도록 구현될 수 있음을 알 수 있다.
도 3은 본 발명의 일실시예에 따른 서버가 포함하는 프로세서를 설명하기 위한 블록도이고, 도 4는 본 발명의 일실시예에 있어서, 서버가 수행하는 방법을 도시한 흐름도이다.
도 3에 도시된 바와 같이, 서버(150)에 포함된 프로세서(222)는 구성요소들로서 입력 제어부(310), 보호 파일 추가 제어부(320) 및 패키지 제공 제어부(330)를 포함할 수 있다. 이러한 프로세서(222) 및 프로세서(222)의 구성요소들은 도 4의 파일 보호 방법이 포함하는 단계들(410 내지 440)을 수행하도록 서버(150)를 제어할 수 있다. 이때, 프로세서(222) 및 프로세서(222)의 구성요소들은 메모리(221)가 포함하는 운영체제의 코드와 적어도 하나의 프로그램의 코드에 따른 명령(instruction)을 실행하도록 구현될 수 있다. 또한, 프로세서(222)의 구성요소들은 서버(150)에 저장된 프로그램 코드가 제공하는 제어 명령에 따라 프로세서(222)에 의해 수행되는 서로 다른 기능들(different functions)의 표현들일 수 있다. 예를 들어, 프로세서(222)가 상술한 제어 명령에 따라 패키지를 입력받기 위해 동작하는 기능적 표현으로서 입력 제어부(310)가 사용될 수 있다.
단계(410)에서 프로세서(222)는 파일 보호 방법을 위한 프로그램의 파일에 저장된 프로그램 코드를 메모리(221)에 로딩할 수 있다. 예를 들어, 서버(150)에서 프로그램이 실행되면, 프로세서(222)는 운영체제의 제어에 따라 프로그램의 파일로부터 프로그램 코드를 메모리(221)에 로딩하도록 서버(150)를 제어할 수 있다.
이때, 프로세서(222)가 포함하는 입력 제어부(310), 보호 파일 추가 제어부(320) 및 패키지 제공 제어부(330) 각각은 메모리(221)에 로딩된 프로그램 코드 중 대응하는 부분의 명령을 실행하여 이후 단계들(420 내지 440)을 실행하기 위한 프로세서(222)의 기능적 표현들일 수 있다.
단계(420)에서 입력 제어부(310)는 어플리케이션의 설치 및 구동을 위한 파일들이 포함된 패키지를 입력받도록 서버(150)를 제어할 수 있다. 예를 들어, 어플리케이션의 개발자는 전자 기기 2(120)를 이용하여 네트워크(170)를 통해 서버(150)에 접속할 수 있고, 서버(150)로 상기 패키지를 업로드할 수 있다. 이때, 입력 제어부(310)는 서버(150)에 상기 패키지를 수신하여 저장 및 등록 등의 과정을 거치도록 서버(150)를 제어할 수 있다. 다른 예로, 어플리케이션의 개발자는 패키지가 저장된 별도의 저장 매체를 제공하여 저장 매체를 통해 서버(150)로 패키지가 입력될 수도 있다.
단계(430)에서 보호 파일 추가 제어부(320)는 패키지에 파일 보호 모듈의 동작을 위한 보호 파일을 추가하도록 서버(150)를 제어할 수 있다. 예를 들어, 파일 보호 모듈은 전자 기기 1(110)에서 설치 및 구동되는 어플리케이션에 의해 제어되는 파일들 중 특정 파일에 대한 보호 기능을 제공하기 위해 어플리케이션의 패키지에 추가될 수 있다. 특정 파일에 대한 보호 기능에 대해서는 이후 더욱 자세히 설명한다.
단계(440)에서 패키지 제공 제어부(330)는 보호 파일이 추가된 패키지를 네트워크를 통해 제공하도록 서버(150)를 제어할 수 있다. 보호 파일이 추가된 패키지는 서버(150)에서 바로 전자 기기 1(110)로 제공될 수도 있고, 다른 서버(일례로 서버(160))을 통해 전자 기기 1(110)로 제공될 수도 있다. 예를 들어, 서버(160)는 다수의 어플리케이션들을 등록 및 관리하고, 어플리케이션들을 사용자들에게 배포하는 시스템일 수 있다. 이 경우, 서버(150)는 어플리케이션들을 위한 파일 보호 모듈을 제공하기 위한 시스템으로서 보호 파일이 추가된 패키지를 개발자를 통해 또는 직접 서버(160)로 전송 및 등록할 수 있다.
이후 도 5 및 도 6을 통해서는 패키지를 수신한 전자 기기 1(110)의 관점에서 파일 보호 방법에 대해 설명한다.
도 5는 본 발명의 일실시예에 따른 전자 기기의 프로세서가 포함할 수 있는 구성요소의 예를 도시한 도면이고, 도 6은 본 발명의 일실시예에 따른 전자 기기가 수행할 수 있는 방법의 예를 도시한 흐름도이다.
도 5에 도시된 바와 같이, 전자 기기 1(110)에 포함된 프로세서(212)는 구성요소들로서 어플리케이션 구동 제어부(510), 서비스 제공 제어부(520), 보호 명령 호출부(530) 및 파일 및 무결성 처리 제어부(540)를 포함할 수 있다. 이러한 프로세서(212) 및 프로세서(212)의 구성요소들은 도 6의 파일 보호 방법이 포함하는 단계들(610 내지 640)을 수행하도록 전자 기기 1(110)을 제어할 수 있다. 이때, 프로세서(212) 및 프로세서(212)의 구성요소들은 메모리(211)가 포함하는 운영체제의 코드와 적어도 하나의 프로그램의 코드(일례로, 서버(150)가 제공하는 파일 보호 모듈을 포함하는 보호 파일이 포함된 어플리케이션의 패키지)에 따른 명령(instruction)을 실행하도록 구현될 수 있다. 또한, 프로세서(212)의 구성요소들은 전자 기기 1(110)에 저장된 프로그램 코드가 제공하는 제어 명령에 따라 프로세서(212)에 의해 수행되는 서로 다른 기능들(different functions)의 표현들일 수 있다. 예를 들어, 프로세서(212)가 상술한 제어 명령에 따라 어플리케이션을 구동하기 위해 동작하는 기능적 표현으로서 어플리케이션 구동 제어부(510)가 사용될 수 있다.
단계(610)에서 어플리케이션 구동 제어부(510)는 설치된 어플리케이션을 구동하도록 전자 기기 1(110)을 제어할 수 있다. 예를 들어, 전자 기기 1(110)에서 어플리케이션이 실행되면, 어플리케이션 구동 제어부(510)는 운영체제의 제어에 따라 어플리케이션의 파일들로부터 프로그램 코드를 메모리(211)에 로딩하도록 전자 기기 1(110)을 제어할 수 있다.
단계(620)에서 서비스 제공 제어부(520)는 어플리케이션의 서비스 코드에 따라 서비스를 제공하도록 전자 기기 1(110)을 제어할 수 있다. 예를 들어, 서비스 제공 제어부(520)는 게임 어플리케이션의 경우, 온라인 모드나 오프라인 모드의 게임 서비스를 제공하도록 전자 기기 1(110)을 제어할 수 있다. 이때, 서비스 제공 제어부(520)는 온라인 모드인 경우 네트워크(170)를 통해 게임 서버(미도시)에 접속하여 게임 서비스를 위한 데이터를 제공받을 수 있다.
단계(630)에서 보호 명령 호출부(530)는 어플리케이션에 의해 제어되는 특정 파일에 대한 제어 명령이 실행되는 경우, 어플리케이션에 포함된 파일 보호 모듈이 포함하는 보호 명령을 호출할 수 있다. 어플리케이션에 의해 제어되는 파일들(예를 들어, 전자 기기 1(110)에 저장되어 서비스 코드의 파일에 대한 제어 명령에 따라 제어되는 파일들)은 전자 기기 1(110)의 사용자에 의해 조작될 가능성이 존재하기 때문에 해당 파일들에 저장된 데이터의 무결성이나 조작 탐지 등과 같은 보호 기능이 제공될 필요성이 있다. 따라서 본 실시예에서는 특정 파일에 대한 서비스 코드의 제어 명령을 통해 직접 파일을 제어할 수 없도록 파일 보호 모듈이 포함하는 보호 명령을 호출할 수 있다.
단계(640)에서 파일 및 무결성 처리 제어부(540)는 호출된 보호 명령을 통해 특정 파일에 대한 제어 및 특정 파일에 저장된 데이터에 대한 무결성 검증을 처리하도록 전자 기기 1(110)을 제어할 수 있다. 예를 들어, 파일 보호 모듈은 특정 파일에 대한 무결성 코드를 저장하도록 동작할 수 있으며, 보호 명령은 해당 파일에 대한 제어를 처리한 후, 파일에 대한 무결성 코드를 생성하여 저장된 무결성 코드와 비교하는 등의 과정을 통해 파일에 저장된 데이터에 대한 무결성 검증을 처리하여 파일의 조작을 보호할 수 있다. 예를 들어, 파일 및 무결성 처리 제어부(540)는 파일 보호 모듈의 제어에 따라, 생성된 무결성 코드가 저장된 무결성 코드와 동일하지 않은 경우, 서버(150)로 특정 파일의 조작에 대한 메시지를 전송하거나 어플리케이션이 구동되지 않도록 전자 기기 1(110)을 제어할 수 있다.
보호 명령의 호출을 처리하기 위한 일실시예로, SDK(Software Development Kit) 방식이 이용될 수 있다. 개발자에게는 파일 보호를 위한 SDK가 제공될 수 있고, 개발자는 SDK를 통해 특정 파일에 대한 제어 명령으로서 파일 보호 모듈이 포함하는 보호 명령을 호출하는 명령을 어플리케이션의 서비스 코드에 포함시킬 수 있다. 이 경우, 단계(620)에서와 같이 서비스 코드에 따라 서비스가 제공될 때, 서비스 코드에 포함된 특정 파일에 대한 제어 명령은 파일 보호 모듈이 포함하는 보호 명령을 호출하는 명령으로 대체되어 있기 때문에 자동적으로 파일 보호 모듈이 포함하는 보호 명령이 호출되게 된다. 만약, 전자 기기 1(110)의 사용자가 패키지에서 파일 보호 명령이 포함된 보호 파일을 제거한다면, 보호 명령이 호출되지 않기 때문에 어플리케이션은 정상적으로 동작하지 않게 된다.
보호 명령이 정상적으로 호출되면, 파일 및 무결성 처리 제어부(540)는 보호 명령에 따라 특정 파일에 대한 제어를 처리하고, 특정 파일에 대해 저장된 해쉬 값(상술한 무결성 코드)을 비교 및 갱신하여 무결성을 검증할 수 있게 된다.
보다 구체적인 예로, 특정 파일에 대한 제어 명령은 특정 파일에 대한 열기(open) 명령, 읽기(read) 명령 및 쓰기(write) 명령 중 적어도 하나를 포함할 수 있다. 이 경우 파일 및 무결성 처리 제어부(540)는 열기 명령 또는 읽기 명령에 의해 호출된 보호 명령에 따라 특정 파일에 대한 열기 또는 읽기를 처리하고 열기 또는 읽기가 처리된 특정 파일에 대한 해쉬 값을 생성하며, 생성된 해쉬 값을 파일 보호 모듈에 의해 저장된 해쉬 값과 비교하여 무결성을 검증할 수 있다. 파일의 열기나 읽기의 처리에서는 해당 파일이 변경되지 않기 때문에 파일에 대해 생성되는 해쉬 값이 이전에 저장된 해쉬 값과 동일해야 한다. 만약, 해쉬 값들이 서로 동일하지 않은 경우에는 해당 파일이 조작되었을 가능성이 존재하기 때문에 전자 기기 1(110)은 파일 보호 모듈의 제어에 따라 서버(150)에 파일의 조작을 알리기 위한 메시지를 전송하거나 또는 어플리케이션의 구동을 막는 등의 절차를 진행하여 어플리케이션의 파일을 보호할 수 있다.
또한, 파일 및 무결성 처리 제어부(540)는 쓰기 명령에 의해 호출된 보호 명령에 따라 특정 파일에 대한 쓰기 명령을 처리하고, 쓰기가 처리된 특정 파일에 대한 해쉬 값을 생성하며, 생성된 해쉬 값으로 저장된 해쉬 값을 갱신할 수 있다. 파일에 대한 쓰기가 처리되면 해당 파일은 변경되기 때문에 비교를 위해 저장된 해쉬 값 역시 변경된 파일에 대한 해쉬 값으로 변경되어야 하고, 파일 및 무결성 처리 제어부(540)는 쓰기 명령에 의해 호출된 보호 명령에 따라 파일에 대한 쓰기를 처리한 후, 해쉬 값을 갱신할 수 있다.
다른 실시예로, 별도의 SDK를 제공하지 않고도 제어 명령에 따라 보호 명령을 호출하는 것이 가능하다. 예를 들어, 파일 보호 모듈은 콜 스택(call stack) 또는 레지스터(register)를 통해 특정 파일에 대한 제어 명령의 실행 여부를 확인할 수 있다. 예를 들어, 보호 명령 호출부(530)는 단계(630)에서 파일 보호 모듈의 제어에 따라, 콜 스택 또는 레지스터를 통해 특정 파일에 대한 제어 명령의 실행 여부를 확인하고, 확인된 제어 명령의 실행을 보호 명령의 호출로 간주하여 보호 명령을 호출할 수 있다. 서비스 코드에서 실행된 함수와 관련하여 함수를 호출한 주소나 리턴 값이 제공될 주소 등과 관련된 정보가 콜 스택(call stack) 또는 레지스터(register)를 통해 관리될 수 있다. 보호 명령 호출부(530)는 파일 보호 모듈의 제어에 따라 콜 스택이나 레지스터를 확인하여 특정 파일에 대한 열기 명령, 읽기 명령 및/또는 쓰기 명령이 발생되었는지 확인할 수 있다. 이때, 보호 명령 호출부(530)는 확인된 열기 명령, 읽기 명령 및/또는 쓰기 명령을 보호 명령의 호출로 간주(콜 스택이나 레지스터에서 확인된 제어 명령을 후킹(hooking))하여 제어 명령 대신 보호 명령을 호출하여 실행되도록 할 수 있다.
또 다른 실시예로, 서비스 코드와 연계된 별도의 라이브러리 파일을 통해 특정 파일에 대한 제어 명령이 실행될 수도 있다. 예를 들어, 별도의 라이브러리 파일은 어플리케이션의 개발자나 서버(150)가 아닌 제3자에 의해 제공되는 파일일 수 있다. 따라서 개발자가 SDK를 통해 제어할 수 없다. 이때, 보호 명령 호출부(530)는 파일 보호 모듈의 제어에 따라 라이브러리 파일을 통한 제어 명령을 보호 명령의 호출로 간주(라이브러리 파일을 통한 제어 명령을 후킹)하여 보호 명령을 호출할 수 있다. 예를 들어, 보호 명령 호출부(530)는 라이브러리 파일을 통한 특정 파일에 대한 열기 명령, 읽기 명령 및/또는 쓰기 명령을 모두 보호 명령의 호출로 간주할 수 있다.
이처럼 본 발명의 실시예들에 따르면, 서버로 등록되는 어플리케이션의 파일들에 파일 보호 모듈을 추가하여 전자 기기로 전송하고, 전자 기기에서 구동된 어플리케이션의 서비스 코드에서 특정 파일에 대한 열기 명령, 읽기 명령 및/또는 쓰기 명령이 실행되는 경우에 파일 보호 모듈의 열기 명령, 읽기 명령 및/또는 쓰기 명령을 호출할 수 있도록 하며, 파일 보호 모듈의 열기 명령, 읽기 명령 및/또는 쓰기 명령이 해당 특정 파일에 대한 열기, 읽기 및/또는 쓰기를 처리함과 동시에 파일에 대한 무결성을 검증하도록 하여 주요 파일을 보호할 수 있다. 또한, 어플리케이션의 개발자가 파일의 무결성 보호를 위해 어플리케이션에 별도의 보호 코드를 추가하거나 서버에서 무결성을 보호하도록 별도의 기능을 추가할 필요 없이 어플리케이션 본래의 서비스 개발에만 집중하도록 할 수 있다.
이하에서는 파일 보호 방법에 대한 보다 구체적인 실시예들을 설명한다.
도 7은 본 발명의 일실시예에 있어서, 서버가 패키지에 보호 파일을 추가하여 전자 기기로 전송하는 과정의 예를 도시한 도면이다. 도 7은 개발자 단말(710), 파일 보호 시스템(720), 파일 배포 시스템(730), 사용자 단말(740), 서비스 시스템(750)을 각각 도시하고 있다. 개발자 단말(710)은 어플리케이션의 개발자가 이용하는 전자 기기일 수 있고, 사용자 단말(740)은 어플리케이션의 사용자가 이용하는 전자 기기일 수 있다. 파일 보호 시스템(720)은 상술한 서버(150)에 대응할 수 있으며, 파일 배포 시스템(730)과 서비스 시스템(750) 역시 각각 개별 서버들일 수 있다. 다른 실시예에서 파일 보호 시스템(720)과 파일 배포 시스템(730)은 동일한 주체에 의해 운영되는 시스템들이거나 또는 하나의 시스템일 수도 있다. 또한, 서비스 시스템(750)은 개발자에 의해 운영되는 서버 시스템일 수도 있고, 개발자와는 다른 제3자에 의해 개발자가 제공하는 서버측 프로그램에 기반하여 동작하는 서버 시스템일 수도 있다. 예를 들어, 서비스 시스템(750)은 게임 어플리케이션을 통해 온라인 게임 서비스를 제공하는 게임 서버일 수 있다.
1. 패키지 등록 과정은 개발자 단말(710)이 개발자에 의해 개발한 어플리케이션의 패키지를 파일 보호 시스템(720)에 등록하는 과정일 수 있다. 예를 들어, 개발자 단말(710)과 파일 보호 시스템(720)간의 네트워크(일례로 도 1의 네트워크(170)를 통한 데이터 통신을 통해 패키지가 개발자 단말(710)에서 파일 보호 시스템(720)으로 전송될 수 있다. 이후, 이러한 네트워크를 통한 데이터 통신에 대한 설명은 생략한다.
2. 보호 파일 추가 과정은 파일 보호 시스템(720)이 등록된 어플리케이션의 패키지에 파일 보호 모듈이 포함된 보호 파일을 추가하는 과정일 수 있다.
3. 패키지 등록 과정은 파일 보호 시스템(720)이 보호 파일이 추가된 패키지를 파일 배포 시스템(730)에 등록하는 과정일 수 있다. 다른 실시예에서, 파일 보호 시스템(720)은 보호 파일이 추가된 패키지를 개발자 단말(710)로 제공하고, 개발자 단말(710)이 직접 파일 배포 시스템(730)에 보호 파일이 추가된 패키지를 등록할 수도 있다.
4. 패키지 배포 과정은 파일 배포 시스템(730)이 사용자 단말(740)의 요청에 따라 보호 파일이 추가된 패키지를 사용자 단말(740)로 배포하는 과정일 수 있다. 사용자 단말(740)에서는 보호 파일이 추가된 패키지를 통해 어플리케이션이 사용자 단말(740)에 설치될 수 있다.
5. 서비스 통신 과정은 사용자 단말(740)이 구동된 어플리케이션에 기반하여 서비스 시스템(750)과 통신하여 서비스를 제공받는 과정일 수 있다.
도 8은 본 발명의 일실시예에 있어서, SDK 방식에 따라 파일을 보호하는 방법의 예를 도시한 도면이다. 도 8은 게임 어플리케이션 패키지(810)의 예로서, 게임 어플리케이션 패키지(810)이 게임 코드(811), 파일 보호 모듈(812) 및 보호 파일(813)을 포함하는 예를 나타내고 있다. 도 8은 게임 코드에서 보호 파일(813)을 열기 위한 열기 명령 "FILE_OPEN_1"이 실행됨에 따라 자동으로 파일 보호 모듈(812)의 보호 명령 "FILE_OPEN_2"이 호출되는 예를 나타내고 있다. 이미 설명한 바와 같이 게임 코드의 보호 파일(813)에 대한 제어 명령들(FILE_OPEN_1, FILE_READ_1, FILE_WRITE_1)은 개발자에게 제공된 SDK에 기반하여 파일 보호 모듈(812)의 보호 명령들(FILE_OPEN_2, FILE_READ_2, FILE_WRITE_2)을 호출하도록 구현될 수 있다. 호출된 보호 명령 "FILE_OPEN_2"에 따라 보호 파일(813)에 대한 열기 명령이 처리될 수 있으며, 보호 파일(813)에 대한 해쉬 값이 생성될 수 있다. 생성된 해쉬 값은 파일 보호 모듈(812)에 의해 관리되는 특정 저장 영역인 "Property"(820)에 암호화되어 저장된 해쉬 값과 비교되어 보호 파일(813)에 저장된 데이터의 무결성 검증에 활용될 수 있다.
이와 유사하게 게임 코드에서 보호 파일(813)에 대한 읽기 명령 "FILE_READ_1"이나 쓰기 명령 "FILE_WRITE_1"가 실행되는 경우에도 자동적으로 파일 보호 모듈(812)의 보호 명령 "FILE_READ_2"나 "FILE_WRITE_2"가 호출될 수 있다. 보호 명령 "FILE_WRITE_2"에 따라 보호 파일(813)이 변경되는 경우에는 변경된 보호 파일(813)에 대해 생성된 해쉬 값으로 "Property"(820)에 암호화되어 저장된 해쉬 값을 갱신할 수 있다.
도 8의 실시예에서는 하나의 보호 파일(813)에 대해 설명하였으나, 다수의 파일들이 보호 파일들로 설정될 수도 있고, 게임 코드가 제어하고자 하는 모든 파일들이 보호 파일들로 설정될 수도 있다. 해쉬 값은 개별 파일들마다 생성되어 관리될 수 있다. 또한, 특정 저장 영역인 "Property"(820)는 파일 보호 모듈(812)에 포함되는 영역일 수도 있고, 메모리(일례로, 도 2의 전자 기기 1(110)의 메모리(211))상의 별도의 영역일 수도 있다.
도 9는 본 발명의 일실시예에 있어서, 후킹 모드에 따라 파일을 보호하는 방법의 예를 도시한 도면이다. 도 9는 게임 어플리케이션 패키지(900)의 예로서, 게임 어플리케이션 패키지(900)이 게임 코드(910), 파일 보호 모듈(920) 및 보호 파일(930)을 포함하는 예를 나타내고 있다. 본 실시예에서는 별도의 SDK를 제공하지 않는다. 따라서 게임 코드(910)의 열기 명령 "FILE_OPEN_1"은 보호 파일(930)에 대한 열기를 처리하고자 할 수 있다. 이때, 파일 보호 모듈(920)은 게임 코드의 열기 명령 "FILE_OPEN_1"을 후킹하여 파일 보호 모듈(920)의 보호 명령 "FILE_OPEN_2"을 호출할 수 있다. 이 경우, 파일 보호 모듈(920)의 보호 명령 "FILE_OPEN_2"은 보호 파일(930)에 대한 열기를 처리한 후, 도 8에서와 같이 보호 파일(930)의 해쉬 값을 생성하여 미리 저장된 해쉬 값과 비교함으로써 보호 파일(930)에 저장된 데이터에 대한 무결성을 검증할 수 있다.
이와 유사하게, 파일 보호 모듈(920)은 게임 코드(910)의 읽기 명령 "FILE_ READ_1"이나 쓰기 명령 "FILE_WRITE_1" 역시 후킹하여 파일 보호 모듈(920)의 보호 명령 "FILE_READ_2"나 "FILE_WRITE_2"를 호출할 수 있다. 각각의 경우에 대해서도 보호 파일(930)에 대한 읽기와 쓰기가 처리된 후 해쉬 값의 비교 또는 갱신이 처리될 수 있다. 이러한 명령에 대한 후킹은 이미 설명한 바와 같이 콜 스택(call stack) 또는 레지스터(register)를 통해 보호 파일(930)에 대한 제어 명령(열기, 읽기, 쓰기)의 실행 여부를 확인하여 처리될 수 있다.
또한, 게임 코드가 아닌 라이브러리(940)에서도 보호 파일(930)에 대한 열기 명령 "FILE_OPEN_3", 읽기 명령 "FILE_READ_3" 및/또는 쓰기 명령 "FILE_OPEN_3"이 발생할 수 있다. 파일 보호 모듈(920)은 라이브러리(940)에서의 명령 역시 후킹하여 파일 보호 모듈(920)의 보호 명령들을 호출하여 보호 파일(930)에 대한 열기, 읽기 및/또는 쓰기를 대신 처리할 수 있다. 물론, 해쉬 값의 비교와 갱신을 통한 무결성 검증 역시 파일 보호 모듈(920)에 의해 처리될 수 있다. 이때, 명령에 대한 후킹은 라이브러리(940)에서 발생하는 보호 파일(930)에 대한 모든 열기 명령, 읽기 명령, 쓰기 명령을 후킹하여 처리될 수 있다.
이상에서 설명된 시스템 또는 장치는 하드웨어 구성요소, 소프트웨어 구성요소 또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 어플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (18)

  1. 컴퓨터로 구현되는 서버의 파일 보호 방법에 있어서,
    어플리케이션의 설치 및 구동을 위한 파일들이 포함된 패키지를 입력받는 단계;
    상기 패키지에 파일 보호 모듈의 동작을 위한 보호 파일을 추가하는 단계; 및
    상기 보호 파일이 추가된 패키지를 네트워크를 통해 제공하는 단계
    를 포함하고,
    상기 보호 파일이 추가된 패키지를 통해 상기 어플리케이션이 설치 및 구동된 전자 기기에서 상기 어플리케이션의 서비스 코드를 통해 상기 어플리케이션에 의해 제어되는 특정 파일에 대한 제어 명령이 실행되는 경우, 상기 제어 명령을 상기 파일 보호 모듈이 포함하고 상기 제어 명령에 대응하는 보호 명령의 호출로 간주하여 상기 보호 명령이 호출되고, 상기 호출된 보호 명령을 통해 상기 특정 파일에 대한 상기 제어 명령에 대응하는 제어 및 상기 특정 파일에 저장된 데이터에 대한 무결성 검증이 처리되는 것을 특징으로 하는 파일 보호 방법.
  2. 제1항에 있어서,
    상기 특정 파일에 대한 제어 명령은, 상기 어플리케이션의 개발자에게 제공된 SDK(Software Development Kit)를 통해 상기 파일 보호 모듈이 포함하는 보호 명령을 호출하도록 상기 어플리케이션의 서비스 코드에 포함되는 것을 특징으로 하는 파일 보호 방법.
  3. 제1항에 있어서,
    상기 파일 보호 모듈이 포함하는 보호 명령은, 상기 특정 파일에 대한 제어 명령이 실행됨에 따라 호출되어 상기 특정 파일에 대한 제어를 처리하고, 상기 특정 파일에 대해 저장된 무결성 코드를 비교 및 갱신하여 상기 무결성을 검증하는 것을 특징으로 하는 파일 보호 방법.
  4. 제1항에 있어서,
    상기 특정 파일에 대한 제어 명령은, 상기 특정 파일에 대한 열기(open) 명령, 읽기(read) 명령 및 쓰기(write) 명령 중 적어도 하나를 포함하고,
    상기 열기 명령 또는 상기 읽기 명령에 의해 호출된 보호 명령은, 상기 특정 파일에 대한 열기 또는 읽기를 처리하고 상기 열기 또는 읽기가 처리된 특정 파일에 대한 무결성 코드를 생성하며, 상기 생성된 무결성 코드를 상기 파일 보호 모듈에 의해 저장된 무결성 코드와 비교하여 상기 무결성을 검증하며,
    상기 쓰기 명령에 의해 호출된 보호 명령은, 상기 특정 파일에 대한 쓰기 명령을 처리하고, 상기 쓰기가 처리된 특정 파일에 대한 무결성 코드를 생성하며, 생성된 무결성 코드로 상기 저장된 무결성 코드를 갱신하는 것을 특징으로 하는 파일 보호 방법.
  5. 제1항에 있어서,
    상기 파일 보호 모듈은, 콜 스택(call stack) 또는 레지스터(register)를 통해 상기 특정 파일에 대한 제어 명령의 실행 여부를 확인하고,
    상기 확인된 제어 명령의 실행이 상기 보호 명령의 호출로 간주되어 상기 보호 명령이 호출되고, 상기 호출된 보호 명령을 통해 상기 특정 파일에 대한 상기 제어 명령에 대응하는 제어 및 상기 특정 파일에 저장된 데이터에 대한 무결성 검증이 처리되는 것을 특징으로 하는 파일 보호 방법.
  6. 제1항에 있어서,
    상기 어플리케이션이 포함하는 라이브러리 파일을 통해 호출되는 상기 특정 파일에 대한 제어 명령이 상기 보호 명령의 호출로 간주되어 상기 보호 명령이 호출되어 상기 특정 파일에 대한 상기 제어 명령에 대응하는 제어 및 상기 특정 파일에 저장된 데이터에 대한 무결성 검증이 처리되는 것을 특징으로 하는 파일 보호 방법.
  7. 컴퓨터로 구현되는 전자 기기와 결합되어 파일 보호 방법을 실행시키기 위해 매체에 저장된 컴퓨터 프로그램에 있어서,
    상기 파일 보호 방법은,
    상기 전자 기기에 설치된 어플리케이션을 구동하는 단계;
    상기 어플리케이션의 서비스 코드에 따라 서비스를 제공하는 단계;
    상기 어플리케이션에 의해 제어되는 특정 파일에 대한 제어 명령이 실행되는 경우, 상기 제어 명령을 상기 어플리케이션에 포함된 파일 보호 모듈이 포함하고 상기 제어 명령에 대응하는 보호 명령의 호출로 간주하여 상기 보호 명령을 호출하는 단계;
    상기 호출된 보호 명령을 통해 상기 특정 파일에 대한 상기 제어 명령에 대응하는 제어 및 상기 특정 파일에 저장된 데이터에 대한 무결성 검증을 처리하는 단계
    를 포함하고,
    상기 파일 보호 모듈은, 서버에서 어플리케이션의 설치 및 구동을 위한 파일들이 포함된 패키지에 추가되어 제공되는 것을 특징으로 하는 컴퓨터 프로그램.
  8. 제7항에 있어서,
    상기 특정 파일에 대한 제어 명령은, 상기 어플리케이션의 개발자에게 제공된 SDK(Software Development Kit)를 통해 상기 파일 보호 모듈이 포함하는 보호 명령을 호출하도록 상기 어플리케이션의 서비스 코드에 포함되는 것을 특징으로 하는 컴퓨터 프로그램.
  9. 제7항에 있어서,
    상기 특정 파일에 대한 제어 및 상기 특정 파일에 저장된 데이터에 대한 무결성 검증을 처리하는 단계는,
    상기 특정 파일에 대한 제어를 처리하고, 상기 특정 파일에 대해 저장된 무결성 코드의 비교 및 갱신을 통해 상기 무결성을 검증하는 것을 특징으로 하는 컴퓨터 프로그램.
  10. 제7항에 있어서,
    상기 특정 파일에 대한 제어 명령은, 상기 특정 파일에 대한 열기(open) 명령, 읽기(read) 명령 및 쓰기(write) 명령 중 적어도 하나를 포함하고,
    상기 특정 파일에 대한 제어 및 상기 특정 파일에 저장된 데이터에 대한 무결성 검증을 처리하는 단계는,
    상기 열기 명령 또는 상기 읽기 명령에 의해 호출된 보호 명령을 통해 상기 특정 파일에 대한 열기 또는 읽기를 처리하고 상기 열기 또는 읽기가 처리된 특정 파일에 대한 무결성 코드를 생성하여 상기 파일 보호 모듈에 의해 저장된 무결성 코드와 비교하여 상기 무결성을 검증하며, 상기 쓰기 명령에 의해 호출된 보호 명령을 통해 상기 특정 파일에 대한 쓰기 명령을 처리하고, 상기 쓰기가 처리된 특정 파일에 대한 무결성 코드를 생성하여 상기 저장된 무결성 코드를 갱신하는 것을 특징으로 하는 컴퓨터 프로그램.
  11. 제7항에 있어서,
    상기 어플리케이션에 포함된 파일 보호 모듈이 포함하는 보호 명령을 호출하는 단계는,
    상기 파일 보호 모듈의 제어에 따라, 콜 스택(call stack) 또는 레지스터(register)를 통해 상기 특정 파일에 대한 제어 명령의 실행 여부를 확인하고, 상기 확인된 제어 명령의 실행을 상기 보호 명령의 호출로 간주하여 상기 보호 명령을 호출하는 것을 특징으로 하는 컴퓨터 프로그램.
  12. 제7항에 있어서,
    상기 어플리케이션에 포함된 파일 보호 모듈이 포함하는 보호 명령을 호출하는 단계는,
    상기 파일 보호 모듈의 제어에 따라 상기 어플리케이션이 포함하는 라이브러리 파일을 통해 호출되는 상기 특정 파일에 대한 제어 명령을 상기 보호 명령의 호출로 간주하여 상기 보호 명령을 호출하는 것을 특징으로 하는 컴퓨터 프로그램.
  13. 컴퓨터로 구현되는 전자 기기의 파일 보호 방법에 있어서,
    상기 전자 기기에 설치된 어플리케이션을 구동하는 단계;
    상기 어플리케이션의 서비스 코드에 따라 서비스를 제공하는 단계;
    상기 어플리케이션에 의해 제어되는 특정 파일에 대한 제어 명령이 실행되는 경우, 상기 제어 명령을 상기 어플리케이션에 포함된 파일 보호 모듈이 포함하고 상기 제어 명령에 대응하는 보호 명령을 호출하는 단계;
    상기 호출된 보호 명령을 통해 상기 특정 파일에 대한 상기 제어 명령에 대응하는 제어 및 상기 특정 파일에 저장된 데이터에 대한 무결성 검증을 처리하는 단계
    를 포함하고,
    상기 파일 보호 모듈은, 서버에서 어플리케이션의 설치 및 구동을 위한 파일들이 포함된 패키지에 추가되어 제공되는 것을 특징으로 하는 파일 보호 방법.
  14. 제13항에 있어서,
    상기 특정 파일에 대한 제어 명령은, 상기 어플리케이션의 개발자에게 제공된 SDK(Software Development Kit)를 통해 상기 파일 보호 모듈이 포함하는 보호 명령을 호출하도록 상기 어플리케이션의 서비스 코드에 포함되는 것을 특징으로 하는 파일 보호 방법.
  15. 제13항에 있어서,
    상기 특정 파일에 대한 제어 및 상기 특정 파일에 저장된 데이터에 대한 무결성 검증을 처리하는 단계는,
    상기 특정 파일에 대한 제어를 처리하고, 상기 특정 파일에 대해 저장된 무결성 코드의 비교 및 갱신을 통해 상기 무결성을 검증하는 것을 특징으로 하는 파일 보호 방법.
  16. 제13항에 있어서,
    상기 특정 파일에 대한 제어 명령은, 상기 특정 파일에 대한 열기(open) 명령, 읽기(read) 명령 및 쓰기(write) 명령 중 적어도 하나를 포함하고,
    상기 특정 파일에 대한 제어 및 상기 특정 파일에 저장된 데이터에 대한 무결성 검증을 처리하는 단계는,
    상기 열기 명령 또는 상기 읽기 명령에 의해 호출된 보호 명령을 통해 상기 특정 파일에 대한 열기 또는 읽기를 처리하고 상기 열기 또는 읽기가 처리된 특정 파일에 대한 무결성 코드를 생성하여 상기 파일 보호 모듈에 의해 저장된 무결성 코드와 비교하여 상기 무결성을 검증하며, 상기 쓰기 명령에 의해 호출된 보호 명령을 통해 상기 특정 파일에 대한 쓰기 명령을 처리하고, 상기 쓰기가 처리된 특정 파일에 대한 무결성 코드를 생성하여 상기 저장된 무결성 코드를 갱신하는 것을 특징으로 하는 파일 보호 방법.
  17. 제13항에 있어서,
    상기 어플리케이션에 포함된 파일 보호 모듈이 포함하는 보호 명령을 호출하는 단계는,
    상기 파일 보호 모듈의 제어에 따라, 콜 스택(call stack) 또는 레지스터(register)를 통해 상기 특정 파일에 대한 제어 명령의 실행 여부를 확인하고, 상기 확인된 제어 명령의 실행을 상기 보호 명령의 호출로 간주하여 상기 보호 명령을 호출하는 것을 특징으로 하는 파일 보호 방법.
  18. 제13항에 있어서,
    상기 어플리케이션에 포함된 파일 보호 모듈이 포함하는 보호 명령을 호출하는 단계는,
    상기 파일 보호 모듈의 제어에 따라 상기 어플리케이션이 포함하는 라이브러리 파일을 통해 호출되는 상기 특정 파일에 대한 제어 명령을 상기 보호 명령의 호출로 간주하여 상기 보호 명령을 호출하는 것을 특징으로 하는 파일 보호 방법.
KR1020170181080A 2017-12-27 2017-12-27 파일 보호 방법 및 시스템 KR20180004065A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170181080A KR20180004065A (ko) 2017-12-27 2017-12-27 파일 보호 방법 및 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170181080A KR20180004065A (ko) 2017-12-27 2017-12-27 파일 보호 방법 및 시스템

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020160015908A Division KR101814897B1 (ko) 2016-02-11 2016-02-11 파일 보호 방법 및 시스템

Publications (1)

Publication Number Publication Date
KR20180004065A true KR20180004065A (ko) 2018-01-10

Family

ID=60998880

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170181080A KR20180004065A (ko) 2017-12-27 2017-12-27 파일 보호 방법 및 시스템

Country Status (1)

Country Link
KR (1) KR20180004065A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116975002A (zh) * 2023-09-22 2023-10-31 麒麟软件有限公司 一种在国产Linux操作系统下保护打开文件的方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116975002A (zh) * 2023-09-22 2023-10-31 麒麟软件有限公司 一种在国产Linux操作系统下保护打开文件的方法
CN116975002B (zh) * 2023-09-22 2023-12-26 麒麟软件有限公司 一种在国产Linux操作系统下保护打开文件的方法

Similar Documents

Publication Publication Date Title
KR101854975B1 (ko) 패키지 파일에 대한 기능 확장 방법 및 시스템
KR101814897B1 (ko) 파일 보호 방법 및 시스템
KR101745808B1 (ko) 서버측 로직의 모듈화를 위한 모듈 처리 방법 및 시스템
US20200356358A1 (en) Systems and methods for incrementally and dynamically updating firmware
KR101740133B1 (ko) 어플리케이션의 코드를 보호하기 위한 시스템 및 방법
KR101832594B1 (ko) 중간 언어 파일의 로딩 속도 개선을 위한 방법 및 시스템
KR101800127B1 (ko) 웹―앱 연동 간편 로그인을 위한 방법 및 시스템
KR101823226B1 (ko) 코드 보호 방법 및 시스템
KR101730256B1 (ko) 오버레이 제어 방법 및 시스템
KR20180004065A (ko) 파일 보호 방법 및 시스템
KR101992698B1 (ko) 치팅 어플리케이션 식별 방법 및 시스템
KR20190134887A (ko) 복수의 IoT 디바이스의 통합 제어를 위한 복합 서비스 인터페이스 방법 및 시스템
JP2017220236A (ja) クライアント改ざん判断システムおよび方法
KR101817464B1 (ko) 오버레이 제어 방법 및 시스템
KR101845155B1 (ko) 어플리케이션 패키지를 제공하는 방법 및 시스템, 그리고 어플리케이션을 실행하는 방법 및 시스템
KR101771348B1 (ko) 패키지 파일에 대한 패킹 방법 및 시스템
US20220215381A1 (en) Methods, systems, and non-transitory computer-readable record media for prompt transfer of cryptocurrency
KR102677540B1 (ko) 네이티브 라이브러리를 보호하는 방법 및 시스템
KR102556999B1 (ko) 단말기 원격조작에 기반한 테스트 자동화 방법 및 시스템
KR20230055480A (ko) 주차 안심번호 서비스 제공 방법 및 시스템
US10366398B2 (en) Methods and systems for providing digital content based on a social relationship
WO2020226189A1 (ko) 메모리상에서 실행 가능 이미지를 적재하는 방법 및 시스템
KR20230018649A (ko) 컨텐츠 접근 제어 방법 및 시스템
KR20170041536A (ko) 메모리 해킹 탐지 방법 및 시스템

Legal Events

Date Code Title Description
A107 Divisional application of patent