KR20110013175A - Verification system and verification method of code block for separating execution based contents - Google Patents

Verification system and verification method of code block for separating execution based contents Download PDF

Info

Publication number
KR20110013175A
KR20110013175A KR1020100024136A KR20100024136A KR20110013175A KR 20110013175 A KR20110013175 A KR 20110013175A KR 1020100024136 A KR1020100024136 A KR 1020100024136A KR 20100024136 A KR20100024136 A KR 20100024136A KR 20110013175 A KR20110013175 A KR 20110013175A
Authority
KR
South Korea
Prior art keywords
content
code block
verification
target code
execution target
Prior art date
Application number
KR1020100024136A
Other languages
Korean (ko)
Other versions
KR101412465B1 (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 에스케이텔레콤 주식회사
Publication of KR20110013175A publication Critical patent/KR20110013175A/en
Application granted granted Critical
Publication of KR101412465B1 publication Critical patent/KR101412465B1/en

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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/258Client or end-user data management, e.g. managing client capabilities, user preferences or demographics, processing of multiple end-users preferences to derive collaborative data
    • H04N21/25808Management of client data
    • H04N21/25816Management of client data involving client authentication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/45Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
    • H04N21/462Content or additional data management, e.g. creating a master electronic program guide from data received from the Internet and a Head-end, controlling the complexity of a video stream by scaling the resolution or bit-rate based on the client capabilities
    • H04N21/4627Rights management associated to the content
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/8166Monomedia components thereof involving executable data, e.g. software
    • H04N21/8193Monomedia components thereof involving executable data, e.g. software dedicated tools, e.g. video decoder software or IPMP tool
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/835Generation of protective data, e.g. certificates
    • H04N21/8355Generation of protective data, e.g. certificates involving usage data, e.g. number of copies or viewings allowed

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Databases & Information Systems (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)
  • Storage Device Security (AREA)

Abstract

PURPOSE: A method for eliminating a main cause of performance deterioration is provided to offer a stable execution environment by inspecting process environment and offering the inspection result. CONSTITUTION: A contents providing terminal(10) transmits information of the separation operational objection code block about the registered contents to the contents registration server(20). A contents registration server checks a validity of code blocks by executing the code blocks under a test environment corresponding to the execution environment of the storage unit. If the block are effective, the contents registration server changes the separation operational objection code block into the code block for the storage unit.

Description

분리 실행 기반의 컨텐츠용 코드 블록의 검증 시스템 및 방법{Verification system and verification method of code block for separating execution based contents}Verification system and verification method of code block for separating execution based contents}

본 발명은 컨텐츠의 복제 방지 기술에 관한 것으로, 더욱 상세하게는 컨텐츠에 대한 호스트 단말(host terminal)과 저장장치 간의 분리 실행 시 안정적인 실행 환경을 제공할 수 있는 분리 실행 대상 코드 블록을 추출하기 위해 추출된 분리 실행 대상 코드 블록을 검증하고 그 검증 결과를 피드백(feedback)하는 분리 실행 기반의 컨텐츠용 코드 블록의 검증 시스템 및 방법에 관한 것이다.The present invention relates to a copy protection technology of content, and more particularly, to extract a separated execution target code block that can provide a stable execution environment when executing a separation between a host terminal and a storage device for the content. The present invention relates to a system and method for verifying a code block for content based on a separate execution based on verifying a separated block of execution target code and feeding back a result of the verification.

일반적으로 호스트 단말은 운영체제 위에 복수의 컨텐츠가 설치된다. 컨텐츠는 디지털 형태로 저장되고 유통되는 디지털 저작물로서, 소프트웨어, 응용프로그램, 멀티미디어 데이터 등을 포함한다. 예컨대 사용자는 호스트 단말에 설치된 각종 컨텐츠를 이용하여 문서편집, 영상편집, 게임 등을 수행할 수 있다.In general, a plurality of contents are installed in a host terminal on an operating system. Content is a digital work that is stored and distributed in digital form and includes software, applications, multimedia data, and the like. For example, the user may perform document editing, image editing, games, etc. using various contents installed in the host terminal.

이와 같은 컨텐츠는, 무료로 사용할 수 있는 컨텐츠도 있지만, 온오프라인에서 유료로 판매되고 있다. 사용자는 필요한 컨텐츠를 구매하고, 구매한 컨텐츠를 호스트 단말에 설치함으로써 사용하게 된다. 컨텐츠는 인증번호를 통한 인증을 통과하게 되면, 호스트 단말에 설치된다. 통상적으로 인증번호는 구매한 컨텐츠와 함께 제공된다.Although such content can be used free of charge, it is sold for a fee online or offline. The user purchases the necessary content and installs the purchased content in the host terminal. When the content passes the authentication through the authentication number, it is installed in the host terminal. Typically, the authentication number is provided with the purchased content.

이와 같은 인증번호를 이용한 인증 방식의 컨텐츠는 해킹에 쉽게 노출되는 문제점을 안고 있다. 즉 해당 프로그램의 인증번호가 해킹되거나, 인증을 우회할 수 있는 코드가 해당 컨텐츠에 추가될 경우, 해당 컨텐츠를 구매하지 않은 사람들도 복제된 컨텐츠를 호스트 단말에 설치하여 무단으로 사용할 수 있다.Content of the authentication method using the authentication number has a problem that is easily exposed to hacking. That is, if the authentication number of the program is hacked or a code that bypasses authentication is added to the content, those who have not purchased the content can install the duplicated content on the host terminal and use it without permission.

이와 같은 컨텐츠의 무단 사용으로 인한 컨텐츠 제공자(content provider; CP)의 피해가 증가하고 있는 실정이다. 컨텐츠의 무단 사용은 컨텐츠 제공자의 컨텐츠의 개발 의욕을 떨어뜨리는 요인으로 작용하고 있다.The damage of the content provider (CP) due to the unauthorized use of such content is increasing. Unauthorized use of the content acts as a factor that lowers the motivation of the content provider to develop the content.

또한 컨텐츠 제공자는 개발한 컨텐츠의 무단 복제를 억제하기 위한 보안 방법에도 주의를 기울어야 하기 때문에, 컨텐츠 개발에 많은 비용이 소요되어 컨텐츠 제공자에게 부담으로 작용하고 있는 실정이다.In addition, the content provider has to pay attention to a security method for suppressing unauthorized copying of the developed content, which is a burden on the content provider due to the high cost of developing the content.

따라서 본 발명의 목적은 컨텐츠의 복제를 억제하기 위해서, 컨텐츠에 대한 호스트 단말과 저장장치 간의 분리 실행 시 안정적인 실행 환경을 제공할 수 있는 분리 실행 대상 코드 블록을 추출하기 위한 분리 실행 기반의 컨텐츠용 코드 블록의 검증 시스템 및 방법을 제공하기 위한 것이다.Accordingly, an object of the present invention is to separate content execution-based code for extracting a separate execution target code block that can provide a stable execution environment in the execution of separation between the host terminal and the storage device for the content in order to suppress the copying of the content. To provide a verification system and method of the block.

본 발명의 다른 목적은 등록할 컨텐츠의 프로파일링 및 분석을 통해 추출한 분리 실행 대상 코드 블록에 대해 검증하고, 프로파일링 및 분석을 담당하는 부분으로 피드백하여 분리 실행 시 발생될 수 있는 성능 및 안정성 저하 요인을 사전에 예방할 수 있는 분리 실행 기반의 컨텐츠용 코드 블록의 검증 시스템 및 방법을 제공하기 위한 것이다.Another object of the present invention is to verify the separated execution target code block extracted through profiling and analysis of the content to be registered, and feed back to the part in charge of profiling and analysis to reduce the performance and stability factors that may occur when executing the separation. It is to provide a system and method for verifying a block of code for content based on a separate execution that can be prevented in advance.

상기 목적을 달성하기 위하여, 본 발명은 컨텐츠 제공 단말 및 컨텐츠 등록 서버를 포함하는 분리 실행 기반의 컨텐츠용 코드 블록의 검증 시스템을 제공한다. 컨텐츠 제공 단말은 등록할 컨텐츠에 대한 분리 실행 대상 코드 블록의 정보를 컨텐츠 등록 서버로 전송한다. 그리고 컨텐츠 등록 서버는 컨텐츠 제공 단말로부터 수신한 분리 실행 대상 코드 블록의 정보를 이용하여 분리 실행 대상 코드 블록을 실제 저장장치의 실행 환경에 대응하는 테스트 환경에서 실행하여 유효성을 검증하고, 검증 결과 유효한 경우 분리 실행 대상 코드 블록을 저장장치용 코드 블록으로 변환한다.In order to achieve the above object, the present invention provides a system for verifying a code block for content execution based on a separation execution including a content providing terminal and a content registration server. The content providing terminal transmits the information of the separation execution target code block for the content to be registered to the content registration server. The content registration server validates the separated execution target code block by using the information on the separated execution target code block received from the content providing terminal in a test environment corresponding to the execution environment of the actual storage device and validates the result. Converts a block of code to be separated into a block of code for storage.

본 발명은 또한, 송수신부 및 서버제어부를 포함하는 분리 실행 기반의 컨텐츠 등록 서버를 제공한다. 송수신부는 컨텐츠 제공 단말과 통신을 수행한다. 그리고 서버제어부는 송수신부를 통하여 컨텐츠 제공 단말로부터 등록할 컨텐츠에 대한 분리 실행 대상 코드 블록의 정보를 수신하고, 분리 실행 대상 코드 블록을 실제 저장장치의 실행 환경에 대응하는 테스트 환경에서 실행하여 유효성을 검증하고, 검증 결과 유효하지 않은 분리 실행 대상 코드 블록이 검출된 경우 컨텐츠 제공 단말로 검증 실패 결과를 피드백하고, 검증 결과 유효한 경우 분리 실행 대상 코드 블록을 저장장치용 코드 블록으로 변환한다.The present invention also provides a separate execution based content registration server including a transceiver and a server controller. The transceiver performs communication with the content providing terminal. In addition, the server controller receives the information of the separation execution target code block for the content to be registered from the content providing terminal through the transmission and reception unit, and executes the separation execution target code block in a test environment corresponding to the execution environment of the actual storage device to verify validity. If an invalid separation execution target code block is detected as a result of the verification, the verification failure feedback is fed back to the content providing terminal, and if the verification result is valid, the separation execution target code block is converted into a storage device code block.

본 발명에 따른 분리 실행 기반의 컨텐츠 등록 서버는 서버제어부의 제어에 따라 변환된 저장장치용 코드 블록을 저장하는 데이터베이스부를 더 포함할 수 있다.The content execution server based on the separation execution according to the present invention may further include a database unit for storing the code block for the storage device converted under the control of the server controller.

본 발명은 또한, 컨텐츠 등록 서버가 컨텐츠 제공 단말로부터 등록할 컨텐츠에 대한 분리 실행 대상 코드 블록의 정보를 수신하는 수신 단계, 컨텐츠 등록 서버가 분리 실행 대상 코드 블록을 실제 저장장치의 실행 환경에 대응하는 테스트 환경에서 실행하여 유효성을 검증하는 검증 단계, 검증 결과 유효한 경우, 컨텐츠 등록 서버가 분리 실행 대상 코드 블록을 저장장치용 코드 블록으로 변환하는 변환 단계를 포함하는 분리 실행 기반의 컨텐츠용 코드 블록의 검증 방법을 제공한다.The present invention also provides a step in which a content registration server receives information of a separation execution target code block for content to be registered from a content providing terminal, and the content registration server corresponds to the execution environment of the actual storage device. A verification step of executing in a test environment to validate, and if the verification result is valid, a verification step of the content execution code block for content based on the separation execution, including a conversion step of converting the code execution target block to a code block for storage. Provide a method.

본 발명에 따른 코드 블록의 검증 방법에 있어서, 분리 실행 대상 코드 블록의 정보는 등록할 컨텐츠로부터 추출한 분리 실행 대상 코드 블록을 포함할 수 있다.In the method for verifying a code block according to the present invention, the information of a separation execution target code block may include a separation execution target code block extracted from content to be registered.

본 발명에 따른 코드 블록의 검증 방법에 있어서, 분리 실행 대상 코드 블록의 정보는 등록할 컨텐츠와, 등록할 컨텐츠로부터 추출한 분리 실행 대상 코드 블록의 리스트를 포함할 수 있다.In the method for verifying a code block according to the present invention, the information on the separation execution target code block may include a content to be registered and a list of the separation execution target code blocks extracted from the content to be registered.

본 발명에 따른 코드 블록의 검증 방법에 있어서, 수신 단계와 검증 단계 사이에 수행되는, 컨텐츠 등록 서버가 수신한 리스트를 기반으로 수신한 컨텐츠로부터 분리 실행 대상 코드 블록을 추출하는 추출 단계를 더 포함할 수 있다.In the method for verifying a code block according to the present invention, the method may further include an extraction step of extracting a target code block to be separated from the received content based on a list received by the content registration server, which is performed between the receiving step and the verifying step. Can be.

본 발명에 따른 코드 블록의 검증 방법에 있어서, 분리 실행 대상 코드 블록의 정보는 등록할 컨텐츠를 포함할 수 있다.In the method of verifying a code block according to the present invention, the information of the code block to be separated may include content to be registered.

본 발명에 따른 코드 블록의 검증 방법에 있어서, 수신 단계와 검증 단계 사이에 수행되는, 컨텐츠 등록 서버가 수신한 컨텐츠에 대한 프로파일링 및 분석을 통하여 분리 실행 대상 코드 블록을 추출하는 단계;를 더 포함할 수 있다.In the verification method of the code block according to the present invention, the step of extracting the separation execution target code block through the profiling and analysis of the content received by the content registration server, which is performed between the receiving step and the verifying step; can do.

본 발명에 따른 코드 블록의 검증 방법에 있어서, 검증 결과 유효하지 않은 분리 실행 대상 코드 블록이 검출된 경우, 컨텐츠 등록 서버가 검증 실패 결과를 기반으로 재 프로파일링 및 분석을 수행하여 분리 실행 대상 코드 블록을 다시 추출하는 재추출 단계를 더 포함할 수 있다. 이때 컨텐츠 등록 서버가 재추출 단계 이후에 검증 단계부터 다시 수행할 수 있다.In the method for verifying a code block according to the present invention, when an invalid separation execution target code block is detected as a result of the verification, the content registration server performs re-profiling and analysis based on the verification failure result to separate the execution target code block. It may further comprise a re-extraction step of extracting again. At this time, the content registration server may be performed again from the verification step after the re-extraction step.

본 발명에 따른 코드 블록의 검증 방법에 있어서, 검증 단계에서의 검증 항목은, Floating Point Instruction 유무, SIMD Instruction Set 유무, Initial Context에 포함된 메모리 범위가 임계 용량을 초과하는 지의 유무, 분리 실행 대상 코드 블록 내에 장시간 반복하는 루프의 존재 유무, 분리 실행 대상 코드 블록 내에 데이터가 존재하는 지의 유무 중에 적어도 하나를 포함할 수 있다.In the verification method of the code block according to the present invention, the verification item in the verification step includes a floating point instruction, a SIMD instruction set, whether the memory range included in the initial context exceeds a threshold capacity, and an execution target code. It may include at least one of the presence or absence of a loop that repeats for a long time in the block, or whether there is data in the separation execution target code block.

본 발명에 따른 코드 블록의 검증 방법에 있어서, 검증 결과 유효하지 않은 분리 실행 대상 코드 블록이 검출된 경우, 컨텐츠 등록 서버가 컨텐츠 제공 단말로 검증 실패 결과를 피드백하는 패드백 단계를 더 포함할 수 있다.In the method of verifying a code block according to the present invention, if the invalid execution target code block is detected as a result of the verification, the content registration server may further include a padback step of feeding back a verification failure result to the content providing terminal. .

본 발명에 따른 코드 블록의 검증 방법에 있어서, 피드백 단계 이후에 수행되는, 컨텐츠 등록 서버가 컨텐츠 제공 단말로부터 전송한 검증 실패 결과를 기반으로 획득한 등록할 컨텐츠에 대한 분리 실행 대상 코드 블록의 정보를 재수신하는 단계를 더 포함할 수 있다. 이때 컨텐츠 등록 서버가 재수신하는 단계 이후에 검증 단계부터 다시 수행할 수 있다.In the verification method of the code block according to the present invention, the information on the separation execution target code block for the content to be registered to be obtained based on the verification failure result transmitted by the content registration server from the content providing terminal performed after the feedback step. Re-receiving may be further included. In this case, the content registration server may perform the verification step again after the step of receiving again.

본 발명에 따른 코드 블록의 검증 방법에 있어서, 분리 실행 대상 코드 블록이 x86용 컨텐츠의 코드 영역에서 추출된 경우, 검증 단계에서 컨텐츠 등록 서버가 Floating Point Instruction 유무 또는 SIMD Instruction Set 유무를 검증한다. 그리고 변환 단계에서 컨텐츠 등록 서버가 분리 실행 대상 코드 블록을 Java Byte 코드 블록 또는 ARM용 코드 블록으로 변환할 수 있다.In the method for verifying a code block according to the present invention, when a separate execution target code block is extracted from a code area of content for x86, the content registration server verifies whether there is a floating point instruction or a SIMD instruction set in the verification step. In the conversion step, the content registration server may convert the separated execution target code block into a Java Byte code block or an ARM code block.

그리고 본 발명에 따른 코드 블록의 검증 방법에 있어서, 변환 단계 이후에 수행되는, 컨텐츠 등록 서버가 컨텐츠 제공 단말로 수신한 분리 실행 대상 코드 블록이 유효하다는 검증 통과 결과를 패드백하는 단계를 더 포함할 수 있다.The method for verifying a code block according to the present invention may further include: padding back a verification pass result indicating that the separation execution target code block received by the content registration server to the content providing terminal is performed after the conversion step. Can be.

따라서 본 발명에 따르면 등록할 컨텐츠용 분리 실행 대상 코드 블록에 대해서 실제 호스트 단말 및 저장장치의 분리 실행 환경에 대응하는 테스트 프로세스 환경에서 테스트를 수행하여 검증하고, 검증 결과를 프로파일링 및 분석을 담당하는 부분으로 피드백함으로써, 컨텐츠에 대한 호스트 단말과 저장장치 간의 분리 실행 시 안정적인 실행 환경을 제공할 수 있는 분리 실행 대상 코드 블록을 추출할 수 있다. 따라서 분리 실행 기반의 컨텐츠의 실행 시 발생될 수 있는 호스트 단말 또는 저장장치의 성능 및 안정성 저하 요인을 사전에 제거할 수 있다.Therefore, according to the present invention, the test is performed by performing a test in a test process environment corresponding to a separate execution environment of an actual host terminal and a storage device, and profiling and analyzing a verification result for the separated execution target code block for content to be registered. By feedback to the part, it is possible to extract a separate execution target code block that can provide a stable execution environment when the separation between the host terminal and the storage device for the content. Therefore, it is possible to remove in advance the deterioration factors of performance and stability of the host terminal or the storage device, which may occur when executing the content based on the separate execution.

도 1은 본 발명의 제1 실시예에 따른 분리 실행 기반의 컨텐츠용 코드 블록의 검증 시스템을 포함하는 디지털 저작권 관리(digital rights management; DRM) 시스템을 보여주는 블록도이다.
도 2는 도 1의 컨텐츠 제공 단말의 구성을 보여주는 블록도이다.
도 3은 도 1의 컨텐츠 등록 서버가 제공하는 프로파일링 및 분석 툴의 구성을 보여주는 블록도이다.
도 4는 컨텐츠의 데이터 구조를 보여주는 블록도이다.
도 5는 컨텐츠에서 분할된 분리 실행 대상 코드 블록과, 서비스용 컨텐츠의 구성을 보여주는 블록도이다.
도 6은 도 1의 컨텐츠 등록 서버의 구성을 보여주는 블록도이다.
도 7은 본 발명의 제1 실시예에 따른 분리 실행 기반의 컨텐츠용 코드 블록의 검증 방법을 포함하는 컨텐츠 등록 방법을 보여주는 흐름도이다.
도 8은 도 7의 분리 실행 대상 코드 블록 추출 및 서비스용 컨텐츠 생성 단계에 따른 상세 흐름도이다.
도 9 및 도 10은 도 8의 분리 실행 대상 코드 블록으로 추출될 베이식 블록 그룹의 선정 단계를 설명하기 위한 예시도이다.
도 11은 도 7의 검증 방법에 따른 예시도이다.
도 12는 본 발명의 제2 실시예에 따른 분리 실행 기반의 컨텐츠용 코드 블록의 검증 시스템을 포함하는 디지털 저작권 관리 시스템을 보여주는 블록도이다.
도 13은 본 발명의 제2 실시예에 따른 분리 실행 기반의 컨텐츠용 코드 블록의 검증 방법을 포함하는 컨텐츠 등록 방법을 보여주는 흐름도이다.
도 14는 도 13의 분리 실행 대상 코드 블록의 리스트 생성 단계에 따른 상세 흐름도이다.
도 15는 도 13의 검증 방법에 따른 예시도이다.
도 16은 본 발명의 제3 실시예에 따른 분리 실행 기반의 컨텐츠용 코드 블록의 검증 시스템을 포함하는 디지털 저작권 관리 시스템을 보여주는 블록도이다.
도 17은 본 발명의 제3 실시예에 따른 분리 실행 기반의 컨텐츠용 코드 블록의 검증 방법을 포함하는 컨텐츠 등록 방법을 보여주는 흐름도이다.
도 18은 도 16의 검증 방법에 따른 예시도이다.
FIG. 1 is a block diagram illustrating a digital rights management (DRM) system including a verification system of a code block for content based on a separation execution according to a first embodiment of the present invention.
2 is a block diagram illustrating a configuration of a content providing terminal of FIG. 1.
3 is a block diagram illustrating a configuration of a profiling and analysis tool provided by the content registration server of FIG. 1.
4 is a block diagram showing a data structure of content.
FIG. 5 is a block diagram illustrating a structure of a separated execution target code block divided from content and content for a service.
6 is a block diagram illustrating a configuration of a content registration server of FIG. 1.
7 is a flowchart illustrating a content registration method including a method of verifying a code block for content based on a separation execution according to a first embodiment of the present invention.
FIG. 8 is a detailed flowchart illustrating the separation execution target code block extraction and content generation step for a service of FIG. 7.
9 and 10 are exemplary diagrams for describing a step of selecting a basic block group to be extracted as the separated execution target code block of FIG. 8.
11 is an exemplary view according to the verification method of FIG. 7.
12 is a block diagram illustrating a digital rights management system including a system for verifying a code block for content based on a separation execution according to a second embodiment of the present invention.
13 is a flowchart illustrating a content registration method including a method of verifying a code block for content based on a separation execution according to a second embodiment of the present invention.
FIG. 14 is a detailed flowchart of a list generation step of the separated execution target code block of FIG. 13.
15 is an exemplary view according to the verification method of FIG. 13.
FIG. 16 is a block diagram illustrating a digital rights management system including a verification system of a code block for content based on a separation execution according to a third embodiment of the present invention.
17 is a flowchart illustrating a content registration method including a method of verifying a code block for content based on a separation execution according to a third embodiment of the present invention.
18 is an exemplary view according to the verification method of FIG. 16.

이하, 첨부된 도면을 참조하여 본 발명의 실시예를 보다 상세하게 설명하자고 한다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings.

본 발명의 제1 실시예에 따른 분리 실행 기반의 디지털 저작권 관리(digital rights management; DRM) 시스템(100)은, 도 1에 도시된 바와 같이, 네트워크(55)를 매개로 연결된 컨텐츠 제공 단말(10), 컨텐츠 등록 서버(20) 및 호스트 단말(51)와, 호스트 단말(51)에 유무선 인터페이스를 매개로 연결된 저장장치(53)를 포함하여 구성된다. 특히 분리 실행 기반의 디지털 저작권 관리 시스템(100)은 분리 실행 기반의 컨텐츠용 코드 블록의 검증 시스템(이하 '코드 블록의 검증 시스템'이라 함)을 포함한다. 코드 블록의 검증 시스템은 네트워크(55)를 매개로 연결된 컨텐츠 제공 단말(10) 및 컨텐츠 등록 서버(20)를 포함하여 구성된다.The digital rights management (DRM) system 100 based on separation execution according to the first embodiment of the present invention, as shown in FIG. 1, provides a content providing terminal 10 connected through a network 55. ), The content registration server 20, the host terminal 51, and the storage device 53 connected to the host terminal 51 via a wired or wireless interface. In particular, the digital rights management system 100 based on the separation execution includes a verification system of code blocks for content based on the separation execution (hereinafter, referred to as a verification system of code blocks). The verification system of the code block includes a content providing terminal 10 and a content registration server 20 connected through a network 55.

여기서 '분리 실행'은 컨텐츠(30)를 실행하는 데 있어서 호스트 단말(51)와 저장장치(53)가 서로 연동되어 실행하는 것을 의미한다. 특히 분리 실행을 구현하기 위해서, 원본 컨텐츠(30)의 코드 영역에서 일부 코드 블록(이하 '분리 실행 대상 코드 블록(34)'이라 함)을 분리하여 저장장치(53)에 설치하고, 분리 실행 대상 코드 블록(34)이 제거된 컨텐츠(이하 '서비스용 컨텐츠(32)'라 함)를 호스트 단말(51)에 설치한다. 따라서 분리 실행 기반의 컨텐츠(30)를 실행하고자 할 경우에, 호스트 단말(51)는 서비스용 컨텐츠(32) 실행 중 분리 실행 대상 코드 블록(34)이 제거된 부분에 대한 출력값을 저장장치(53)에 요청하여 반환받는 형태로 해당 컨텐츠(30)를 실행한다. 이때 분리 실행 대상 코드 블록(34)은 저장장치(53)에서 사용되는 저장장치용 코드 블록(27)으로 변환되어 저장장치(53)에 제공된다.In this case, the "separate execution" means that the host terminal 51 and the storage device 53 interoperate with each other in executing the content 30. In particular, in order to implement a separate execution, some code blocks (hereinafter referred to as 'separated execution target code blocks 34') are separated from the code area of the original content 30 and installed in the storage device 53, and a separate execution target is performed. The content in which the code block 34 has been removed (hereinafter referred to as "service content 32") is installed in the host terminal 51. Therefore, when the separated execution based content 30 is to be executed, the host terminal 51 stores the output value for the portion where the separated execution target code block 34 is removed during the execution of the service content 32. The content 30 is executed in the form of a request for return. In this case, the separated execution target code block 34 is converted into a storage device code block 27 used in the storage device 53 and provided to the storage device 53.

네트워크(55)는 컨텐츠 제공 단말(10), 컨텐츠 등록 서버(20) 및 호스트 단말(51) 간의 데이터 전송 및 정보 교환을 위한 일련의 데이터 송수신 동작을 수행한다. 네트워크(55)는 IP를 통하여 대용량 데이터의 송수신 서비스 및 끊김없는 데이터 서비스를 제공하는 IP망으로, IP를 기반으로 서로 다른 망을 통합한 IP망 구조인 ALL-IP망일 수 있다. 또한 네트워크(55)는 유선통신망, 이동통신망, WiBro(Wireless Broadband)망, HSDPA(High-Speed Downlink Packet Access)망, 위성통신망 또는 기타 널리 공지되었거나 향후 개발될 유무선 또는 이들의 결합망을 포함한다.The network 55 performs a series of data transmission / reception operations for data transmission and information exchange between the content providing terminal 10, the content registration server 20, and the host terminal 51. The network 55 is an IP network that provides a large data transmission / reception service and a seamless data service through IP, and may be an ALL-IP network that is an IP network structure integrating different networks based on IP. The network 55 also includes a wired communication network, a mobile communication network, a WiBro (Wireless Broadband) network, a high-speed downlink packet access (HSDPA) network, a satellite communication network, or other well-known or future-developed wired or wireless networks or a combination thereof.

컨텐츠 제공 단말(10)은 컨텐츠 제공자가 운용하는 단말로서, 네트워크(55)를 통하여 컨텐츠 등록 서버(20)와 통신을 수행하고, 컨텐츠 제공자가 개발한 컨텐츠(30)를 저장하고 있다. 특히 컨텐츠 제공 단말(10)은 컨텐츠 제공자의 선택 신호를 입력받아 등록할 컨텐츠(30)에 대해서 보안을 설정하여 컨텐츠 등록 서버(20)에 등록한다. 즉 컨텐츠 제공 단말(10)은 컨텐츠 등록 서버(20)로부터 내려받은 프로파일링 및 분석 툴(40)을 실행한다. 컨텐츠 제공 단말(10)은 프로파일링 및 분석 툴(40)에서 등록할 컨텐츠(30)를 호출한다. 컨텐츠 제공 단말(10)은 호출한 컨텐츠(30)에 대한 동적 프로파일링(dynamic profiling) 및 정적 분석(static analysis)(이하, '프로파일링 및 분석'이라 함)을 통하여 컨텐츠(30)의 코드 영역에서 분리 실행 대상 코드 블록(34)을 추출한다. 아울러 컨텐츠 제공 단말(10)은 분리 실행 대상 코드 블록(34)이 추출된 코드 영역에 스터브 코드(stub code)를 삽입하여 서비스용 컨텐츠(32)를 생성한다. 그리고 컨텐츠 제공 단말(10)은 분리 실행 대상 코드 블록(34)과 서비스용 컨텐츠(32)를 컨텐츠 등록 서버(20)에 등록한다. 이때 컨텐츠 제공 단말(10)은 컨텐츠(30)에 대한 보안을 설정하여 컨텐츠 등록 서버(20)에 등록할 수 있는 단말로서, 호스트 단말 또는 네트워크(55) 상에 구축된 서버일 수 있다.The content providing terminal 10 is a terminal operated by a content provider. The content providing terminal 10 communicates with the content registration server 20 through the network 55 and stores the content 30 developed by the content provider. In particular, the content providing terminal 10 receives the selection signal of the content provider and sets the security of the content 30 to be registered and registers it with the content registration server 20. That is, the content providing terminal 10 executes the profiling and analysis tool 40 downloaded from the content registration server 20. The content providing terminal 10 calls the content 30 to be registered in the profiling and analysis tool 40. The content providing terminal 10 may code areas of the content 30 through dynamic profiling and static analysis (hereinafter, referred to as 'profiling and analysis') of the called content 30. Extract the separate execution target code block 34 from. In addition, the content providing terminal 10 inserts a stub code into the code region from which the separate execution target code block 34 is extracted to generate the service content 32. The content providing terminal 10 registers the separation execution target code block 34 and the service content 32 in the content registration server 20. In this case, the content providing terminal 10 is a terminal capable of registering the content registration server 20 by setting security for the content 30, and may be a host terminal or a server built on the network 55.

컨텐츠 등록 서버(20)는 네트워크(55)를 통한 컨텐츠 제공자의 요청에 따라 컨텐츠 제공 단말(10)로부터 컨텐츠(30)를 수신하여 등록한다. 컨텐츠 등록 서버(20)는 호스트 단말(51)을 통한 고객의 구매 요청에 따라 등록된 컨텐츠(30)를 판매할 수 있다. 이때 컨텐츠 등록 서버(20)는 컨텐츠 제공 단말(10)로부터 컨텐츠(30)의 분리 실행 대상 코드 블록(34) 및 서비스용 컨텐츠(32)를 수신하여 등록한다. 컨텐츠 등록 서버(20)는 컨텐츠 제공 단말(10) 또는 호스트 단말(51)이 네트워크(55)를 통하여 접근할 수 있는 웹페이지(21)를 운영한다. 컨텐츠 등록 서버(20)는 컨텐츠(30)의 분석 및 등록에 필요한 프로파일링 및 분석 툴(40)을 제공한다. 그리고 컨텐츠 등록 서버(20)는 분리 실행 대상 코드 블록(34)을 저장장치(53)에서 실행할 수 있는 코드 블록 즉, 저장장치용 코드 블록(37)으로 변환하여 저장한다.The content registration server 20 receives and registers the content 30 from the content providing terminal 10 at the request of the content provider through the network 55. The content registration server 20 may sell the registered content 30 according to a customer's purchase request through the host terminal 51. At this time, the content registration server 20 receives and registers a separate execution target code block 34 of the content 30 and the service content 32 from the content providing terminal 10. The content registration server 20 operates a web page 21 that the content providing terminal 10 or the host terminal 51 can access through the network 55. The content registration server 20 provides a profiling and analysis tool 40 necessary for analysis and registration of the content 30. The content registration server 20 converts the separated execution target code block 34 into a code block that can be executed in the storage device 53, that is, a storage code block 37.

호스트 단말(51)은 컨텐츠(30)의 실행이 가능한 독립된 CPU를 가진 컴퓨팅 장치, 예컨대 PC, 노트북, 워크스테이션 등을 통칭한다. 호스트 단말(51)은 다수의 사용자들에 의해 접근이 자유로운 공용 컴퓨터를 포함한다. 호스트 단말(51)에는 서비스용 컨텐츠(32)가 설치되어 있다. 호스트 단말(51)에 유무선 인터페이스를 매개로 저장장치(53)가 연결되면, 호스트 단말(51)은 연결된 저장장치(53)와 함께 컨텐츠(30)에 대한 분리 실행을 수행한다. 호스트 단말(51)의 사용자는 컨텐츠 등록 서버(20)에 등록된 컨텐츠(30)를 구매할 수 있다. 컨텐츠(30)의 구매를 결정하면, 호스트 단말(51)은 구매한 컨텐츠(30)의 서비스용 컨텐츠(32)를 자신에게 설치하고, 구매한 컨텐츠(30)의 저장장치용 코드 블록(27)은 연결된 저장장치(53)에 설치할 수 있다. 여기서 유무선 인터페이스는 USB, USB2, Serial/Parallel Port, Ethernet, TCP/IP, 통신 케이블 등을 이용한 유선 통신망과, 근거리 무선통신망을 포함할 수 있다. 근거리 무선통신 방식으로는 블루투스(Bluetooth), 지그비(zigbee), 루비(Rubee), 적외선데이터통신(IrDA; Infrared Data Association), 초광대역방식(UWB; Ultra Wide Broadband) 등이 사용될 수 있다.The host terminal 51 collectively refers to a computing device having an independent CPU capable of executing the content 30, such as a PC, a notebook, a workstation, and the like. The host terminal 51 includes a public computer that is accessible by a plurality of users. The host terminal 51 is provided with service contents 32. When the storage device 53 is connected to the host terminal 51 via a wired or wireless interface, the host terminal 51 performs a separate execution of the content 30 together with the connected storage device 53. The user of the host terminal 51 may purchase the content 30 registered in the content registration server 20. When the purchase of the content 30 is determined, the host terminal 51 installs the service content 32 of the purchased content 30 in itself, and the code block 27 for the storage device of the purchased content 30. May be installed in the connected storage device 53. Here, the wired / wireless interface may include a wired communication network using a USB, a USB2, a serial / parallel port, an Ethernet, a TCP / IP, a communication cable, and a short range wireless communication network. Bluetooth, Zigbee, Ruby, Infrared Data Association (IrDA), Ultra Wide Broadband (UWB), and the like may be used as a short range wireless communication method.

그리고 저장장치(53)는 유무선 인터페이스를 매개로 호스트 단말(51)에 연결되며, 호스트 단말(51)에 설치된 서비스용 컨텐츠(32)에 대한 저장장치용 코드 블록(27)을 저장한다. 저장장치(53)는 컨텐츠(30) 실행시 호스트 단말(51)의 요청에 따라 저장장치용 코드 블록(34)에 대한 연산을 수행하여 출력값을 호스트 단말(51)로 반환한다. 이때 저장장치(53)는 USB 메모리, 플래시 메모리 카드, 이에 상응하는 각종 이동식, 휴대식 저장매체(예컨대, SD(Secure Digital) 메모리 카드, microSD 메모리 카드, ISO 7816 표준의 저장장치 등)를 통칭한다.The storage device 53 is connected to the host terminal 51 through a wired or wireless interface, and stores the storage device code block 27 for the service content 32 installed in the host terminal 51. The storage device 53 performs an operation on the storage device code block 34 at the request of the host terminal 51 when the content 30 is executed, and returns an output value to the host terminal 51. In this case, the storage device 53 collectively refers to a USB memory, a flash memory card, and various removable and portable storage media (for example, a SD (Secure Digital) memory card, a microSD memory card, and a storage device of the ISO 7816 standard).

따라서 사용자가 호스트 단말(51)의 입력부, 예컨대 키보드, 마우스, 터치패드 등을 통하여 컨텐츠(30)의 실행을 요청하면, 호스트 단말(51)은 서비스용 컨텐츠(32)에 대한 실행을 시작한다. 호스트 단말(51)은 서비스용 컨텐츠(32)에 없는 코드에 대한 실행 요청을 저장장치(53)로 전달한다. 그리고 저장장치(53)는 실행 요청에 대응하는 저장장치용 코드 블록(34)을 실행한 후 출력값을 호스트 단말(51)로 전달한다.Therefore, when the user requests execution of the content 30 through an input unit of the host terminal 51, for example, a keyboard, a mouse, a touch pad, etc., the host terminal 51 starts execution of the content for service 32. The host terminal 51 transmits an execution request for code not included in the service content 32 to the storage device 53. The storage device 53 executes the storage device code block 34 corresponding to the execution request and transmits the output value to the host terminal 51.

본 발명에 따른 코드 블록의 검증 시스템은 네트워크(55)를 매개로 연결된 컨텐츠 제공 단말(10) 및 컨텐츠 등록 서버(20)를 포함하여 구성된다. 컨텐츠 제공 단말(10)은 등록할 컨텐츠(30)에 대한 분리 실행 대상 코드 블록(34)의 정보를 컨텐츠 등록 서버(20)로 전송하여 해당 컨텐츠(30)의 등록을 요청한다. 컨텐츠 등록 서버(20)는 수신한 분리 실행 대상 코드 블록(34)의 정보를 이용하여 분리 실행 대상 코드 블록(34)의 유효성을 검증한다. 이때 분리 실행 대상 코드 블록(34)의 정보는 컨텐츠, 컨텐츠에서 추출한 분리 실행 대상 코드 블록, 컨텐츠에서 추출한 분리 실행 대상 코드 블록의 리스트 중에 적어도 하나를 포함한다.The verification system of a code block according to the present invention includes a content providing terminal 10 and a content registration server 20 connected via a network 55. The content providing terminal 10 transmits the information of the separation execution target code block 34 for the content 30 to be registered to the content registration server 20 and requests registration of the corresponding content 30. The content registration server 20 verifies the validity of the separation execution target code block 34 using the received information of the separation execution target code block 34. In this case, the information on the separation execution target code block 34 includes at least one of a content, a separation execution target code block extracted from the content, and a list of the separation execution target code block extracted from the content.

특히 제1 실시예에 따른 분리 실행 대상 코드 블록의 검증 시스템은 컨텐츠 제공 단말(10)의 프로파일링 및 분석을 통하여 추출한 분리 실행 대상 코드 블록(34)에 대한 검증을 컨텐츠 등록 서버(20)에서 수행하고, 그 검증 결과를 컨텐츠 제공 단말(10)로 피드백하여 분리 실행 시 안정적인 실행 환경을 제공할 수 있는 분리 실행 대상 코드 블록(34)이 추출될 수 있도록 한다.In particular, the verification system of the separation execution target code block according to the first embodiment performs the verification on the separation execution target code block 34 extracted through profiling and analysis of the content providing terminal 10 in the content registration server 20. Then, the verification result is fed back to the content providing terminal 10 so that the separation execution target code block 34 which can provide a stable execution environment in the separation execution can be extracted.

컨텐츠 제공 단말(10)은 등록할 컨텐츠(30)에 대한 프로파일링 및 분석을 통하여 추출한 분리 실행 대상 코드 블록(34)을 컨텐츠 등록 서버(20)로 전송한다. 컨텐츠 등록 서버(20)로부터 전송한 분리 실행 대상 코드 블록(34) 중 유효하지 않은 분리 실행 대상 코드 블록(34)이 포함되어 있다는 검증 실패 결과를 피드백 받으면, 컨텐츠 제공 단말(10)은 수신한 검증 실패 결과를 기반으로 등록할 컨텐츠(30)에 대한 재 프로파일링 및 분석을 통하여 추출한 분리 실행 대상 코드 블록(34)을 컨텐츠 등록 서버(20)로 재전송한다. 그리고 컨텐츠 제공 단말(10)은 컨텐츠 등록 서버(10)로부터 전송한 분리 실행 대상 코드 블록(34)이 유효하다는 검증 통과 결과를 수신하여 출력할 수 있다.The content providing terminal 10 transmits the separated execution target code block 34 extracted through profiling and analysis of the content 30 to be registered to the content registration server 20. If the feedback of the verification failure that the invalid execution target code block 34 is included among the separation execution target code blocks 34 transmitted from the content registration server 20 is received, the content providing terminal 10 receives the verification. Based on the failure result, the separated execution target code block 34 extracted through re-profiling and analysis of the content 30 to be registered is retransmitted to the content registration server 20. The content providing terminal 10 may receive and output a verification pass result indicating that the separation execution target code block 34 transmitted from the content registration server 10 is valid.

그리고 컨텐츠 등록 서버(20)는 컨텐츠 제공 단말(10)로부터 수신한 분리 실행 대상 코드 블록(34)에 대해 검증하고, 그 검증 결과를 컨텐츠 제공 단말(10)로 피드백 한다. 즉 컨텐츠 등록 서버(20)는 컨텐츠 제공 단말(10)로부터 수신한 분리 실행 대상 코드 블록(34)을 실제 저장장치의 실행 환경에 대응하는 테스트 환경에서 실행하여 유효성을 검증한다. 검증 결과 유효하지 않은 분리 실행 대상 코드 블록(34)이 검출된 경우, 컨텐츠 등록 서버(20)는 컨텐츠 제공 단말(10)로 검증 실패 결과를 피드백 한다. 검증 결과 유효한 경우, 컨텐츠 등록 서버(20)는 분리 실행 대상 코드 블록(34)을 저장장치용 코드 블록(27)으로 변환하고, 검증 통과 결과를 컨텐츠 제공 단말(10)로 피드백 한다.The content registration server 20 verifies the separation execution target code block 34 received from the content providing terminal 10 and feeds back the verification result to the content providing terminal 10. That is, the content registration server 20 executes the separated execution target code block 34 received from the content providing terminal 10 in a test environment corresponding to the execution environment of the actual storage device to verify validity. When the invalid execution target code block 34 is detected as a result of the verification, the content registration server 20 feeds back a verification failure result to the content providing terminal 10. If the verification result is valid, the content registration server 20 converts the separation execution target code block 34 to the storage code block 27 and feeds back the verification pass result to the content providing terminal 10.

이와 같이 제1 실시예에 따른 분리 실행 대상 코드 블록의 검증 시스템은 등록할 컨텐츠(30)에서 추출한 분리 실행 대상 코드 블록(34)을 저장장치용 코드 블록(27)으로 변환하기 전에 추출한 분리 실행 대상 코드 블록(34)에 대해 검증하고, 그 검증 결과를 피드백하여 안정적인 실행 환경을 제공할 수 있는 분리 실행 대상 코드 블록(34)을 추출할 수 있다. 이를 통하여 실제 분리 실행 기반의 컨텐츠(30)의 실행 시 발생될 수 있는 성능 및 안정성 저하 요인을 사전에 제거할 수 있다.As described above, the verification system of the separated execution target code block according to the first embodiment extracts the separated execution target code block 34 extracted from the content 30 to be registered before converting the extracted execution target code block 34 into the storage device code block 27. The code block 34 may be verified, and the verification result may be fed back to extract the separate execution target code block 34 which may provide a stable execution environment. Through this, it is possible to remove in advance the deterioration factors of performance and stability that may occur when the content of the separation-based execution 30 is executed.

이와 같은 제1 실시예에 따른 분리 실행 대상 코드 블록의 검증 시스템의 컨텐츠 제공 단말(10)에 대해서 도 1 내지 도 5를 참조하여 구체적으로 설명하면 다음과 같다. 여기서 도 2는 도 1의 컨텐츠 제공 단말의 구성을 보여주는 블록도이다. 도 3은 도 1의 컨텐츠 등록 서버가 제공하는 프로파일링 및 분석 툴의 구성을 보여주는 블록도이다. 도 4는 컨텐츠의 데이터 구조를 보여주는 블록도이다. 그리고 도 5는 컨텐츠에서 분할된 분리 실행 대상 코드 블록과, 서비스용 컨텐츠의 구성을 보여주는 블록도이다.The content providing terminal 10 of the system for verifying the separation execution target code block according to the first embodiment will be described in detail with reference to FIGS. 1 to 5 as follows. 2 is a block diagram illustrating a configuration of a content providing terminal of FIG. 1. 3 is a block diagram illustrating a configuration of a profiling and analysis tool provided by the content registration server of FIG. 1. 4 is a block diagram showing a data structure of content. FIG. 5 is a block diagram illustrating a configuration of a separate execution target code block divided from content and content for a service.

제1 실시예에 따른 컨텐츠 제공 단말(10)은 통신부(11), 입력부(12), 저장부(13) 및 단말제어부(15)를 포함하며, 표시부(14)를 더 포함할 수 있다.The content providing terminal 10 according to the first embodiment may include a communication unit 11, an input unit 12, a storage unit 13, and a terminal controller 15, and may further include a display unit 14.

통신부(11)는 네트워크(55)를 통하여 컨텐츠 등록 서버(20)와 통신을 수행한다. 통신부(11)는 단말제어부(15)의 제어에 따라 컨텐츠(30)의 등록을 위해 분리 실행 대상 코드 블록(34)과 서비스용 컨텐츠(32)를 컨텐츠 등록 서버(20)로 전송한다. 통신부(11)는 컨텐츠 등록 서버(20)로부터 전송한 분리 실행 대상 코드 블록(34)에 대한 검증 결과, 예컨대 검증 실패 또는 검증 통과 결과를 수신하여 단말제어부(15)로 전달한다. 그리고 통신부(11)는 컨텐츠 등록 서버(20)로부터 등록 완료 메시지를 수신하여 단말제어부(15)에 전달한다.The communication unit 11 communicates with the content registration server 20 through the network 55. The communication unit 11 transmits the separate execution target code block 34 and the service content 32 to the content registration server 20 to register the content 30 under the control of the terminal controller 15. The communication unit 11 receives a verification result of the separation execution target code block 34 transmitted from the content registration server 20, for example, a verification failure or a verification passing result, and transmits the result to the terminal controller 15. The communication unit 11 receives a registration completion message from the content registration server 20 and transmits the registration completion message to the terminal controller 15.

입력부(12)는 컨텐츠 제공 단말(10)의 조작을 위한 복수의 키를 제공하며, 컨텐츠 제공자의 키선택에 따른 선택 신호를 발생하여 단말제어부(15)로 전달한다. 컨텐츠 제공자는 입력부(12)를 통해 등록할 컨텐츠(30)를 호출하고, 호출된 컨텐츠(30)에 대한 보안 수준의 설정, 분리 실행 대상 코드 블록(34)의 추출 및 서비스용 컨텐츠(32)의 생성을 위한 선택 신호를 입력할 수 있다. 이때 입력부(12)로는 키패드, 터치패드와 같은 포인팅 장치, 터치스크린(touch screen) 등의 입력장치가 사용될 수 있다.The input unit 12 provides a plurality of keys for the operation of the content providing terminal 10, and generates and transmits a selection signal according to the key selection of the content provider to the terminal controller 15. The content provider calls the content 30 to be registered through the input unit 12, sets the security level for the called content 30, extracts the separation execution target code block 34, and the contents of the service 32. A selection signal for generation can be input. In this case, the input unit 12 may be a keypad, a pointing device such as a touch pad, or an input device such as a touch screen.

저장부(13)는 컨텐츠 제공 단말(10)의 동작 제어시 필요한 프로그램과, 그 프로그램 수행 중에 발생되는 정보를 저장한다. 저장부(13)는 컨텐츠 제공자가 개발한 컨텐츠(30)를 저장한다. 저장부(13)는 등록할 컨텐츠(30)에 대한 프로파일링 및 분석을 통하여 분리 실행 대상 코드 블록(34)을 추출하는 프로파일링 및 분석 툴(40)을 저장한다. 그리고 저장부(13)는 추출한 분리 실행 대상 코드 블록(34)과, 분리 실행 대상 코드 블록(34)이 분리된 코드 영역에 스터브 코드(36)가 삽입된 서비스용 컨텐츠(32)를 저장할 수 있다.The storage unit 13 stores a program necessary for controlling the operation of the content providing terminal 10 and information generated while executing the program. The storage unit 13 stores the content 30 developed by the content provider. The storage unit 13 stores the profiling and analysis tool 40 which extracts the separate execution target code block 34 through profiling and analysis of the content 30 to be registered. The storage unit 13 may store the extracted execution target code block 34 and the service content 32 in which the stub code 36 is inserted into the separated code area in which the separation execution target code block 34 is separated. .

이때 컨텐츠(30)는 복수 개의 파일, 예컨대 운영체제에서 제공하는 API(application program interface), 개발사에서 제공하는 API 또는 DLL(dynamic linking library)과 같은 파일을 포함한다. 이와 같은 복수의 파일을 포함하는 컨텐츠(30)는, 도 5에 도시된 바와 같이, 코드 영역(31)과 데이터 영역(33)으로 구분할 수 있다. 코드 영역(31)은 복수의 코드 블록을 포함하며, 분리 실행 대상 코드 블록(34)은 코드 영역(31)에서 추출된 복수의 코드 블록을 포함한다. 예컨대 분리 실행 대상 코드 블록(34)은 복수의 베이식 블록 그룹(37; basic block group)을 포함하며, 베이식 블록 그룹(37)은 복수의 베이식 블록(35; basic block)의 모임이다.In this case, the content 30 includes a plurality of files, for example, an application program interface (API) provided by an operating system, an API provided by a developer, or a file such as a dynamic linking library (DLL). As illustrated in FIG. 5, the content 30 including the plurality of files may be divided into a code area 31 and a data area 33. The code region 31 includes a plurality of code blocks, and the separation target code block 34 includes a plurality of code blocks extracted from the code region 31. For example, the separated execution target code block 34 includes a plurality of basic block groups 37, and the basic block groups 37 are a collection of a plurality of basic blocks 35.

이때 베이식 블록(35)은 단일 입력(single input) 및 단일 출력(single output)의 속성을 갖는 명령어의 열(sequence of instruction)로서, 외부에서 내부로의 진입을 허용하지 않는 속성을 갖는 코드 블록으로 정의할 수 있다. 즉 베이식 블록(35)은 항상 시작부터 끝까지 한번에 실행되는 연속적인 문장(코드의 모임)을 의미하며, 중간에 흐름 제어로 인해 실행이 중지되지 않는 문장 그룹이다.In this case, the basic block 35 is a sequence of instructions having attributes of a single input and a single output, and is a code block having an attribute that does not allow entry from the outside to the inside. Can be defined That is, the basic block 35 means a series of sentences (groups of codes) that are always executed once from the beginning to the end, and is a group of statements in which execution is not stopped due to flow control in the middle.

서비스용 컨텐츠(32)는 분리 실행 대상 코드 블록(34)으로 추출된 베이식 블록 그룹(37)의 코드 영역에 스터브 코드(36)가 삽입된 코드 영역(31a)과, 데이터 영역(33)을 포함한다. 이때 스터브 코드(36)는 호스트 단말(51)과 저장장치(53) 간에 컨텐츠(30)에 대한 분리 실행을 수행할 때, 서비스 컨텐츠(32)에서 추출된 코드 영역과, 추출된 코드 영역에 해당하는 분리 실행 대상 코드 블록(34)을 연결한다. 즉 스터브 코드(36)는 컨텐츠(30)에 대한 분리 실행을 수행할 때, 추출된 코드 영역에서 저장장치(53)로 제어 신호를 전달한다. 제어 신호를 수신한 저장장치(53)는 제어 신호에 해당하는 분리 실행 대상 코드 블록(34)에 대한 연산을 수행하여 산출한 출력값을 호스트 단말(51)로 반환한다.The service content 32 includes a code area 31a in which a stub code 36 is inserted into a code area of a basic block group 37 extracted as a separate execution target code block 34, and a data area 33. do. At this time, the stub code 36 corresponds to the code region extracted from the service content 32 and the extracted code region when performing the separation of the content 30 between the host terminal 51 and the storage device 53. The separation execution target code block 34 is connected. That is, the stub code 36 transmits a control signal to the storage device 53 in the extracted code area when performing the separation on the content 30. The storage device 53 receiving the control signal returns an output value calculated by performing an operation on the separate execution target code block 34 corresponding to the control signal to the host terminal 51.

분리 실행 대상 코드 블록(34)은 컨텐츠(30)에 대한 프로파일링 및 분석을 통하여 컨텐츠(30)의 코드 영역(31)에서 추출된 복수의 베이식 블록 그룹(37)을 포함한다. 즉 분리 실행 대상 코드 블록(34)은 컨텐츠(30)에 대한 프로파일링 및 분석을 통하여 컨텐츠(30)의 코드 영역(31)에서 선정된 베이식 블록 그룹(37)으로, 선정된 베이식 블록 그룹(37)들 중에서 적어도 하나가 분리 실행 대상 코드 블록(34)으로 추출될 수 있다. 분리 실행 대상 코드 블록(34)이 추출된 부분에는 스터브 코드(36)가 삽입된다. 후술되겠지만 컨텐츠(30)에 대한 프로파일링 및 분석을 통하여, 컨텐츠(30)는 분리 실행 대상 코드 블록(34)과, 분리 실행 대상 코드 블록(34)이 추출된 서비스용 컨텐츠(32)로 분할된다.The separation execution target code block 34 includes a plurality of basic block groups 37 extracted from the code area 31 of the content 30 through profiling and analysis of the content 30. That is, the separated execution target code block 34 is a basic block group 37 selected in the code area 31 of the content 30 through profiling and analysis of the content 30, and the selected basic block group 37 is selected. At least one of the plurality of components) may be extracted to the separate execution target code block 34. The stub code 36 is inserted into the part where the separation execution target code block 34 is extracted. As will be described later, through the profiling and analysis of the content 30, the content 30 is divided into a separate execution target code block 34 and a content for service 32 from which the separation execution target code block 34 is extracted. .

분리 실행 대상 코드 블록(34)은 저장장치용 코드 블록(27)으로 변환되어 저장장치(53)에 저장된 형태로 제공되거나 다운로드 형태로 저장장치(53)에 제공될 수 있다. 분리 실행 대상 코드 블록(34)은 전술된 바와 같이 복수의 베이식 블록(35)을 포함하는 베이식 블록 그룹(37)이다. 분리 실행 대상 코드 블록(34)은 분리 실행 대상 코드 블록(34)의 시작점(entry point)을 통한 제어 신호의 진입 및 베이식 블록(35) 간의 제어 신호의 이동은 허용하지만, 분리 실행 대상 코드 블록(34)의 시작점을 제외한 베이식 블록(35)으로의 제어 신호의 진입이 없는 서로 관련된 복수의 베이식 블록(35)을 포함하는 베이식 블록 그룹(37)으로 선택하는 것이 바람직하다.The separate execution target code block 34 may be converted into the code block 27 for storage and provided in the form of being stored in the storage 53 or provided to the storage 53 in the form of a download. The separate execution target code block 34 is a basic block group 37 including a plurality of basic blocks 35 as described above. The split execution target code block 34 allows the entry of the control signal through the entry point of the split execution target code block 34 and the movement of the control signal between the basic block 35, but the split execution target code block ( It is preferable to select a basic block group 37 including a plurality of basic blocks 35 which are related to each other without entry of a control signal to the basic block 35 except for the start point of 34.

이유는 베이식 블록 그룹(37) 중에서 시작점을 제외한 베이식 블록(35)으로의 제어 신호의 진입이 있는 베이식 블록 그룹(37)을 분리 실행 대상 코드 블록(34)으로 추출할 경우, 해당 분리 실행 대상 코드 블록(34)을 추출한 후 삽입되는 스터브 코드(36)에 시작 부분이 아닌 중간으로 제어 신호가 진입할 수 있다. 이 경우 스터브 코드(36)는 해당 제어 신호에 대한 처리를 수행하지 못하여 해당 컨텐츠(30)의 실행이 중지되거나 에러가 발생될 수 있기 때문이다. 즉 스터브 코드(36)은 첫 5Byte를 제외한 나머지 영역에는 NOP(no-operation instruction)와 같은 쓰레기 값이 들어 있기 때문에, 쓰레기 값이 들어 있는 영역으로 제어 신호가 진입할 경우 에러가 발생될 수 있다. 바꾸어 말하면, 시작점을 제외한 베이식 블록(35)으로의 제어 신호의 진입이 있는 베이식 블록 그룹(37)은 분리 실행을 수행할 때, 오류를 발생시킬 수 있는 확률이 높기 때문에, 분리 실행 대상 코드 블록(34)으로는 적합하지 않다.The reason is that when the basic block group 37 having the entry of the control signal to the basic block 35 except for the starting point from the basic block group 37 is extracted as the separate execution target code block 34, the corresponding execution target code After the block 34 is extracted, a control signal may enter the middle of the stub code 36 to be inserted and not to the beginning. In this case, the stub code 36 may not process the control signal, and thus the execution of the corresponding content 30 may be stopped or an error may be generated. That is, since the stub code 36 has a garbage value such as a no-operation instruction (NOP) in the remaining areas except for the first 5 bytes, an error may occur when the control signal enters the garbage containing area. In other words, since the basic block group 37 having the entry of the control signal to the basic block 35 except for the starting point has a high probability of generating an error when performing the separate execution, the separated execution target code block ( 34) is not suitable.

표시부(14)는 컨텐츠 제공 단말(10)에서 실행되는 각종 기능 메뉴를 비롯하여 저장부(13)에 저장된 정보를 표시할 수 있다. 표시부(14)는 단말제어부(15)의 제어에 따라 등록할 컨텐츠(30)의 리스트를 표시할 수 있다. 표시부(15)는 단말제어부(15)의 제어에 따라 컨텐츠 등록 서버(20)로부터 수신한 검증 결과와 등록 완료 메시지를 출력할 수 있다. 이때 표시부(14)로는 LCD(Liquid Crystal Display)나 터치 스크린이 사용될 수 있다. 터치 스크린은 표시 장치와 입력 장치로서의 역할을 동시에 수행한다.The display unit 14 may display information stored in the storage unit 13 including various function menus executed in the content providing terminal 10. The display unit 14 may display a list of content 30 to be registered under the control of the terminal controller 15. The display unit 15 may output a verification result and a registration completion message received from the content registration server 20 under the control of the terminal controller 15. In this case, an LCD (Liquid Crystal Display) or a touch screen may be used as the display unit 14. The touch screen simultaneously serves as a display device and an input device.

그리고 단말제어부(15)는 컨텐츠 제공 단말(10)의 전반적인 제어 동작을 수행하는 마이크로프로세서(microprocessor)이다. 단말제어부(15)는 프로파일링 및 분석 툴(40)을 이용하여 등록할 컨텐츠(30)를 분리 실행 대상 코드 블록(34)과 서비스용 컨텐츠(32)로 분리하고, 분리한 분리 실행 대상 코드 블록(34)과 서비스용 컨텐츠(32)를 컨텐츠 등록 서버(20)에 등록한다.The terminal controller 15 is a microprocessor that performs overall control operations of the content providing terminal 10. The terminal controller 15 separates the content 30 to be registered using the profiling and analysis tool 40 into a separate execution target code block 34 and a service content 32, and separates the separated execution target code block. 34 and the service content 32 are registered in the content registration server 20.

또한 단말제어부(15)는 컨텐츠(20)의 등록 과정에서 컨텐츠 등록 서버(20)로부터 피드백되는 분리 실행 대상 코드 블록(34)에 대한 검증 결과에 따른 재 프로파일링 및 분석을 수행한다. 즉 입력부(12)를 통하여 분석할 컨텐츠(30)에 대한 선택 신호가 입력되면, 단말제어부(15)는 저장부(13)에서 해당 컨텐츠(30)를 호출한다. 단말제어부(15)는 호출한 컨텐츠(30)에 대한 프로파일링 및 분석을 통하여 분리 실행 대상 코드 블록(34)을 추출하고, 추출한 분리 실행 대상 코드 블록(34)을 통신부(11)를 통하여 컨텐츠 등록 서버(20)로 전송한다. 컨텐츠 등록 서버(20)로부터 전송한 분리 실행 대상 코드 블록(34) 중 유효하지 않은 분리 실행 대상 코드 블록(34)이 포함되어 있다는 검증 실패 결과를 수신하면, 단말제어부(15)는 수신한 검증 실패 결과를 기반으로 호출한 컨텐츠(30)에 대한 재 프로파일링 및 분석을 통하여 다시 분리 실행 대상 코드 블록(34)을 추출하고, 추출한 분리 실행 대상 코드 블록(34)을 컨텐츠 등록 서버(20)로 재전송한다. 그리고 단말제어부(15)는 컨텐츠 등록 서버(20)로부터 전송한 분리 실행 대상 코드 블록(34)이 유효하다는 검증 통과 결과를 통신부(11)를 통하여 수신할 수 있다. 이때 단말제어부(15)는 수신한 검증 실패 결과 또는 검증 통과 결과를 표시부(14)를 통하여 출력할 수 있다.In addition, the terminal controller 15 performs re-profiling and analysis according to the verification result of the separation execution target code block 34 fed back from the content registration server 20 during the registration of the content 20. That is, when a selection signal for the content 30 to be analyzed is input through the input unit 12, the terminal controller 15 calls the corresponding content 30 from the storage unit 13. The terminal controller 15 extracts the separate execution target code block 34 through profiling and analysis of the called content 30 and registers the extracted separation execution target code block 34 through the communication unit 11. Send to server 20. Upon receiving the verification failure result that the invalid execution target code block 34 included in the separation execution target code block 34 transmitted from the content registration server 20 is received, the terminal controller 15 receives the verification failure received. Based on the results, the extracted execution target code block 34 is extracted again through re-profiling and analysis of the called content 30, and the extracted separation execution target code block 34 is retransmitted to the content registration server 20. do. In addition, the terminal controller 15 may receive a verification pass result indicating that the separation execution target code block 34 transmitted from the content registration server 20 is valid through the communication unit 11. In this case, the terminal controller 15 may output the received verification failure result or the verification pass result through the display unit 14.

이때 단말제어부(15)는 다음과 같이 프로파일링 및 분석 툴(40)을 실행할 수 있다. 즉 단말제어부(15)는 통신부(11)를 통하여 컨텐츠 등록 서버(20)에 접속하여 인증을 수행한다. 인증을 통과하면, 단말제어부(15)는 통신부(11)를 통하여 컨텐츠 등록 서버(20)로부터 액티브-엑스 론쳐(Active-X launcher)를 내려받아 액티브-엑스를 실행한다. 단말제어부(15)는 컨텐츠 등록 서버(20)로부터 내려받은 프로파일링 및 분석 툴(40)이 저장부(13)에 저장되어 있는 지를 확인한다. 확인 결과 없으면, 단말제어부(15)는 컨텐츠 등록 서버(20)로 프로파일링 및 분석 툴(40)을 요청하여 내려받는다. 확인 결과 있으면, 단말제어부(15)는 프로파일링 및 분석 툴(40)을 실행한다. 이때 액티브-엑스 론쳐에 의해 실행된 액티브-엑스는 컨텐츠 제공 단말(10)과 컨텐츠 등록 서버(20)를 연결하며, 컨텐츠 제공 단말(10)에서 실행되는 프로파일링 및 분석 툴(40)을 이용하여 분리한 분리 실행 대상 코드 블록(34)과 서비스용 컨텐츠(32)를 컨텐츠 등록 서버(20)에 등록할 수 있도록 해준다.In this case, the terminal controller 15 may execute the profiling and analysis tool 40 as follows. That is, the terminal controller 15 accesses the content registration server 20 through the communication unit 11 and performs authentication. If the authentication passes, the terminal controller 15 downloads an Active-X launcher from the content registration server 20 through the communication unit 11 and executes Active-X. The terminal controller 15 checks whether the profiling and analysis tool 40 downloaded from the content registration server 20 is stored in the storage unit 13. If there is no check result, the terminal controller 15 requests and downloads the profiling and analysis tool 40 to the content registration server 20. If there is a check result, the terminal controller 15 executes the profiling and analysis tool 40. In this case, the active-X executed by the active-X launcher connects the content providing terminal 10 and the content registration server 20 and uses the profiling and analysis tool 40 executed in the content providing terminal 10. The separated execution execution code block 34 and the content for service 32 can be registered in the content registration server 20.

프로파일링 및 분석 툴(40)은 컨텐츠 호출부(42), 베이식 블록 그룹 선정부(44), 추출 및 생성부(46)를 포함하여 구성된다. 컨텐츠 호출부(42)는 분석할 컨텐츠(30)를 호출한다. 베이식 블록 그룹 선정부(44)는 호출한 컨텐츠(30)의 코드 영역(31)에 대한 프로파일링 및 분석을 통하여 복수의 베이식 블록 그룹(37)을 선정한다. 그리고 추출 및 생성부(46)는 복수의 베이식 블록 그룹(37) 중에서 분리 실행 대상 코드 블록(34)을 추출하여 컨텐츠(30)의 코드 영역(31)에서 분리하고, 분리 실행 대상 코드 블록(34)이 추출된 코드 영역에 스터브 코드(36)를 삽입하여 서비스용 컨텐츠(32)를 생성한다. 그리고 추출 및 생성부(46)는 분리 실행 대상 코드 블록(34)과 서비스용 컨텐츠(32)를 컨텐츠 등록 서버(20)에 등록한다.The profiling and analysis tool 40 includes a content caller 42, a basic block group selector 44, and an extractor and generator 46. The content caller 42 calls the content 30 to be analyzed. The basic block group selector 44 selects a plurality of basic block groups 37 through profiling and analysis of the code area 31 of the called content 30. The extraction and generation unit 46 extracts the separation execution target code block 34 from the plurality of basic block groups 37, separates the separation target code block 34 from the code area 31 of the content 30, and the separation execution target code block 34. ) Inserts the stub code 36 into the extracted code area to generate the service content 32. The extraction and generation unit 46 registers the separation execution target code block 34 and the service content 32 in the content registration server 20.

컨텐츠 호출부(42)는 입력부(12)를 통하여 분석할 컨텐츠(30)에 대한 선택 신호가 입력되면, 저장부(13)에서 해당 컨텐츠(30)를 호출할 수 있다. 컨텐츠 호출부(42)는 등록할 컨텐츠(30)을 호출할 때, 등록할 컨텐츠(30)에 대한 보안 수준을 입력받아 설정할 수 있다. 즉 컨텐츠 호출부(42)는 등록할 컨텐츠(30)의 리스트를 표시부(14)에 표시할 수 있다. 컨텐츠 제공자는 입력부(12)를 통하여 리스트에서 등록할 컨텐츠(30)를 선택하고, 선택된 컨텐츠(30)에 대한 보안 수준을 선택하여 설정한다. 이때 컨텐츠 호출부(42)는 표시부(14)에 컨텐츠 제공자가 선택할 수 있는 보안 수준 설정 항목을 표시한다. 컨텐츠 제공자가 표시된 보안 수준 설정 항목 중에서 특정 보안 수준 설정 항목을 선택하면, 컨텐츠 호출부(42)는 선택된 보안 수준 설정 항목으로 등록할 컨텐츠(30)의 보안 수준을 설정한다.When the selection signal for the content 30 to be analyzed is input through the input unit 12, the content caller 42 may call the corresponding content 30 from the storage unit 13. When the content caller 42 calls the content 30 to be registered, the content caller 42 may receive and set a security level of the content 30 to be registered. That is, the content caller 42 may display a list of the content 30 to be registered on the display unit 14. The content provider selects the content 30 to be registered from the list through the input unit 12 and selects and sets a security level for the selected content 30. In this case, the content caller 42 displays a security level setting item that can be selected by the content provider on the display unit 14. When the content provider selects a specific security level setting item from the displayed security level setting items, the content calling unit 42 sets the security level of the content 30 to be registered as the selected security level setting item.

예컨대 보안 수준 설정 항목은 추출할 코드 블록 즉, 베이식 블록 그룹(37)의 호출 빈도, 베이식 블록 그룹(37)의 호출 위치, 호스트 단말(51)의 메모리 참조 빈도, 호스트 단말(51)의 OS API 참조 빈도, 저장장치(53)의 하드웨어 요소 중에 적어도 하나를 포함한다.For example, the security level setting item may include a code block to be extracted, that is, a frequency of calls of the basic block group 37, a location of calls of the basic block group 37, a memory reference frequency of the host terminal 51, and an OS API of the host terminal 51. Reference frequency, at least one of the hardware elements of storage 53.

베이식 블록 그룹(37)의 호출 빈도 항목은 프로파일링 및 분석에 의해 자동으로 추출할 분리 실행 대상 코드 블록(34)의 호출 빈도별 우선권(preference)을 컨텐츠 제공자가 설정하는 항목으로, 컨텐츠 제공자는 전체 컨텐츠(30)의 실행 중 몇 번이나 호출되는 가를 선택할 수 있는 항목이다. 이때 호출 빈도가 높을수록 해당 베이식 블록 그룹(37)이 중요하다는 의미가 되어 보안 효과는 높지만, 이는 저장장치(53)에 무리를 주어 전체 컨텐츠(30)의 실행 속도를 저하시킬 수 있다. 따라서 컨텐츠 제공자는 등록할 컨텐츠(30)의 보안 수준에 따라 적절한 호출 빈도를 설정하는 것이 바람직하다.The call frequency item of the basic block group 37 is an item in which the content provider sets a call frequency preference of the separated execution target code block 34 to be automatically extracted by profiling and analysis. It is an item that can select how many times it is called during execution of the content 30. In this case, the higher the frequency of the call, the more important the basic block group 37 is. Therefore, the security effect is high. However, this may impose a burden on the storage device 53 and reduce the execution speed of the entire content 30. Therefore, the content provider preferably sets the appropriate call frequency according to the security level of the content 30 to be registered.

베이식 블록 그룹(37)의 호출 위치 항목은 분리 실행 대상 코드 블록(34)의 선택에 있어 프로그램의 실행 초기에 불리는 베이식 블록 그룹(37)을 선택할 지, 특정 기능 실행 시에 불리는 베이식 블록 그룹(37)을 선택할 지 설정하는 항목이다.The call position item of the basic block group 37 selects the basic block group 37 called at the beginning of program execution in the selection of the separate execution target code block 34, or the basic block group 37 called at the time of executing a specific function. Select whether to select).

호스트 단말(51)의 메모리 참조 빈도 항목은 선택될 분리 실행 대상 코드 블록(34)이 얼마나 자주 호스트 단말(51)의 메모리를 참조하는 지를 설정하는 항목이다. 메모리 참조 빈도가 높을수록 호스트 단말(51)에 대한 의존성이 강하다는 의미이며, 이는 해당 분리 실행 대상 코드 블록(34)으로 인한 보안 효율이 높다는 의미가 된다. 다만 호스트 단말(51)의 메모리를 번번히 참조할 경우, 해당 컨텐츠(30)의 실행 속도를 저하시킬 수 있기 때문에, 컨텐츠 제공자는 등록할 컨텐츠(30)의 보안 수준에 따라 적절한 메모리 참조 빈도를 설정하는 것이 바람직하다.The memory reference frequency item of the host terminal 51 is an item that sets how often the separate execution target code block 34 to be selected refers to the memory of the host terminal 51. The higher the memory reference frequency, the stronger the dependency on the host terminal 51, which means that the security efficiency due to the separate execution target code block 34 is higher. However, if the memory of the host terminal 51 is referred to repeatedly, since the execution speed of the corresponding content 30 may be reduced, the content provider may set an appropriate memory reference frequency according to the security level of the content 30 to be registered. It is preferable.

호스트 단말(51)의 OS API 참조 빈도 항목은 선택될 분리 실행 대상 코드 블록(34)이 얼마나 자주 OS API를 참조하는 지를 설정하는 항목이다. OS API 참조 빈도가 높을수록 호스트 단말(51)에 대한 의존성이 강하다는 의미이며, 이는 해당 분리 실행 대상 코드 블록(34)으로 인한 보안 효율이 높다는 의미가 된다. 다만 호스트 단말(51)의 OS API를 번번히 참조할 경우, 해당 컨텐츠(30)의 실행 속도를 저하시킬 수 있기 때문에, 컨텐츠 제공자는 등록할 컨텐츠(30)의 보안 수준에 따라 적절한 OS API의 참조 빈도를 설정하는 것이 바람직하다.The OS API reference frequency item of the host terminal 51 is an item that sets how often the separated execution target code block 34 to be selected refers to the OS API. The higher the OS API reference frequency, the stronger the dependency on the host terminal 51, which means that the security efficiency due to the separate execution target code block 34 is higher. However, if the OS API of the host terminal 51 is repeatedly referred to, since the execution speed of the corresponding content 30 may be reduced, the content provider may refer to the appropriate OS API reference frequency according to the security level of the content 30 to be registered. It is preferable to set.

그리고 저장장치(53)의 하드웨어 요소 항목은 해당 컨텐츠(30)과 함께 사용될 저장장치(53)의 하드웨어적 폼 요소(form factor) 예컨대, 디램(DRAM), 랜드 플래쉬(NAND Flash) 또는 노아 플래쉬(NOR Flash)의 용량, 마이크로프로세서의 속도 등을 선택할 수 있는 항목이다. 저장장치(53)의 하드웨어 요소는 실제 분리 실행 대상 코드 블록(34)을 실행하여 출력값을 산출하는 데 있어 중요한 요소 중에 하나라 할 수 있다.The hardware element item of the storage device 53 may be a hardware form factor of the storage device 53 to be used together with the corresponding content 30, such as DRAM, NAND Flash, or Noah flash. NOR Flash) capacity and microprocessor speed can be selected. The hardware element of the storage device 53 may be one of important factors in executing the actual separate execution target code block 34 to calculate the output value.

한편 제1 실시예에서는 컨텐츠 제공자가 보안 수준을 직접 설정하는 예를 개시하였지만, 보안 수준은 디폴트로 설정될 수 있다. 제1 실시예에서는 등록할 컨텐츠(30)를 선택한 이후에 보안 수준을 설정하는 예를 개시하였지만, 보안 수준을 설정한 후 등록할 컨텐츠(30)를 선택할 수도 있다.Meanwhile, in the first embodiment, an example in which a content provider directly sets a security level is disclosed, but the security level may be set as a default. In the first embodiment, the example of setting the security level after selecting the content 30 to be registered is disclosed. However, the content 30 to be registered may be selected after setting the security level.

베이식 블록 그룹 선정부(44)는 기초 정보 수집부(44a) 및 정적 분석부(44b)를 포함한다. 기초 정보 수집부(44a)는 호출한 컨텐츠(30)에 대한 동적 프로파일링을 통하여 기초 정보를 수집한다. 정적 분석부(44b)는 수집한 기초 정보를 기반으로 컨텐츠(30)에 대한 정적 분석을 수행하여 컨텐츠(30)의 코드 영역(31)의 분석 범위를 확장하고, 이를 통하여 복수의 베이식 블록 그룹(37)을 선정한다.The basic block group selecting unit 44 includes a basic information collecting unit 44a and a static analyzing unit 44b. The basic information collecting unit 44a collects basic information through dynamic profiling of the called content 30. The static analysis unit 44b expands the analysis range of the code area 31 of the content 30 by performing a static analysis on the content 30 based on the collected basic information, and through this, a plurality of basic block groups ( 37).

전술된 바와 같이, 컨텐츠(30)는 복수 개의 파일, 예컨대 운영체제에서 제공하는 API, 개발사에서 제공하는 API 또는 DLL과 같은 파일을 포함한다. 따라서 컨텐츠(30) 중 분석할 부분을 설정해야 하고, 컨텐츠(30) 중 이미 공개되어 있는 API에서 선정된 베이식 블록 그룹을 분리 실행 대상 코드 블록(34)으로 선출하는 것은 바람직하지 않기 때문에, 컨텐츠(30)의 분석할 부분을 코드 영역(31)으로 제한할 필요가 있다.As described above, the content 30 includes a plurality of files, for example, a file such as an API provided by an operating system, an API provided by a developer, or a DLL. Therefore, since the part to be analyzed in the content 30 must be set, and it is not preferable to select the basic block group selected by the API that is already published among the content 30 as the separate execution target code block 34, the content ( It is necessary to limit the portion to be analyzed in 30 to the code region 31.

기초 정보는 컨텐츠(30)에 대한 런-타임(run-time) 동안 동적 프로파일링을 통하여 코드 영역(31)에 대해서 수집한 정보이다. 즉 동적 프로파일링은 입력, 출력 및 레지스터(register)에 할당된 값들, 그리고 컨텐츠(30)의 흐름을 코드로 추적할 수 있기 때문에, 동적 프로파일링은 분석 범위를 확장하는데 유효하면서 정확한 기초 정보를 수집할 수 있다. 이때 수집된 기초 정보는 베이식 블록 그룹(37)의 시작 주소, 베이식 블록 그룹(37)의 종료 주소, 베이식 블록 그룹(37)의 호출 횟수, 베이식 블록 그룹(37)의 크기 및 베이식 블록 그룹(37) 내의 실수 연산 유무에 대한 정보를 포함한다. 특히 수집된 기초 정보는 브랜치 어드레스(branch address), 점프 어드레스(jump address), 콜 어드레스(call address) 및 RET의 간접 주소(indirect address) 중에 적어도 하나의 간접 주소를 포함한다. 간접 주소에는 베이식 블록 그룹(37)의 시작 주소, 베이식 블록 그룹(37)의 크기, 브랜치 태이큰(branch taken) 주소에 대한 정보를 포함한다. 또한 수집된 기초 정보는 설정된 보안 수준 설정 항목에 따라서, 베이식 블록 그룹(37) 내에서 호스트 단말의 메모리를 참조하는 회수, 베이식 블록 그룹(37) 내에서 호스트 단말의 OS API를 호출하는 회수, 베이식 블록 그룹(37)의 실행 시간, 베이식 블록 그룹(37) 내에서 수행되는 전체 명령어 개수, 베이식 블록 그룹(37)의 실행을 위해 전달되는 파라미터 개수 및 타입, 베이식 블록 그룹(37)의 실행 후 반환되는 값의 종류 중에 적어도 하나를 더 포함할 수 있다.The basic information is information collected about the code region 31 through dynamic profiling during run-time for the content 30. In other words, dynamic profiling can track the values assigned to inputs, outputs and registers, and the flow of content 30 in code, so that dynamic profiling can be used to expand the scope of analysis while collecting accurate and accurate basic information. can do. The collected basic information includes the start address of the basic block group 37, the end address of the basic block group 37, the number of calls of the basic block group 37, the size of the basic block group 37, and the basic block group 37. It contains information about the presence or absence of a real operation in). In particular, the collected basic information includes at least one indirect address among a branch address, a jump address, a call address, and an indirect address of the RET. The indirect address includes information about the start address of the basic block group 37, the size of the basic block group 37, and the branch taken address. In addition, the collected basic information is based on the set security level setting item, the number of times of referring to the memory of the host terminal in the basic block group 37, the number of times of calling the OS API of the host terminal in the basic block group 37, basic The execution time of the block group 37, the total number of instructions executed in the basic block group 37, the number and type of parameters passed for execution of the basic block group 37, the return after the execution of the basic block group 37 It may further include at least one of the kind of the value.

정적 분석부(44b)는 코드 영역(31)에 대해서 수집한 기초 정보를 기반으로 컨텐츠(30)의 코드 영역(31)에 대한 정적 분석을 수행한다. 즉 정적 분석부(44b)는 컨텐츠(30) 중 공개된 API와 관련된 부분을 분석 대상으로 선정하는 것이 바람직하지 않기 때문에, 해당 부분을 제외하고 코드 영역(31)에 대한 정적 분석을 수행한다. 이때 정적 분석부(44b)는 수집한 기초 정보 중에서 컨텐츠(30) 중 공개된 API와 관련된 기초 정보를 제외한 기초 정보를 기반으로 정적 분석을 수행할 수도 있다.The static analyzer 44b performs a static analysis on the code region 31 of the content 30 based on the basic information collected about the code region 31. That is, since the static analysis unit 44b does not desirably select a part related to the published API of the content 30 as an analysis target, the static analysis unit 44b performs the static analysis of the code region 31 except for the corresponding part. In this case, the static analyzer 44b may perform static analysis based on the basic information other than the basic information related to the published API among the content 30 among the collected basic information.

일반적인 정적 분석은 컨텐츠(30)의 코드 영역(31)의 시작점을 찾고, 찾은 시작점에서부터 컨트롤 플로우(control flow)를 따라서 분석하는 방법이다. 따라서 정적 분석은 런-타임 상에서 취득할 수 있는 정보가 없기 때문에, 바이너리 코드 중에 확실한 값이 표기된 경로로의 이동만 가능하다. 특히 레지스터의 값을 비롯한 Heap 영역의 데이터, 외부 DLL로의 이동 등에 제한이 있다. 또한 컨트롤 플로우를 따라 가는 것 또한 간접 정보의 부재로 상당한 제한이 있다. 이로 인해 일반적인 정적 분석은 다양한 시작점을 임의대로 파악하여 접근할 수 있지만 큰 의미를 갖기 힘들기 때문에, 분석 범위가 좁을 수밖에 없다.A general static analysis is a method of finding the starting point of the code region 31 of the content 30 and analyzing the control flow from the found starting point. Therefore, static analysis does not have information that can be obtained at run-time, so it is only possible to move to a path marked with a certain value in binary code. In particular, there are restrictions such as register data, heap area data, and movement to external DLL. Also following the control flow is a significant limitation due to the lack of indirect information. Because of this, general static analysis can be approached by grasping various starting points arbitrarily, but it is hard to have big meaning, so the scope of analysis is narrow.

하지만 정적 분석부(44b)는 동적 프로파일링을 통하여 수집한 기초 정보를 기반으로 정적 분석을 수행하기 때문에, 컨텐츠(30)의 코드 영역(31)의 분석 범위를 확장할 수 있다. 즉 정적 분석부(44b)는 수집한 기초 정보 중 간접 주소를 컨트롤 플로우 상에 대입함으로써, 컨텐츠(30)의 코드 영역(31)의 분석 범위를 확장하여 단독으로 동적 프로파일링을 수행하거나 정적 분석을 수행하는 것에 비하여 더 많은 유효한 베이식 블록 그룹(37)을 선정할 수 있다.However, since the static analyzer 44b performs the static analysis based on the basic information collected through the dynamic profiling, the analysis range of the code region 31 of the content 30 may be extended. That is, the static analyzer 44b substitutes an indirect address among the collected basic information on the control flow, thereby extending the analysis range of the code region 31 of the content 30 to perform dynamic profiling alone or to perform static analysis. More valid basic block groups 37 can be selected for performance.

이와 같이 간접 주소의 대입을 통하여 컨텐츠(30)에 대한 분석 범위를 확장할 수 있기 때문에, 분석하는 컨텐츠(30)의 특성에 따라 차이는 있겠지만 단독으로 동적 프로파일링 또는 정적 분석을 수행하는 것에 비교하여 분석 범위를 수십배 이상 높일 수 있다. 예컨대 Alzip.exe((주)이스트소프트의 솔루션)와 같은 압축 실행프로그램에 대해서 정적 분석만으로는 1% 미만의 분석 범위를 보이지만, 동적 프로파일링을 통해 수집한 기초 정보를 이용하여 정적 분석을 수행할 경우 27% 이상의 분석 범위를 보이는 것을 확인할 수 있다. 즉 컨텐츠(30)의 코드 영역(31)에 존재하는 간접 주소가 상당히 많고, 간접 주소를 이용하여 분석 범위를 확장할 수 있다는 것은 다양한 출력, 즉 베이식 블록 그룹(37)을 이끌어 낼 수 있음을 의미한다.Since the scope of analysis of the content 30 can be extended by assigning an indirect address as described above, although there may be differences depending on the characteristics of the content 30 to be analyzed, compared to performing dynamic profiling or static analysis alone. The range of analysis can be increased by several orders of magnitude. For example, if the static analysis alone shows a compression range of less than 1% for compressed executable programs such as Alzip.exe (Eastsoft's solution), but static analysis is performed using the basic information collected through dynamic profiling. It can be seen that the analysis range is more than 27%. That is, a large number of indirect addresses present in the code area 31 of the content 30, and the possibility of extending the analysis range by using the indirect addresses means that various outputs, that is, the basic block group 37, can be derived. do.

한편 베이식 블록 그룹(37)의 크기는 RET와 같이 1Byte에서 수십 내지 수백Byte가 될 수 있기 때문에, 베이식 블록 그룹(37)의 크기가 크면 클수록 내부 진입의 가능성은 확률적으로 커질 수 밖에 없다. 또한 컨텐츠(30)의 모든 명령어를 실행 이전에 검사하고 분석할 수 있다면 좀 더 정확하고 세밀한 베이식 블록 그룹(37)을 정의할 수 있을 것이다. 하지만 이것도 간접 주소의 존재로 인해 베이식 블록 그룹(37)을 완벽하게 정의할 수는 없다.On the other hand, since the size of the basic block group 37 may be tens to hundreds of bytes in 1 byte, such as RET, the larger the size of the basic block group 37 is, the greater the probability of internal entry is. In addition, if all instructions of the content 30 can be inspected and analyzed before execution, a more accurate and detailed basic block group 37 can be defined. However, this also cannot completely define the basic block group 37 due to the existence of indirect addresses.

따라서 시작점을 통한 제어 신호의 진입 및 베이식 블록(35) 간의 제어 신호의 이동은 허용하지만, 시작점을 제외한 베이식 블록(35)으로의 제어 신호의 진입이 없는 베이식 블록 그룹(37)을 컨텐츠(30)에서 추출하기 위해서, 정적 분석부(44b)는 다음과 같은 정의(규칙)을 이용하여 컨텐츠(30)의 코드 영역(31)에서 베이식 블록 그룹(37)을 선정할 수 있다.Therefore, the basic block group 37 which allows the entry of the control signal through the starting point and the movement of the control signal between the basic block 35 but does not enter the control signal to the basic block 35 except for the starting point is included in the content 30. In order to extract from, the static analyzer 44b may select the basic block group 37 in the code area 31 of the content 30 by using the following definition (rule).

이때 베이식 블록 그룹(37)에 대한 정의는 다음과 같다. 먼저 한 번 정의한 베이식 블록 그룹(37)을 고정적으로 정의하지 않고, 베이식 블록 그룹(37)의 내부로 진입하는 제어 신호의 유무에 따라 베이식 블록 그룹(37)을 분리하여 재정의 한다.In this case, the definition of the basic block group 37 is as follows. First, the basic block group 37 defined once is not fixedly defined, and the basic block group 37 is separated and redefined according to the presence or absence of a control signal entering into the basic block group 37.

즉 도 3, 도 4 및 도 9를 참조하면, 정적 분석부(44b)는 컨텐츠(30)의 코드 영역(31)에서 서로 연관된 복수의 베이식 블록(35)을 포함하는 베이식 블록 그룹(37)을 정의할 수 있다. 이때 정의된 베이식 블록 그룹(37)은 분석 중 현재까지 시작점을 제외한 베이식 블록(35b)으로의 제어 신호의 진입이 없는 베이식 블록(35)의 모임이라 할 수 있다.3, 4, and 9, the static analyzer 44b includes a basic block group 37 including a plurality of basic blocks 35 associated with each other in the code area 31 of the content 30. Can be defined In this case, the defined basic block group 37 may be referred to as a collection of basic blocks 35 without entering a control signal to the basic block 35b excluding the starting point.

여기서 베이식 블록 그룹(37)의 시작점에 위치하는 베이식 블록(35a)을 통한 제어 신호가 입력되는 경우, 정적 분석부(44b)는 해당 베이식 블록 그룹(37)에 대한 재정의는 수행하지 않는다. 또한 베이식 블록 그룹(37)에 포함된 베이식 블록(35) 간에 제어 신호가 이동하는 경우에도, 정적 분석부(44b)는 해당 베이식 블록 그룹(37)에 대한 재정의는 수행하지 않는다. 즉 전술된 두 경우 정적 분석부(44b)는 베이식 블록 그룹(37)은 현재의 정의 상태를 유지한다.Here, when a control signal through the basic block 35a positioned at the start of the basic block group 37 is input, the static analyzer 44b does not redefine the basic block group 37. In addition, even when the control signal is moved between the basic blocks 35 included in the basic block group 37, the static analyzer 44b does not redefine the basic block group 37. That is, in the above two cases, the static analyzer 44b maintains the basic block group 37 in the current defined state.

하지만 도 3, 도 4 및 도 10에 도시된 바와 같이, 베이식 블록 그룹(37)의 시작점에 위치하는 베이식 블록(35a)을 제외한 다른 베이식 블록(35b)으로 제어 신호가 입력될 경우, 정적 분석부(44b)는 해당 베이식 블록 그룹(37)을 제어 신호가 입력되는 베이식 블록(35b)을 기준으로 분할하여 재정의 한다. 즉 베이식 블록 그룹(37)의 내부로 진입하는 제어 신호가 있으면, 정적 분석부(44b)는 제어 신호의 명령어 주소(instruction address)를 기준으로 베이식 블록 그룹(37)을 분할하여 재정의 한다.However, as shown in FIGS. 3, 4, and 10, when the control signal is input to the other basic block 35b except for the basic block 35a positioned at the start of the basic block group 37, the static analyzer 44b divides the basic block group 37 based on the basic block 35b to which the control signal is input and redefines it. That is, if there is a control signal entering the basic block group 37, the static analyzer 44b divides and redefines the basic block group 37 based on an instruction address of the control signal.

이와 같이 베이식 블록 그룹(37)을 재정의 함으로써, 분할된 베이식 블록 그룹(37a,37b)이 내부 진입이 없는 베이식 블록 그룹으로 성립할 확률을 높일 수 있다.By redefining the basic block group 37 in this manner, it is possible to increase the probability that the divided basic block groups 37a and 37b are established as basic block groups without internal entry.

이때 재정의 대상이 되는 베이식 블록 그룹(37)은 제어 신호의 명령어 주소를 기준으로 이전의 제1 베이식 블록 그룹(37a)과, 제어 신호의 명령어 주소를 포함하는 이후의 제2 베이식 블록 그룹(37b)으로 재정의 된다. 제1 베이식 블록 그룹(37a)의 브랜치 주소(branch address)는 제2 베이식 블록 그룹(37b)의 시작점으로의 진입을 위한 다음 명령어 주소(next instruction address)가 된다.In this case, the basic block group 37 to be redefined has a first basic block group 37a based on the command address of the control signal and a second basic block group 37b including the command address of the control signal. Is redefined to). The branch address of the first basic block group 37a becomes the next instruction address for entry to the start point of the second basic block group 37b.

그리고 이와 같은 재정의 단계를 반복함으로써, 최종적으로 재정의된 베이식 블록 그룹(37)은 단일 입력 및 단일 출력의 속성과, 외부에서 내부로의 진입을 허용하지 않는 속성을 갖는 복수의 베이식 블록(35)을 포함하는 베이식 블록 그룹(37)으로 정의될 수 있다.And by repeating this redefinition step, the finally redefined basic block group 37 is a plurality of basic blocks 35 having the properties of a single input and a single output and the property of not allowing entry from outside to inside. It may be defined as a basic block group 37 including a.

추출 및 생성부(46)는 선정된 복수의 베이식 블록 그룹(37) 중에서 설정된 보안 수준에 따라 베이식 블록 그룹(37)을 분리 실행 대상 코드 블록(34)으로 추출할 수 있다. 추출 및 생성부(46)는 설정된 보안 수준에 따라 분리 실행 대상 코드 블록(34)을 추출할 수 있다. 예컨대 컨텐츠 제공자는 베이식 블록 그룹(37)의 호출 빈도, 베이식 블록 그룹(37)의 호출 위치, 호스트 단말(51)의 메모리 참조 빈도, 호스트 단말(51)의 OS API 참조 빈도, 저장장치(53)의 하드웨어 요소 중에 적어도 하나에 가중치를 부여하여 보안 수준을 설정하면, 추출 및 생성부(46)는 설정된 보안 수준에 따라 분리 실행 대상 코드 블록(34)을 선출할 수 있다. 즉 컨텐츠 제공자는 컨텐츠(30)의 종류, 가치 등을 고려하여 사용자 레벨에서 보안 수준을 설정하고, 이를 통하여 컨텐츠(30)의 복제 방지 효과를 획득할 수 있다.The extraction and generation unit 46 may extract the basic block group 37 as a separate execution target code block 34 according to a security level set among the plurality of selected basic block groups 37. The extraction and generation unit 46 may extract the separation execution target code block 34 according to the set security level. For example, the content provider may include a call frequency of the basic block group 37, a call position of the basic block group 37, a memory reference frequency of the host terminal 51, an OS API reference frequency of the host terminal 51, and a storage device 53. When the security level is set by assigning a weight to at least one of the hardware elements, the extraction and generation unit 46 may select the separation target code block 34 according to the set security level. That is, the content provider may set a security level at the user level in consideration of the type, value, and the like of the content 30, and thereby obtain a copy protection effect of the content 30.

추출 및 생성부(46)는 분리 실행 대상 코드 블록(34)이 추출된 코드 영역에 스터브 코드(36)를 삽입하여 서비스용 컨텐츠(32)를 생성한다. 이때 스터브 코드(36)는 컨텐츠(30)에서 추출된 코드 영역과, 추출된 분리 실행 대상 코드 블록(34)을 연결한다.The extraction and generation unit 46 inserts the stub code 36 into the code region from which the separate execution target code block 34 is extracted to generate the service content 32. At this time, the stub code 36 connects the code region extracted from the content 30 with the extracted separation target code block 34.

또한 추출 및 생성부(46)는 컨텐츠(30)에서 추출한 분리 실행 대상 코드 블록(34)과, 분리 실행 대상 코드 블록(34)이 추출된 코드 영역에 스터브 코드(36)가 삽입된 서비스용 컨텐츠(32)로 분할하여 저장부(13)에 저장할 수 있다.In addition, the extraction and generation unit 46 is a content for the service in which the stub code 36 is inserted into the separated execution target code block 34 extracted from the content 30 and the code region from which the separate execution target code block 34 is extracted. The data may be divided into 32 and stored in the storage unit 13.

이와 같이 추출 및 생성부(46)에서 추출된 분리 실행 대상 코드 블록(34)은 시작점에 위치하는 베이식 블록(35)을 통한 제어 신호가 입력되는 경우, 해당 제어 신호의 입력을 허용한다. 분리 실행 대상 코드 블록(34)은 시작점을 통한 제어 신호의 입력에 따른 베이식 블록(35) 간의 제어 신호의 이동을 허용한다. 또한 분리 실행 대상 코드 블록(34)은 시작점을 제외한 베이식 블록(35)으로의 제어 신호의 진입이 없는 복수의 베이식 블록(35)을 포함한다. 바꾸어 말하면 분리 실행 대상 코드 블록(34)은 시작점을 제외한 베이식 블록(35)으로의 제어 신호의 진입을 허용하는 않는 복수의 베이식 블록(35)을 포함한다.As described above, the separation execution target code block 34 extracted by the extraction and generation unit 46 allows the input of the control signal when the control signal is input through the basic block 35 positioned at the start point. The separate execution target code block 34 allows the movement of the control signal between the basic blocks 35 according to the input of the control signal through the start point. The separate execution target code block 34 also includes a plurality of basic blocks 35 without entry of control signals to the basic block 35 except for the start point. In other words, the separated execution code block 34 includes a plurality of basic blocks 35 which do not allow entry of the control signal to the basic block 35 except for the start point.

그리고 추출 및 생성부(46)는 분리 실행 대상 코드 블록(34)과 서비스용 컨텐츠(32)를 컨텐츠 등록 서버(20)에 전송하여 등록한다. 이때 추출 및 생성부(46)는 등록할 컨텐츠(30)에 대한 등록 정보를 함께 컨텐츠 등록 서버(20)에 전송하여 등록한다. 예컨대 컨텐츠의 등록 정보는 제목, Mime 타입, 설명서, 컨텐츠 제공자 이름, 과금 정보 중에 적어도 하나를 포함한다.The extraction and generation unit 46 transmits the separation execution target code block 34 and the service content 32 to the content registration server 20 to register. At this time, the extraction and generation unit 46 transmits and registers the registration information for the content 30 to be registered to the content registration server 20 together. For example, the registration information of the content includes at least one of a title, a Mime type, a description, a content provider name, and billing information.

또한 프로파일링 및 분석 툴(40)은 피드백을 통해 전달 받은 검증 실패 결과를 필터링 리스트에 추가하여 해당 코드 블록(32)을 블랙 리스트(black list)에 올려서 선정 대상에서 배제시키고, 재 프로파일링 및 분석을 수행하여 새로운 분리 실행 대상 코드 블록(34)을 추출하여 컨텐츠 등록 서버(20)로 재전송한다.In addition, the profiling and analysis tool 40 adds the verification failure result received through the feedback to the filtering list, puts the corresponding code block 32 on the black list, excludes it from the selection, and re-profiles and analyzes it. Next, the new separation execution target code block 34 is extracted and retransmitted to the content registration server 20.

단말제어부(15)는 컨텐츠 등록 서버(20)로부터 등록을 요청한 컨텐츠(30)에 대한 등록 완료 메시지를 수신하여 표시부(14)에 출력한다. 이때 등록 완료 메시지는 검증 통과 결과에 대한 정보를 포함할 수 있다.The terminal controller 15 receives a registration completion message for the content 30 requesting registration from the content registration server 20 and outputs it to the display unit 14. In this case, the registration completion message may include information on the verification pass result.

이와 같은 제1 실시예에 따른 분리 실행 대상 코드 블록의 검증 시스템의 컨텐츠 등록 서버(20)에 대해서 도 1 및 도 6을 참조하여 구체적으로 설명하면 다음과 같다. 여기서 도 6은 도 1의 컨텐츠 등록 서버(20)의 구성을 보여주는 블록도이다.The content registration server 20 of the verification system for the separation execution target code block according to the first embodiment will be described in detail with reference to FIGS. 1 and 6 as follows. 6 is a block diagram showing the configuration of the content registration server 20 of FIG.

제1 실시예에 따른 컨텐츠 등록 서버(20)는 송수신부(21), 데이터베이스부(23) 및 서버제어부(25)를 포함하여 구성된다.The content registration server 20 according to the first embodiment includes a transceiver 21, a database 23, and a server controller 25.

송수신부(21)는 네트워크(55)를 통하여 컨텐츠 제공 단말(10)와 통신을 수행한다. 송수신부(21)는 컨텐츠 제공 단말(10)로부터 수신한 분리 실행 대상 코드 블록(34) 및 서비스용 컨텐츠(32)을 서버제어부(25)로 전달한다. 송수신부(21)는 서버제어부(25)의 제어에 따라 분리 실행 대상 코드 블록(34)에 대한 검증 결과를 컨텐츠 제공 단말(10)로 전송한다. 그리고 송수신부(1)는 서버제어부(25)의 제어에 따라 등록 요청한 컨텐츠(30)에 대한 등록 완료 메시지를 컨텐츠 제공 단말(10)로 전송한다.The transceiver 21 communicates with the content providing terminal 10 through the network 55. The transceiver 21 transmits the separation execution target code block 34 and the service content 32 received from the content providing terminal 10 to the server controller 25. The transmitter / receiver 21 transmits the verification result of the separation execution target code block 34 to the content providing terminal 10 under the control of the server controller 25. The transceiver 1 transmits a registration completion message for the content 30 requested to be registered under the control of the server controller 25 to the content providing terminal 10.

데이터베이스부(23)는 프로파일링 및 분석 툴(40)과, 컨텐츠 제공 단말(10)이 등록 요청한 컨텐츠(30)의 관련 정보를 저장한다. 컨텐츠(30)의 관련 정보는 분리 실행 대상 코드 블록(34)을 변환한 저장장치용 코드 블록(27), 서비스용 컨텐츠(32) 및 컨텐츠(30)의 등록 정보(39)를 포함하며, 분리 실행 대상 코드 블록(34)을 더 포함할 수 있다. 예컨대 컨텐츠(30)의 등록 정보(39)는 제목, Mime 타입, 설명서, 컨텐츠 제공자 이름, 과금 정보 중에 적어도 하나를 포함한다.The database unit 23 stores the profiling and analysis tool 40 and related information of the content 30 requested by the content providing terminal 10 to register. The related information of the content 30 includes a code block 27 for a storage device in which the separate execution target code block 34 is converted, a service content 32, and a registration information 39 of the content 30. The execution target code block 34 may further be included. For example, the registration information 39 of the content 30 includes at least one of a title, a Mime type, a description, a content provider name, and billing information.

이때 분리 실행 대상 코드 블록(34)은 호스트 단말(51)에서 실행되는 컨텐츠(30)에서 추출된 코드 블록이다. 예컨대 분리 실행 대상 코드 블록(34)은 x86 또는 x64용 컨텐츠(30)의 코드 영역에서 추출된 코드 블록일 수 있다. 따라서 분리 실행 대상 코드 블록(34)은 저장장치(53)에 사용될 수 있는 코드 형식으로 변환되며, 이를 저장장치용 코드 블록(27)이라 한다. 예컨대 저장장치(53)가 스마트카드인 경우, 분리 실행 대상 코드 블록(34)은 Java Byte 코드 블록 또는 ARM용 코드 블록으로 변환된다. 변환된 코드 블록은 RO(right object) 또는 애플릿(applet)에 포함되어 스마트카드에 제공될 수 있다.In this case, the separation execution target code block 34 is a code block extracted from the content 30 executed in the host terminal 51. For example, the separated execution target code block 34 may be a code block extracted from a code area of the content 30 for x86 or x64. Therefore, the separated execution target code block 34 is converted into a code format that can be used in the storage device 53, which is called a code block 27 for storage device. For example, when the storage device 53 is a smart card, the separate execution target code block 34 is converted into a Java Byte code block or an ARM code block. The converted code block may be included in a right object (RO) or an applet and provided to the smart card.

그리고 서버제어부(25)는 컨텐츠 등록 서버(20)의 전반적인 제어 동작을 수행한다. 서버제어부(25)는 네트워크(55)를 통한 컨텐츠 제공자의 요청에 따라 컨텐츠 제공 단말(10)로부터 컨텐츠(30)의 분리 실행 대상 코드 블록(34) 및 서비스용 컨텐츠(32)를 수신하여 등록한다. 특히 서버제어부(25)는 컨텐츠 제공 단말(10)로부터 수신한 분리 실행 대상 코드 블록(34)에 대해 검증하고, 그 검증 결과를 컨텐츠 제공 단말(10)로 피드백하여 안정적인 분리 실행 기반의 컨텐츠(30) 실행 환경을 제공할 수 있는 분리 실행 대상 코드 블록(34)이 추출될 수 있도록 안내한다. 즉 서버제어부(25)는 송수신부(21)를 통하여 컨텐츠 제공 단말(10)로부터 등록할 컨텐츠(30)에 대한 프로파일링 및 분석을 통하여 추출된 분리 실행 대상 코드 블록(34)을 수신한다. 서버제어부(25)는 수신한 분리 실행 대상 코드 블록(34)을 실제 저장장치(53)의 실행 환경에 대응하는 테스트 환경에서 실행하여 유효성을 검증한다. 검증 결과 유효하지 않은 분리 실행 대상 코드 블록(34)이 검출된 경우, 서버제어부(25)는 컨텐츠 제공 단말(10)로 검증 실패 결과를 피드백한다. 검증 결과 유효한 경우, 서버제어부(25)는 분리 실행 대상 코드 블록(34)을 저장장치용 코드 블록(27)으로 변환한다. 그리고 서버제어부(25)는 변환된 저장장치용 코드 블록(27)과, 서비스용 컨텐츠(32)를 데이터베이스부(23)에 등록한다. 이때 검증 결과 유효한 경우, 서버제어부(25)는 검증 통과 결과를 컨텐츠 제공 단말(10)로 피드백할 수 있다. 또한 등록 요청한 컨텐츠(30)에 대한 등록을 완료한 이후에, 서버 제어부(25)는 등록 완료 메시지를 컨텐츠 제공 단말(10)로 전송할 수 있다.The server controller 25 performs an overall control operation of the content registration server 20. The server controller 25 receives and registers a separate execution target code block 34 of the content 30 and a service content 32 from the content providing terminal 10 according to a request of the content provider through the network 55. . In particular, the server controller 25 verifies the separation execution target code block 34 received from the content providing terminal 10, feeds back the verification result to the content providing terminal 10, and provides stable separation execution based content 30. The separate execution target code block 34 that can provide the execution environment is guided to be extracted. That is, the server controller 25 receives the separated execution target code block 34 extracted through profiling and analysis of the content 30 to be registered from the content providing terminal 10 through the transceiver 21. The server controller 25 executes the received separate execution target code block 34 in a test environment corresponding to the execution environment of the actual storage device 53 to verify validity. When the invalid execution target code block 34 is detected as a result of the verification, the server controller 25 feeds back a verification failure result to the content providing terminal 10. If the verification result is valid, the server controller 25 converts the separate execution target code block 34 to the storage code block 27. The server control unit 25 registers the converted storage device code block 27 and the service content 32 in the database unit 23. In this case, if the verification result is valid, the server controller 25 may feed back the verification pass result to the content providing terminal 10. In addition, after completing the registration for the content requested to be registered 30, the server controller 25 may transmit a registration completion message to the content providing terminal 10.

서버제어부(25)는 다음과 같은 검증 항목을 기준으로 분리 실행 대상 코드 블록(34)에 대한 유효성을 검증할 수 있다. 이때 검증 항목은 Floating Point Instruction 유무, SIMD Instruction Set 유무, Initial Context에 포함된 메모리 범위가 임계 용량을 초과하는 지의 유무, 분리 실행 대상 코드 블록(34) 내에 장시간 반복하는 루프의 존재 유무, 분리 실행 대상 코드 블록(34) 내에 데이터가 존재하는 지의 유무 중에 적어도 하나를 포함한다.The server controller 25 may verify the validity of the separate execution target code block 34 based on the following verification item. At this time, the verification items include: Floating Point Instruction, SIMD Instruction Set, whether the memory range included in the Initial Context exceeds the threshold capacity, the existence of a loop that repeats for a long time in the separate execution target code block 34, and the separation execution target. It includes at least one of the presence or absence of data in the code block 34.

1. Floating Point Instruction 유무1.Presence of Floating Point Instruction

x86 Floating Point Instruction은 ARM용 Floating Point Instruction으로 변환하기 용이하지 않기 때문이다. 이유는 x86 Floating Point Instruction은 해석이 용이하지 않고, ARM용 Floating Point Instruction으로의 1:1 매칭되는 Instruction이 드물기 때문이다. 또한 이러한 변환 과정에서 발생할 수 있는 Floating Point Value Loss를 보완해주어야 하는데 이의 정확한 값 파악에 어려움이 존재하기 때문이다.This is because x86 floating point instruction is not easy to convert to floating point instruction for ARM. The reason is that x86 floating point instruction is not easy to interpret, and there is rarely 1: 1 instruction to ARM floating point instruction. In addition, it is necessary to compensate for floating point value loss that may occur in the conversion process, because it is difficult to determine the exact value.

2. SIMD(MMX, SSE, SSE2, 3DNow!) Instruction Set 유무2.Presence of SIMD (MMX, SSE, SSE2, 3DNow!) Instruction Set

SIMD Instruction Set은 PentiumIII 프로세서에서부터 Vector 프로세서 및 Array 프로세서를 지원하기 위해 추가된 Single Instruction Multiple Data를 지원하는 Instruction Set이다. 이는 대용량의 데이터를 효율적으로 접근하게 지원하고 동일한 작업의 성능을 높이게 된다. 이러한 Instruction Set을 ARM용으로 변환하기 위해서는 ARM에서 이에 대응하는 Instruction이 제공되어야 하는데, 현재로써는 여러 단계의 복잡한 변환 과정과 동일한 값의 대응이 용이하지 않다.The SIMD Instruction Set is an Instruction Set that supports Single Instruction Multiple Data added to support the Pentium III processor, the Vector processor, and the Array processor. This supports efficient access to large amounts of data and increases the performance of the same tasks. In order to convert such instruction set for ARM, corresponding instruction should be provided in ARM. Currently, it is not easy to cope with the same value as the complicated conversion process of several steps.

3. Initial Context에 포함된 메모리 범위가 임계 용량을 초과하는 지의 유무3. Whether the memory range included in the Initial Context exceeds the threshold capacity

호스트 단말(51)에서 컨텐츠(30)를 실행시 저장장치(53)에서 수행되는 분리 실행 대상 코드 블록(34)이 참조하는 메모리에 대한 데이터를 전달하여 컨텐츠(30)의 실행 중 호스트 단말(51)과의 통신 오버헤드를 줄이고자 한다. 이때 분리 실행 대상 코드 블록(34)이 참조하는 메모리 영역이 넓어지면 Initial Context의 전달 데이터 양이 커짐으로 저장장치(53)에서 저장이 불가능한 경우가 발생한다. 그렇기 때문에 분리 실행 대상 코드 블록(34)의 메모리 참조 영역을 확인하여 이를 일정 범위 내로 제한함이 필요하다.When the content terminal 30 is executed by the host terminal 51, data about the memory referred to by the separate execution target code block 34 performed by the storage device 53 is transferred to the host terminal 51 during execution of the content 30. To reduce the communication overhead. In this case, when the memory area referred to by the separation execution target code block 34 becomes wider, the storage 53 may not be able to store the data due to the amount of data transferred in the Initial Context. Therefore, it is necessary to check the memory reference area of the separated execution target code block 34 and limit it to a certain range.

4. 분리 실행 대상 코드 블록 내의 장시간 반복하는 루프의 존재 유무4. The existence of long loops in the code block

사용자는 컨텐츠(30)을 실행시 보안으로 인한 어떠한 성능저하를 느끼지 않아야 한다. 하지만 추출한 분리 실행 대상 코드 블록(30)이 자체적으로 루프를 돌면서 장시간 호스트 단말의 제어를 빼앗는 경우가 발생하면, 컨텐츠(30)의 정체현상이 발생하여 사용자의 프로그램 사용에 어려움을 느낄 수 있으므로 이러한 루프를 발견하여 패드백하는 루틴이 필요하다.The user should not feel any performance degradation due to security when running the content 30. However, if the extracted execution target code block 30 takes its own loop while taking control of the host terminal for a long time, the congestion of the content 30 may occur and the user may feel difficulty in using the program. I need a routine to find and pad back.

5. 분리 실행 대상 코드 블록 내에 코드가 아닌 데이터의 존재 유무5. The existence of non-code data in the code block to be executed

간혹 코드 영역 내에 데이터가 존재할 수 있다. 프로파일러 내에서 이를 체크하는 루틴이 존재하지만, 중요 경로(Critical Path) 상에 있는 코드 블록을 분리 실행 대상 코드 블록(34)으로 선정할 때 선정 범위를 벗어난 코드 블록이 추가될 수 있는 상황이 발생할 경우를 대비하여 Error-Free 체크루틴으로 삽입한다. 이때 중요 경로는 컨텐츠(30) 실행 시 최소한 한번 이상 반드시 실행되는 경로를 의미한다.Occasionally, data may exist within a code region. There is a routine to check this in the profiler, but when selecting a block of code on the critical path as the target block of code 34 to be executed, a situation may arise in which a block of code outside of the selection range may be added. Insert it as an Error-Free check routine in case. At this time, the critical path means a path that is necessarily executed at least once when the content 30 is executed.

예컨대 분리 실행 대상 코드 블록(34)이 x86용 컨텐츠(30)의 코드 영역(31)에서 추출되고, 저장장치(53)가 ARM 프로세서를 기반으로 하는 경우, 검증 항목은 Floating Point Instruction 유무 또는 SIMD Instruction Set 유무를 포함할 수 있다.For example, if the separated execution target code block 34 is extracted from the code area 31 of the content for x86 30 and the storage 53 is based on an ARM processor, the verification item may include a floating point instruction or a SIMD instruction. It may include the presence or absence of a set.

서버제어부(25)는 검증을 통과한 분리 실행 대상 코드 블록(34)을 저장장치용 코드 블록(27)으로 변환한다. 예컨대 저장장치(53)가 스마트 카드인 경우, 검증을 통과한 분리 실행 대상 코드 블록(34)은 Java Byte 코드 블록 또는 ARM용 코드 블록으로 변환될 수 있다. 이때 Java Byte 코드 블록은 애플릿에 포함되어 스마트 카드에 설치될 수 있다. ARM용 코드 블록은 권리 객체(RO)에 포함되어 스마트 카드에 설치될 수 있다.The server controller 25 converts the separated execution target code block 34 that has passed the verification into a storage code block 27. For example, when the storage device 53 is a smart card, the separated execution target code block 34 that has passed the verification may be converted into a Java Byte code block or an ARM code block. At this time, the Java Byte code block can be included in the applet and installed in the smart card. Code blocks for ARM can be included in rights objects (ROs) and installed on smart cards.

이와 같은 본 발명의 제1 실시예에 따른 분리 실행 대상 코드 블록의 검증 방법을 포함하는 컨텐츠의 등록 방법에 대해서 도 1 내지 도 11을 참조하여 설명하면 다음과 같다. 여기서 도 7은 본 발명의 제1 실시예에 따른 분리 실행 기반의 컨텐츠용 코드 블록의 검증 방법을 포함하는 컨텐츠 등록 방법을 보여주는 흐름도이다. 도 8은 도 7의 분리 실행 대상 코드 블록 추출 및 서비스용 컨텐츠 생성 단계에 따른 상세 흐름도이다. 도 9 및 도 10은 도 8의 분리 실행 대상 코드 블록으로 추출될 베이식 블록 그룹의 선정 단계를 설명하기 위한 예시도이다. 그리고 도 11은 도 7의 검증 방법에 따른 예시도이다.A method of registering content including a method of verifying a separate execution target code block according to the first embodiment of the present invention will be described with reference to FIGS. 1 to 11. 7 is a flowchart illustrating a content registration method including a method of verifying a code block for content based on a separation execution according to a first embodiment of the present invention. FIG. 8 is a detailed flowchart illustrating the separation execution target code block extraction and content generation step for a service of FIG. 7. 9 and 10 are exemplary diagrams for describing a step of selecting a basic block group to be extracted as the separated execution target code block of FIG. 8. 11 is an exemplary view according to the verification method of FIG. 7.

먼저 S61 내지 S83단계에서 컨텐츠 제공 단말(10)은 컨텐츠 등록 서버(20)로부터 내려받은 프로파일링 및 분석 툴(40)을 실행한다. 즉 S61단계에서 컨텐츠 제공 단말(10)은 컨텐츠 등록 서버(20)의 웹페이지(21)에 접속한다. 이어서 S63단계에서 컨텐츠 제공 단말(20)이 컨텐츠(30)를 등록할 수 있는 등록 페이지를 요청하면, S65단계에서 컨텐츠 등록 서버(20)는 컨텐츠 제공 단말(10)로 로그인 페이지를 전송한다.First, in steps S61 to S83, the content providing terminal 10 executes the profiling and analysis tool 40 downloaded from the content registration server 20. That is, in step S61, the content providing terminal 10 accesses the web page 21 of the content registration server 20. Subsequently, when the content providing terminal 20 requests a registration page for registering the content 30 in step S63, the content registration server 20 transmits a login page to the content providing terminal 10 in step S65.

다음으로 S67단계에서 컨텐츠 제공 단말(10)은 컨텐츠 제공자의 입력부(12)를 통한 선택 신호에 따라 로그인 정보를 입력받아, S69단계에서 입력된 로그인 정보를 컨텐츠 등록 서버(20)로 전송한다.Next, in step S67, the content providing terminal 10 receives the login information according to the selection signal through the input unit 12 of the content provider, and transmits the login information input in step S69 to the content registration server 20.

다음으로 S71단계에서 컨텐츠 등록 서버(20)는 수신한 로그인 정보로 접속한 컨텐츠 제공자에 대한 인증을 수행한다. 인증을 통과하면, S73단계에서 컨텐츠 등록 서버(20)는 액티브-엑스 론쳐를 컨텐츠 제공 단말(10)로 전송한다. 이어서 S75단계에서 컨텐츠 제공 단말(10)은 액티브-엑스 론쳐를 통하여 액티브-엑스를 실행한다.Next, in step S71, the content registration server 20 authenticates the content provider connected with the received login information. If the authentication passes, in step S73 the content registration server 20 transmits the active-X launcher to the content providing terminal 10. Subsequently, in step S75, the content providing terminal 10 executes Active-X through the Active-X Launcher.

한편 수신한 로그인 정보가 등록된 로그인 정보와 일치하지 않아 인증에 실패하면, 컨텐츠 등록 서버(20)는 컨텐츠 제공 단말(10)로 로그인 정보를 재입력할 것을 다시 요청할 수 있다.Meanwhile, if authentication fails because the received login information does not match the registered login information, the content registration server 20 may request the content providing terminal 10 to re-enter the login information.

다음으로 S77단계에서 컨텐츠 제공 단말(10)은 컨텐츠 등록 서버(20)로부터 내려받은 프로파일링 및 분석 툴(40)이 저장부(13)에 있는 지의 여부를 확인한다.Next, in step S77, the content providing terminal 10 checks whether the profiling and analysis tool 40 downloaded from the content registration server 20 is in the storage unit 13.

S77단계의 확인 결과 없는 경우, S79단계에서 컨텐츠 제공 단말(10)은 컨텐츠 등록 서버(20)로 프로파일링 및 분석 툴(40)의 전송을 요청한다. S81단계에서 컨텐츠 등록 서버(20)는 컨텐츠 제공 단말(10)로 프로파일링 및 분석 툴(40)을 전송한다.If there is no check result of step S77, in step S79 content providing terminal 10 requests the transmission of the profiling and analysis tool 40 to the content registration server 20. In operation S81, the content registration server 20 transmits the profiling and analysis tool 40 to the content providing terminal 10.

다음으로 S77단계의 확인 결과 있거나 S81단계를 통하여 프로파일링 및 분석 툴(40)을 수신한 경우, S83단계에서 컨텐츠 제공 단말(10)은 내려받은 프로파일링 및 분석 툴(40)을 실행한다.Next, when the result of checking in step S77 or the profiling and analysis tool 40 is received through step S81, the content providing terminal 10 executes the downloaded profiling and analysis tool 40 in step S83.

다음으로 S85단계에서 컨텐츠 제공 단말(10)은 등록할 컨텐츠(30)를 호출한다. 즉 컨텐츠 제공자로부터 분석할 컨텐츠(30)를 호출하기 위한 선택 신호가 입력되면, 컨텐츠 제공 단말(10)은 저장부(13)에 저장된 등록할 컨텐츠(30)의 리스트를 표시부(45)에 표시한다. 이어서 리스트에서 특정 컨텐츠(30)가 선택되면, 컨텐츠 제공 단말(10)은 선택된 컨텐츠(30)를 호출한다.Next, in step S85, the content providing terminal 10 calls the content 30 to be registered. That is, when a selection signal for calling the content 30 to be analyzed is input from the content provider, the content providing terminal 10 displays the list of the content 30 to be registered stored in the storage unit 13 on the display unit 45. . Subsequently, when specific content 30 is selected from the list, the content providing terminal 10 calls the selected content 30.

다음으로 S87단계에서 컨텐츠 제공 단말(10)은 선택된 컨텐츠(30)에 대한 보안 수준을 설정한다. 즉 컨텐츠 제공 단말(10)은 컨텐츠 제공자가 선택할 수 있는 보안 수준 설정 항목을 표시부(14)에 표시한다. 컨텐츠 제공자가 표시된 보안 수준 설정 항목 중에서 특정 보안 수준 설정 항목을 선택하면, 컨텐츠 제공 단말(10)은 선택된 보안 수준 설정 항목으로 등록할 컨텐츠(30)의 보안 수준을 설정한다.Next, in step S87, the content providing terminal 10 sets the security level for the selected content (30). That is, the content providing terminal 10 displays the security level setting item that the content provider can select on the display unit 14. When the content provider selects a specific security level setting item from the displayed security level setting items, the content providing terminal 10 sets the security level of the content 30 to be registered as the selected security level setting item.

이때 제1 실시예에서는 S85단계 및 S87단계 순으로 진행되는 예를 개시하였지만, 반대의 순서로 진행될 수 있다. 또한 보안 수준이 디폴트로 설정되어 있는 경우, 컨텐츠 제공 단말(10)은 S87단계를 생략할 수도 있다.In this case, the first embodiment discloses an example of proceeding in the order of step S85 and step S87, but may proceed in the reverse order. In addition, when the security level is set as a default, the content providing terminal 10 may omit step S87.

다음으로 S89단계에서 컨텐츠 제공 단말(10)은 실행중인 프로파일링 및 분석 툴(40)을 통하여 등록할 컨텐츠(30)로부터 분리 실행 대상 코드 블록(34)을 추출하고, 서비스용 컨텐츠(32)를 생성한다. 한편 S89단계에 대한 상세한 설명은 후술하도록 하겠다.Next, in step S89, the content providing terminal 10 extracts the separate execution target code block 34 from the content 30 to be registered through the profiling and analysis tool 40 being executed, and extracts the content 32 for service. Create On the other hand, a detailed description of the step S89 will be described later.

이어서 S91단계에서 컨텐츠 제공 단말(10)은 추출한 분리 실행 대상 코드 블록(34) 및 서비스용 컨텐츠(32)를 이용하여 해당 컨텐츠(30)의 등록을 컨텐츠 등록 서버(20)에 요청한다. 이때 컨텐츠 제공 단말(10)은 컨텐츠(30)의 등록을 요청할 때 해당 컨텐츠(30)의 등록 정보(39)를 함께 전송할 수 있다.In step S91, the content providing terminal 10 requests the content registration server 20 to register the corresponding content 30 using the extracted execution target code block 34 and the service content 32. In this case, the content providing terminal 10 may transmit the registration information 39 of the corresponding content 30 when requesting the registration of the content 30.

다음으로 컨텐츠 등록 서버(20)는 수신한 분리 실행 대상 코드 블록(34) 및 서비스용 컨텐츠(32)를 파싱하여 유효 여부를 판단한 뒤, 유효한 경우 해당 분리 실행 대상 코드 블록(34) 및 서비스용 컨텐츠(32)를 데이터베이스(23)에 등록 한다. 즉 해당 컨텐츠(30)를 실제 호스트 단말(51) 및 저장장치(53)의 분리 실행 환경에 대응하는 테스트 프로세스 환경에서 테스트를 수행하여 해당 컨텐츠(30)에 대한 유효성을 판단할 수 있다.Next, the content registration server 20 parses the received separation execution target code block 34 and the service content 32 to determine whether it is valid, and if the content registration server 20 is valid, the separation execution target code block 34 and the content for the service. (32) is registered in the database (23). That is, the validity of the content 30 may be determined by testing the content 30 in a test process environment corresponding to a separate execution environment of the actual host terminal 51 and the storage device 53.

S93단계 내지 S111단계에 따른 검증을 통한 컨텐츠(30)의 등록 과정을 설명하면 다음과 같다.Referring to the registration process of the content 30 through the verification according to the steps S93 to S111 as follows.

먼저 S93단계에서 컨텐츠 등록 서버(20)는 수신한 분리 실행 대상 코드 블록(34)을 실제 저장장치(53)의 실행 환경에 대응하는 테스트 환경에서 실행하여 유효성을 검증한다. 이때 컨텐츠 등록 서버(20)는 다음과 같은 검증 항목을 기준으로 분리 실행 대상 코드 블록(34)에 대한 유효성을 검증할 수 있다. 이때 검증 항목은 Floating Point Instruction 유무, SIMD Instruction Set 유무, Initial Context에 포함된 메모리 범위가 임계 용량을 초과하는 지의 유무, 분리 실행 대상 코드 블록(34) 내에 장시간 반복하는 루프의 존재 유무, 분리 실행 대상 코드 블록(34) 내에 데이터가 존재하는 지의 유무 중에 적어도 하나를 포함한다. 예컨대 분리 실행 대상 코드 블록(34)이 x86용 컨텐츠(30)의 코드 영역(31)에서 추출되고, 저장장치(53)가 ARM 프로세서를 기반으로 하는 경우, 검증 항목은 Floating Point Instruction 유무 또는 SIMD Instruction Set 유무를 포함할 수 있다.First, in step S93, the content registration server 20 executes the received execution target code block 34 in a test environment corresponding to the execution environment of the actual storage device 53 to verify validity. In this case, the content registration server 20 may verify the validity of the separate execution target code block 34 based on the following verification item. At this time, the verification items include: Floating Point Instruction, SIMD Instruction Set, whether the memory range included in the Initial Context exceeds the threshold capacity, the existence of a loop that repeats for a long time in the separate execution target code block 34, and the separation execution target. It includes at least one of the presence or absence of data in the code block 34. For example, if the separated execution target code block 34 is extracted from the code area 31 of the content for x86 30 and the storage 53 is based on an ARM processor, the verification item may include a floating point instruction or a SIMD instruction. It may include the presence or absence of a set.

S93단계의 검증 결과 유효하지 않은 분리 실행 대상 코드 블록(34)이 검출된 경우, 즉 검증에 실패한 경우, S95단계에서 컨텐츠 등록 서버(20)는 컨텐츠 제공 단말(10)로 검증 실패 결과를 피드백 한다. 이때 검증 실패 결과는 수신한 분리 실행 대상 코드 블록(34) 중에서 어떤 분리 실행 대상 코드 블록(34)이 어떠한 검증 항목에 해당되는 지에 대한 정보를 포함한다.If an invalid separation execution target code block 34 is detected as a result of verification in step S93, that is, verification fails, the content registration server 20 feeds back a verification failure result to the content providing terminal 10 in step S95. . In this case, the verification failure result includes information on which verification item which the separation execution target code block 34 corresponds to among the separation execution target code blocks 34 received.

다음으로 S97단계에서 컨텐츠 제공 단말(10)은 수신한 검증 실패 결과를 컨텐츠 제공자가 확인할 수 있도록 표시부(14)에 출력할 수 있다. 이어서 컨텐츠 제공 단말(10)은 수신한 검증 실패 결과를 기반으로 등록할 컨텐츠(30)에 대한 재 프로파일링 및 분석을 통하여 다시 분리 실행 대상 코드 블록(34)을 추출하여 컨텐츠 등록 서버(20)로 재전송한다. 이때 S99단계에서 컨텐츠 제공 단말(10)은 피드백을 통해 전달 받은 검증 실패 결과를 필터링 리스트에 추가하여 해당 코드 블록(32)을 블랙 리스트에 올려서 선정 대상에서 배제시키고, S89단계에 따른 재 프로파일링 및 분석을 수행하여 새로운 분리 실행 대상 코드 블록(34)을 추출할 수 있다.Next, in step S97, the content providing terminal 10 may output the received verification failure result to the display unit 14 so that the content provider can check. Subsequently, the content providing terminal 10 extracts the target code block 34 to be separated and re-generated again by re-profiling and analyzing the content 30 to be registered based on the received verification failure result to the content registration server 20. Resend. At this time, in step S99, the content providing terminal 10 adds the verification failure result received through the feedback to the filtering list, adds the corresponding code block 32 to the black list, and excludes it from the selection target, and re-profiling according to step S89 and Analysis may be performed to extract a new separate execution target code block 34.

이와 같이 컨텐츠 제공 단말(10)은 검증 실패 결과를 피드백 받으면, S89단계 및 S91단계를 다시 수행한다. 아울러 S93단계에서 검증에 실패한 경우, 컨텐츠 제공 단말(10)과 컨텐츠 등록 서버(20)는 S95단계, S97단계, S99단계, S89단계 및 S91단계를 반복하여 수행한다.As such, when the content providing terminal 10 receives the feedback of the verification failure result, the content providing terminal 10 performs steps S89 and S91 again. In addition, if the verification fails in step S93, the content providing terminal 10 and the content registration server 20 repeats steps S95, S97, S99, S89 and S91.

S93단계의 검증 결과 유효한 경우, 즉 검증을 통과한 경우, S101단계에서 컨텐츠 등록 서버(20)는 컨텐츠 제공 단말(10)로 수신한 분리 실행 대상 코드 블록(34)이 유효하다는 검증 통과 결과를 피드백한다. 한편 컨텐츠 등록 서버(20)는 검증 결과 유효하지 않은 경우라도 자체 수정이 가능한 경우 오류를 수정하여 검증을 통과시킬 수도 있다.If the verification result of step S93 is valid, that is, if the verification passes, in step S101, the content registration server 20 feeds back the verification pass result that the separation execution target code block 34 received by the content providing terminal 10 is valid. do. Meanwhile, even if the verification result is invalid, the content registration server 20 may correct the error by passing the verification if the self registration is possible.

이어서 S105단계에서 컨텐츠 등록 서버(20)는 검증된 분리 실행 대상 코드 블록(34)을 저장장치용 코드 블록(27)으로 변환한다. 예컨대 컨텐츠 등록 서버(20)는 검증을 통과한 분리 실행 대상 코드 블록(34)을, 저장장치(53)가 스마트 카드인 경우, Java Byte 코드 블록 또는 ARM용 코드 블록으로 변환할 수 있다.Subsequently, in step S105, the content registration server 20 converts the verified separation execution target code block 34 into a storage device code block 27. For example, the content registration server 20 may convert the separated execution target code block 34 that has passed the verification into a Java Byte code block or an ARM code block when the storage device 53 is a smart card.

다음으로 S107단계에서 컨텐츠 등록 서버(20)는 변환한 저장장치용 코드 블록(27)과 서비스용 컨텐츠(32)를 데이터베이스부(23)에 등록한다. 이때 컨텐츠 등록 서버(20)는 해당 컨텐츠의 등록 정보(39)도 함께 등록한다.Next, in step S107, the content registration server 20 registers the converted storage device code block 27 and the service content 32 to the database unit 23. At this time, the content registration server 20 also registers the registration information 39 of the corresponding content.

이어서 S109단계에서 컨텐츠 등록 서버(20)는 등록 완료 메시지를 컨텐츠 제공 단말(10)로 전송한다.In step S109, the content registration server 20 transmits a registration completion message to the content providing terminal 10.

그리고 S111단계에서 컨텐츠 제공 단말(10)은 수신한 등록 완료 메시지를 출력한다. 이때 컨텐츠 제공 단말(10)은 컨텐츠 제공자가 확인할 수 있도록 등록 완료 메시지를 표시부(14)에 표시할 수 있다.In step S111, the content providing terminal 10 outputs the received registration completion message. In this case, the content providing terminal 10 may display a registration completion message on the display unit 14 so that the content provider can check.

한편 S101단계는 S105단계 전에 수행되는 예를 개시하였지만 이것에 한정되는 것이다. 즉 검증 통과 결과는 S93단계에 따라 검증을 통과한 이후의 단계에서 수행될 수 있다. 예컨대 검증 통과 결과는 S105단계가 완료된 이후에 수행될 수도 있고, S109단계에서 등록 완료 메시지를 전송할 때 함께 전송될 수도 있다.On the other hand, step S101 disclosed an example that is performed before step S105 is limited to this. That is, the verification pass result may be performed in a step after passing the verification according to step S93. For example, the verification pass result may be performed after the step S105 is completed, or may be transmitted together with the registration completion message in step S109.

한편 S89단계에 따른 분리 실행 대상 코드 블록 추출 및 서비스용 컨텐츠 생성 단계를 구체적으로 설명하면 다음과 같다.Meanwhile, the extraction of the target execution code block extraction and the content generation step for the service according to step S89 will be described in detail.

먼저 S891단계에서 프로파일링 및 분석 툴(40)은 호출한 컨텐츠(30)에 대한 실행을 시작한다. 이어서 S893단계에서 프로파일링 및 분석 툴(40)은 컨텐츠(30)에 대한 런-타임 동안 코드 영역(31)에 대한 기초 정보를 수집한다. 이때 프로파일링 및 분석 툴(40)은 기초 정보로서 브랜치 어드레스, 점프 어드레스, 콜 어드레스 및 RET의 간접 주소 중에 적어도 하나의 간접 주소를 수집할 수 있다. 이때 S891단계는 S85단계에 따른 컨텐츠(30)의 호출에 따라 자동적으로 수행되거나, 작업자의 입력부(12)를 통한 선택 신호의 입력에 의해 수행될 수 있다.First, in step S891, the profiling and analysis tool 40 starts execution of the called content 30. In step S893, the profiling and analysis tool 40 collects basic information about the code area 31 during the run-time for the content 30. In this case, the profiling and analysis tool 40 may collect at least one indirect address among a branch address, a jump address, a call address, and an indirect address of the RET as basic information. In this case, step S891 may be automatically performed according to the call of the content 30 according to step S85, or may be performed by inputting a selection signal through the input unit 12 of the operator.

그리고 S895단계에서 프로파일링 및 분석 툴(40)은 동적 프로파일링에 통해 수집한 기초 정보를 이용한 호출한 컨텐츠(30)의 코드 영역(31)에 대한 정적 분석을 수행하여 분석 범위를 확장하고, 이를 통하여 복수의 베이식 블록 그룹(37)을 선정한다. 즉 S895단계에서 프로파일링 및 분석 툴(40)은 수집한 기초 정보를 이용하여 컨텐츠(30)의 코드 영역(31)에 대한 정적 분석을 수행하여 복수의 베이식 블록 그룹(37)을 선정한다. 이때 수집한 기초 정보 중 간접 주소를 컨트롤 플로우 상에 대입함으로써, 프로파일링 및 분석 툴(40)은 컨텐츠(30)의 코드 영역(31)을 분석 범위를 확장하여 단독으로 동적 프로파일링 또는 정적 분석을 수행하는 것에 비하여 더 많은 베이식 블록 그룹(37)을 선정할 수 있다.In step S895, the profiling and analysis tool 40 performs a static analysis on the code region 31 of the called content 30 using the basic information collected through dynamic profiling to expand the scope of analysis. Through this, a plurality of basic block groups 37 are selected. That is, in step S895, the profiling and analysis tool 40 selects a plurality of basic block groups 37 by performing a static analysis on the code area 31 of the content 30 using the collected basic information. At this time, by assigning indirect addresses of the collected basic information on the control flow, the profiling and analysis tool 40 expands the analysis region of the code region 31 of the content 30 to perform dynamic profiling or static analysis alone. More basic block groups 37 can be selected for performance.

한편 S895단계에서 프로파일링 및 분석 툴(40)은, 도 9 및 도 10에 도시된 바와 같이, 정의(규칙)를 통하여 베이식 블록 그룹(37)을 선정할 수 있다.Meanwhile, in step S895, the profiling and analysis tool 40 may select the basic block group 37 through definitions (rules), as shown in FIGS. 9 and 10.

먼저 도 9에 도시된 바와 같이, 프로파일링 및 분석 툴(40)은 컨텐츠(30)의 코드 영역(31)에서 서로 연관된 복수의 베이식 블록(35)을 포함하는 베이식 블록 그룹(37)을 정의할 수 있다.First, as shown in FIG. 9, the profiling and analysis tool 40 may define a basic block group 37 comprising a plurality of basic blocks 35 associated with each other in the code area 31 of the content 30. Can be.

여기서 베이식 블록 그룹(37)의 시작점에 위치하는 베이식 블록(35a)을 통한 제어 신호가 입력되는 경우, 프로파일링 및 분석 툴(40)은 해당 베이식 블록 그룹(37)에 대한 재정의는 수행하지 않는다. 또한 베이식 블록 그룹(37)에 포함된 베이식 블록(35) 간에 제어 신호가 이동하는 경우에도, 프로파일링 및 분석 툴(40)은 해당 베이식 블록 그룹(37)에 대한 재정의는 수행하지 않는다. 즉 전술된 두 경우 프로파일링 및 분석 툴(40)은 베이식 블록 그룹(37)은 현재의 정의 상태를 유지한다.Here, when a control signal through the basic block 35a positioned at the start of the basic block group 37 is input, the profiling and analysis tool 40 does not redefine the basic block group 37. In addition, even when the control signal moves between the basic blocks 35 included in the basic block group 37, the profiling and analysis tool 40 does not redefine the basic block group 37. That is, in the two cases described above, the profiling and analysis tool 40 maintains the basic block group 37 in its current defined state.

하지만 도 10에 도시된 바와 같이, 베이식 블록 그룹(37)의 시작점에 위치하는 베이식 블록(35a)을 제외한 다른 베이식 블록(35b)으로 제어 신호가 입력될 경우, 프로파일링 및 분석 툴(40)은 해당 베이식 블록 그룹(37)을 제어 신호가 입력되는 베이식 블록(35b)을 기준으로 분할하여 재정의 한다. 즉 베이식 블록 그룹(37)의 내부로 진입하는 제어 신호가 있으면, 프로파일링 및 분석 툴(40)은 제어 신호의 명령어 주소를 기준으로 베이식 블록 그룹(37)을 분할하여 재정의 한다.However, as shown in FIG. 10, when a control signal is input to the other basic block 35b except for the basic block 35a positioned at the start of the basic block group 37, the profiling and analysis tool 40 The basic block group 37 is divided and redefined based on the basic block 35b to which the control signal is input. That is, if there is a control signal entering the basic block group 37, the profiling and analysis tool 40 divides and redefines the basic block group 37 based on the instruction address of the control signal.

이와 같이 베이식 블록 그룹(37)을 재정의 함으로써, 분할된 베이식 블록 그룹(37a,37b)이 내부 진입이 없는 베이식 블록 그룹(37)으로 성립할 확률을 높일 수 있다.By redefining the basic block group 37 in this manner, it is possible to increase the probability that the divided basic block groups 37a and 37b are established as the basic block group 37 without internal entry.

이때 재정의 대상이 되는 베이식 블록 그룹(37)은 제어 신호의 명령어 주소를 기준으로 이전의 제1 베이식 블록 그룹(37a)과, 제어 신호의 명령어 주소를 포함하는 이후의 제2 베이식 블록 그룹(37b)으로 재정의 된다.In this case, the basic block group 37 to be redefined has a first basic block group 37a based on the command address of the control signal and a second basic block group 37b including the command address of the control signal. Is redefined to).

그리고 이와 같은 재정의 단계를 반복함으로써, 최종적으로 재정의된 베이식 블록 그룹(37)은 단일 입력 및 단일 출력의 속성과, 외부에서 내부로의 진입을 허용하지 않는 속성을 갖는 복수의 베이식 블록(35)을 포함하는 베이식 블록 그룹(37)으로 정의될 수 있다.And by repeating this redefinition step, the finally redefined basic block group 37 is a plurality of basic blocks 35 having the properties of a single input and a single output and the property of not allowing entry from outside to inside. It may be defined as a basic block group 37 including a.

다음으로 S897단계 및 S899단계에서 프로파일링 및 분석 툴(40)은 선정한 복수의 베이식 블록 그룹(37) 중에서 분리 실행 대상 코드 블록(34)을 추출하여 컨텐츠(30)의 코드 영역(31)에서 분리하고, 분리 실행 대상 코드 블록(34)이 추출된 코드 영역에 스터브 코드(36)를 삽입한다.Next, in steps S897 and S899, the profiling and analysis tool 40 extracts the separation target code block 34 from the plurality of basic block groups 37 selected and separates it from the code area 31 of the content 30. Then, the stub code 36 is inserted into the code area from which the separated execution code block 34 is extracted.

즉 S897단계에서 프로파일링 및 분석 툴(40)은 선정된 복수의 베이식 블록 그룹(37) 중에서 설정된 보안 수준에 따라 베이식 블록 그룹(37)을 분리 실행 대상 코드 블록(34)으로 추출할 수 있다. 예컨대 컨텐츠 제공자는 베이식 블록 그룹(37)의 호출 빈도, 베이식 블록 그룹(37)의 호출 위치, 호스트 단말(51)의 메모리 참조 빈도, 호스트 단말(51)의 OS API 참조 빈도, 저장장치(53)의 하드웨어 요소 중에 적어도 하나에 가중치를 부여하여 보안 수준을 설정하면, 프로파일링 및 분석 툴(40)은 설정된 보안 수준에 따라 분리 실행 대상 코드 블록(34)을 선출할 수 있다.That is, in step S897, the profiling and analysis tool 40 may extract the basic block group 37 as a separate execution target code block 34 according to a security level set among the plurality of selected basic block groups 37. For example, the content provider may include a call frequency of the basic block group 37, a call position of the basic block group 37, a memory reference frequency of the host terminal 51, an OS API reference frequency of the host terminal 51, and a storage device 53. When the security level is set by weighting at least one of the hardware elements of the profiling and analysis tool 40, the profiling and analysis tool 40 may select the separate execution target code block 34 according to the set security level.

그리고 S899단계에서 프로파일링 및 분석 툴(40)은 분리 실행 대상 코드 블록(34)이 추출된 코드 영역에 스터브 코드(36)를 삽입하여 서비스용 컨텐츠(32)를 생성한다. 이때 스터브 코드(36)는 컨텐츠(30)에서 추출된 코드 영역과, 추출된 분리 실행 대상 코드 블록(34)을 연결한다.In operation S899, the profiling and analysis tool 40 generates the service content 32 by inserting the stub code 36 into the code region from which the separate execution target code block 34 is extracted. At this time, the stub code 36 connects the code region extracted from the content 30 with the extracted separation target code block 34.

이와 같이 컨텐츠(30)에서 분리 실행 대상 코드 블록(34)을 추출하고, 분리 실행 대상 코드 블록(34)이 추출된 코드 영역에 스터브 코드(36)를 삽입하여 서비스용 컨텐츠(32)를 생성함으로써, 프로파일링 및 분석 툴(40)은 컨텐츠(30)를 추출된 분리 실행 대상 코드 블록(34)과, 생성된 서비스용 컨텐츠(32)로 분할한다. 이때 S873단계에서 프로파일링 및 분석 툴(40)은 분리 실행 대상 코드 블록(34)과 서비스용 컨텐츠(32)를 저장부(13)에 저장할 수 있다.In this way, the separation execution target code block 34 is extracted from the content 30, and the stub code 36 is inserted into the code region from which the separation execution target code block 34 is extracted to generate the service content 32. The profiling and analysis tool 40 divides the content 30 into the extracted separated execution target code block 34 and the generated service content 32. In this case, in operation S873, the profiling and analysis tool 40 may store the separation execution target code block 34 and the service content 32 in the storage unit 13.

한편 제1 실시예에서는 컨텐츠 제공 단말(10)이 등록할 컨텐츠(30)에 대한 프로파일링 및 분석을 통하여 해당 컨텐츠(30)로부터 분리 실행 대상 코드 블록(34)을 추출하여 컨텐츠 등록 서버(20)로 전송하여 검증을 수행하는 예를 개시하였지만, 이것에 한정되는 것은 아니다. 예컨대 도 12 내지 도 15에 도시된 바와 같이, 컨텐츠 등록 서버(20)가 등록할 컨텐츠(30)로부터 분리 실행 대상 코드 블록(34)을 추출하여 검증을 수행할 수 있다. 즉 컨텐츠 제공 단말(10)은 분리 실행 대상 코드 블록(34)의 정보로서 등록할 컨텐츠(30)와, 등록할 컨텐츠(30)에서 추출한 분리 실행 대상 코드 블록(34)의 리스트를 컨텐츠 등록 서버(20)로 전송하여 검증을 수행할 수 있다.Meanwhile, in the first exemplary embodiment, the content execution server 20 extracts a separate execution target code block 34 from the corresponding content 30 by profiling and analyzing the content 30 to be registered by the content providing terminal 10. An example of performing verification by transmitting to the above is disclosed, but is not limited thereto. For example, as illustrated in FIGS. 12 to 15, the content registration server 20 may extract the separation execution target code block 34 from the content 30 to be registered and perform verification. That is, the content providing terminal 10 stores a list of the content 30 to be registered as information of the separation execution target code block 34 and the separation execution target code block 34 extracted from the content 30 to be registered. 20) to verify.

본 발명의 제2 실시예에 따른 분리 실행 기반의 디지털 저작권 관리 시스템(200)은, 도 12에 도시된 바와 같이, 네트워크(55)를 매개로 연결된 컨텐츠 제공 단말(10), 컨텐츠 등록 서버(20) 및 호스트 단말(51)과, 호스트 단말(51)에 유무선 인터페이스를 매개로 연결된 저장장치(53)를 포함하여 구성된다. 특히 제2 실시예에 따른 분리 실행 기반의 디지털 저작권 관리 시스템(200)은 분리 실행 대상 코드 블록(34)의 검증 시스템을 포함한다. 분리 실행 대상 코드 블록(34)의 검증 시스템은 네트워크(55)를 매개로 연결된 컨텐츠 제공 단말(10) 및 컨텐츠 등록 서버(20)를 포함하여 구성된다.In the digital rights management system 200 based on the separation execution according to the second embodiment of the present invention, as illustrated in FIG. 12, the content providing terminal 10 and the content registration server 20 connected through the network 55. ) And a host terminal 51 and a storage device 53 connected to the host terminal 51 via a wired or wireless interface. In particular, the digital rights management system 200 based on the separation execution according to the second embodiment includes a verification system of the separation execution target code block 34. The verification system of the separated execution target code block 34 includes a content providing terminal 10 and a content registration server 20 connected through a network 55.

컨텐츠 제공 단말(10)은 프로파일링 및 분석을 통하여 추출한 분리 실행 대상 코드 블록(34)에 대한 리스트(38)를 등록할 컨텐츠(30)과 함께 컨텐츠 등록 서버(20)로 전송한다. 전송한 리스트(38)에 포함된 분리 실행 대상 코드 블록(34) 중 유효하지 않은 분리 실행 대상 코드 블록(34)이 포함되어 있다는 검증 실패 결과를 피드백 받으면, 컨텐츠 제공 단말(10)은 수신한 검증 실패 결과를 기반으로 등록할 컨텐츠(30)에 대한 재 프로파일링 및 분석을 통하여 추출한 분리 실행 대상 코드 블록(34)에 대한 리스트(38)를 컨텐츠 등록 서버(20)로 재송한다. 그리고 컨텐츠 제공 단말(10)은 컨텐츠 등록 서버(20)로부터 전송한 리스트(38)에 포함된 분리 실행 대상 코드 블록(34)이 유효하다는 검증 통과 결과를 수신하여 출력할 수 있다. 이때 컨텐츠 제공 단말(10)은 프로파일링 및 분석 툴(40)을 이용하여 분리 실행 대상 코드 블록(34)의 리스트(38)를 생성한다.The content providing terminal 10 transmits the list 38 for the separated execution target code block 34 extracted through profiling and analysis together with the content 30 to be registered to the content registration server 20. If the feedback of the verification failure that the invalid execution target code block 34 included in the separated execution target code block 34 included in the transmitted list 38 is received, the content providing terminal 10 receives the verification. Based on the failure result, the list 38 for the separated execution target code block 34 extracted through re-profiling and analysis of the content 30 to be registered is resent to the content registration server 20. In addition, the content providing terminal 10 may receive and output a verification pass result indicating that the separation execution target code block 34 included in the list 38 transmitted from the content registration server 20 is valid. At this time, the content providing terminal 10 generates a list 38 of the separated execution target code block 34 by using the profiling and analysis tool 40.

그리고 컨텐츠 등록 서버(20)는 수신한 리스트(38)를 기반으로 등록할 컨텐츠(30)으로부터 분리 실행 대상 코드 블록(34)을 추출한다. 컨텐츠 등록 서버(20)는 분리 실행 대상 코드 블록(34)이 추출된 코드 영역에 스터브 코드를 삽입하여 서비스용 컨텐츠(32)을 생성한다. 그리고 컨텐츠 등록 서버(20)는 추출한 분리 실행 대상 코드 블록(34)에 대한 유효성을 검증한다. 검증 결과 유효하지 않은 분리 실행 대상 코드 블록(34)이 검출된 경우, 컨텐츠 등록 서버(20)는 컨텐츠 제공 단말(10)로 검증 실패 결과를 피드백 한다. 검증 결과 유효한 경우, 컨텐츠 등록 서버(20)는 분리 실행 대상 코드 블록(34)을 저장장치용 코드 블록(27)으로 변환하고, 검증 통과 결과를 컨텐츠 제공 단말(10)로 피드백 한다. 그리고 컨텐츠 등록 서버(20)는 변환된 저장장치용 코드 블록(27), 서비스용 컨텐츠(32) 및 컨텐츠(30)의 등록 정보를 데이터베이스부에 등록 한다.The content registration server 20 extracts the separated execution target code block 34 from the content 30 to be registered based on the received list 38. The content registration server 20 inserts the stub code into the code area from which the separate execution target code block 34 is extracted to generate the service content 32. The content registration server 20 verifies the validity of the extracted execution target code block 34. When the invalid execution target code block 34 is detected as a result of the verification, the content registration server 20 feeds back a verification failure result to the content providing terminal 10. If the verification result is valid, the content registration server 20 converts the separation execution target code block 34 to the storage code block 27 and feeds back the verification pass result to the content providing terminal 10. The content registration server 20 registers the registration information of the converted code block 27 for the storage device, the content for the service 32, and the content 30 to the database unit.

이와 같은 본 발명의 제2 실시예에 따른 분리 실행 대상 코드 블록(34)의 검증 방법을 포함하는 컨텐츠(30)의 등록 방법에 대해서 도 12 내지 도 15를 참조하여 설명하면 다음과 같다. 여기서 도 13은 본 발명의 제2 실시예에 따른 분리 실행 기반의 컨텐츠용 코드 블록의 검증 방법을 포함하는 컨텐츠 등록 방법을 보여주는 흐름도이다. 도 14는 도 13의 분리 실행 대상 코드 블록의 리스트 생성 단계에 따른 상세 흐름도이다. 그리고 도 15는 도 13의 검증 방법에 따른 예시도이다.A method of registering the content 30 including the verification method of the separate execution target code block 34 according to the second embodiment of the present invention will be described with reference to FIGS. 12 to 15 as follows. 13 is a flowchart illustrating a content registration method including a method of verifying a code block for content based on a separation execution according to a second embodiment of the present invention. FIG. 14 is a detailed flowchart of a list generation step of the separated execution target code block of FIG. 13. 15 is an exemplary view according to the verification method of FIG. 13.

먼저 S61단계 내지 S87단계는 제1 실시예에 따른 등록 방법과 동일한 순으로 진행되기 때문에, 상세한 설명은 생략하고 다음 단계인 S88단계부터 설명하면 다음과 같다.First, since steps S61 to S87 are performed in the same order as the registration method according to the first embodiment, detailed descriptions are omitted and the following steps are described from step S88.

S88단계에서 컨텐츠 제공 단말(10)은 등록할 컨텐츠(30)에 대한 프로파일링 및 분석을 통해 추출한 분리 실행 대상 코드 블록(34)에 대한 리스트(38)를 생성한다. 즉 S881단계에서 프로파일링 및 분석 툴(40)은 호출한 컨텐츠(30)에 대한 실행을 시작한다. 다음으로 S883단계에서 프로파일링 및 분석 툴(40)은 컨텐츠(30)에 대한 런-타임 동안 코드 영역(31)에 대한 기초 정보를 수집한다. 다음으로 S885단계에서 프로파일링 및 분석 툴(40)은 동적 프로파일링에 통해 수집한 기초 정보를 이용한 호출한 컨텐츠(30)의 코드 영역(31)에 대한 정적 분석을 수행하여 분석 범위를 확장하고, 이를 통하여 복수의 베이식 블록 그룹(37)을 선정한다. 이어서 S889단계에서 프로파일링 및 분석 툴(40)은 선정된 복수의 베이식 블록 그룹(37) 중에서 설정된 보안 수준에 따라 베이식 블록 그룹(37)을 분리 실행 대상 코드 블록(34)으로 선택한다. 그리고 프로파일링 및 분석 툴(40)은 선택된 분리 실행 대상 코드 블록(34)에 대한 리스트(38)를 생성한다. In step S88, the content providing terminal 10 generates a list 38 for the separated execution target code block 34 extracted through profiling and analysis of the content 30 to be registered. In other words, the profiling and analysis tool 40 starts execution of the called content 30 in step S881. Next, in step S883, the profiling and analysis tool 40 collects basic information about the code area 31 during the run-time for the content 30. Next, in step S885, the profiling and analysis tool 40 performs a static analysis on the code region 31 of the called content 30 using the basic information collected through dynamic profiling to expand the scope of analysis. Through this, a plurality of basic block groups 37 are selected. Subsequently, in step S889, the profiling and analysis tool 40 selects the basic block group 37 as a separate execution target code block 34 according to a security level set among the plurality of selected basic block groups 37. The profiling and analysis tool 40 then generates a list 38 for the selected separate execution target code block 34.

다음으로 S90단계에서 컨텐츠 제공 단말(10)은 생성한 리스트(38)를 컨텐츠 등록 서버(20)로 전송한다. 이때 컨텐츠 제공 단말(10)은 리스트(38)와 함께 등록할 컨텐츠(30)와, 컨텐츠(30)의 등록 정보를 전송한다.Next, in step S90, the content providing terminal 10 transmits the generated list 38 to the content registration server 20. In this case, the content providing terminal 10 transmits the content 30 to be registered together with the list 38 and the registration information of the content 30.

다음으로 S92단계에서 컨텐츠 등록 서버(20)는 수신한 리스트(38)를 기반으로 등록할 컨텐츠(30)로부터 분리 실행 대상 코드 블록(34)을 추출한다. 아울러 컨텐츠 등록 서버(20)는 분리 실행 대상 코드 블록(34)이 추출된 코드 영역에 스터브 코드를 삽입하여 서비스용 컨텐츠(32)를 생성한다.Next, in step S92, the content registration server 20 extracts the separated execution target code block 34 from the content 30 to be registered based on the received list 38. In addition, the content registration server 20 inserts the stub code into the code area from which the separate execution target code block 34 is extracted to generate the service content 32.

다음으로 S93단계 내지 S111단계는 제1 실시예에 따른 등록 방법과 실질적으로 동일한 순으로 진행된다. 즉 먼저 S93단계에서 컨텐츠 등록 서버(20)는 추출한 분리 실행 대상 코드 블록(34)을 실제 저장장치(53)의 실행 환경에 대응하는 테스트 환경에서 실행하여 유효성을 검증한다. 이때 컨텐츠 등록 서버(20)는 다음과 같은 검증 항목을 기준으로 분리 실행 대상 코드 블록(34)에 대한 유효성을 검증할 수 있다. 예컨대 검증 항목은 Floating Point Instruction 유무, SIMD Instruction Set 유무, Initial Context에 포함된 메모리 범위가 임계 용량을 초과하는 지의 유무, 분리 실행 대상 코드 블록(34) 내에 장시간 반복하는 루프의 존재 유무, 분리 실행 대상 코드 블록(34) 내에 데이터가 존재하는 지의 유무 중에 적어도 하나를 포함한다.Next, steps S93 to S111 are performed in substantially the same order as the registration method according to the first embodiment. That is, in step S93, the content registration server 20 executes the extracted execution target code block 34 in a test environment corresponding to the execution environment of the actual storage device 53 to verify validity. In this case, the content registration server 20 may verify the validity of the separate execution target code block 34 based on the following verification item. For example, the verification items include: floating point instruction, SIMD instruction set, whether the memory range included in the initial context exceeds the threshold capacity, existence of a loop that repeats for a long time in the separated execution code block 34, separated execution object It includes at least one of the presence or absence of data in the code block 34.

S93단계의 검증 결과 유효하지 않은 분리 실행 대상 코드 블록(34)이 검출된 경우, 즉 검증에 실패한 경우, S95단계에서 컨텐츠 등록 서버(20)는 컨텐츠 제공 단말(10)로 검증 실패 결과를 피드백 한다. 이때 검증 실패 결과는 추출한 분리 실행 대상 코드 블록(34) 중에서 어떤 분리 실행 대상 코드 블록(34)이 어떠한 검증 항목에 해당되는 지에 대한 정보를 포함한다.If an invalid separation execution target code block 34 is detected as a result of verification in step S93, that is, verification fails, the content registration server 20 feeds back a verification failure result to the content providing terminal 10 in step S95. . In this case, the verification failure result includes information on which verification item which the separation execution target code block 34 corresponds to among the extracted separation execution target code blocks 34.

다음으로 S97단계에서 컨텐츠 제공 단말(10)은 수신한 검증 실패 결과를 컨텐츠 제공자가 확인할 수 있도록 표시부(14)에 출력할 수 있다. 이어서 컨텐츠 제공 단말(10)은 수신한 검증 실패 결과를 기반으로 등록할 컨텐츠(30)에 대한 재 프로파일링 및 분석을 통하여 다시 분리 실행 대상 코드 블록(34)에 대한 리스트(38)를 생성하여 컨텐츠 등록 서버(20)로 재전송한다. 이때 S99단계에서 컨텐츠 제공 단말(10)는 피드백을 통해 전달 받은 검증 실패 결과를 필터링 리스트에 추가하여 해당 분리 실행 대상 코드 블록(34)을 블랙 리스트에 올려서 선정 대상에서 배제시키고, S88단계에 따른 재 프로파일링 및 분석을 수행하여 새로운 분리 실행 대상 코드 블록(34)의 리스트(38)를 생성한다.Next, in step S97, the content providing terminal 10 may output the received verification failure result to the display unit 14 so that the content provider can check. Subsequently, the content providing terminal 10 generates the list 38 for the separated execution target code block 34 again by re-profiling and analyzing the content 30 to be registered based on the received verification failure result. Resend to the registration server 20. In this case, in step S99, the content providing terminal 10 adds the verification failure result received through the feedback to the filtering list, puts the corresponding execution target code block 34 on the black list, and excludes it from the selection target. Profiling and analysis is performed to generate a list 38 of new separate execution code blocks 34.

이와 같이 컨텐츠 제공 단말(10)은 검증 실패 결과를 피드백 받으면, S88단계, S90단계 및 S92단계를 다시 수행한다. 아울러 S93단계에서 검증에 실패한 경우, 컨텐츠 제공 단말(10)과 컨텐츠 등록 서버(20)는 S95단계, S97단계, S99단계, S88단계, S90단계 및 S92단계를 반복하여 수행한다.As such, when the content providing terminal 10 receives the feedback of the verification failure result, the content providing terminal 10 performs steps S88, S90, and S92 again. In addition, when the verification fails in step S93, the content providing terminal 10 and the content registration server 20 repeats the steps S95, S97, S99, S88, S90 and S92.

S93단계의 검증 결과 유효한 경우, 즉 검증을 통과한 경우, S101단계에서 컨텐츠 등록 서버(20)는 컨텐츠 제공 단말(10)로 수신한 분리 실행 대상 코드 블록(34)이 유효하다는 검증 통과 결과를 피드백한다. 한편 컨텐츠 등록 서버(20)는 검증 결과 유효하지 않은 경우라도 자체 수정이 가능한 경우 오류를 수정하여 검증을 통과시킬 수도 있다.If the verification result of step S93 is valid, that is, if the verification passes, in step S101, the content registration server 20 feeds back the verification pass result that the separation execution target code block 34 received by the content providing terminal 10 is valid. do. Meanwhile, even if the verification result is invalid, the content registration server 20 may correct the error by passing the verification if the self registration is possible.

이어서 S105단계에서 컨텐츠 등록 서버(20)는 검증된 분리 실행 대상 코드 블록(34)을 저장장치용 코드 블록(27)으로 변환한다. 예컨대 컨텐츠 등록 서버(20)는 검증을 통과한 분리 실행 대상 코드 블록(34)을 Java Byte 코드 블록 또는 ARM용 코드 블록으로 변환할 수 있다.Subsequently, in step S105, the content registration server 20 converts the verified separation execution target code block 34 into a storage device code block 27. For example, the content registration server 20 may convert the separated execution target code block 34 that has passed the verification into a Java Byte code block or an ARM code block.

다음으로 S107단계에서 컨텐츠 등록 서버(20)는 변환한 저장장치용 코드 블록(27)과 서비스용 컨텐츠(32)를 데이터베이스부에 등록한다. 이때 컨텐츠 등록 서버(20)는 해당 컨텐츠(30)의 등록 정보도 함께 등록한다.Next, in step S107, the content registration server 20 registers the converted storage device code block 27 and the service content 32 to the database unit. At this time, the content registration server 20 also registers the registration information of the corresponding content 30.

이어서 S109단계에서 컨텐츠 등록 서버(20)는 등록 완료 메시지를 컨텐츠 제공 단말(10)로 전송한다.In step S109, the content registration server 20 transmits a registration completion message to the content providing terminal 10.

그리고 S111단계에서 컨텐츠 제공 단말(10)은 수신한 등록 완료 메시지를 출력한다. 이때 컨텐츠 제공 단말(10)은 컨텐츠 제공자가 확인할 수 있도록 등록 완료 메시지를 표시부(14)에 표시할 수 있다.In step S111, the content providing terminal 10 outputs the received registration completion message. In this case, the content providing terminal 10 may display a registration completion message on the display unit 14 so that the content provider can check.

한편 S101단계는 S105단계 전에 수행되는 예를 개시하였지만 이것에 한정되는 것이다. 즉 검증 통과 결과는 S93단계에 따라 검증을 통과한 이후의 단계에서 수행될 수 있다. 예컨대 검증 통과 결과는 S105단계가 완료된 이후에 수행될 수도 있고, S109단계에서 등록 완료 메시지를 전송할 때 함께 전송될 수도 있다.On the other hand, step S101 disclosed an example that is performed before step S105 is limited to this. That is, the verification pass result may be performed in a step after passing the verification according to step S93. For example, the verification pass result may be performed after the step S105 is completed, or may be transmitted together with the registration completion message in step S109.

한편 제1 실시예에서는 컨텐츠 제공 단말(10)이 등록할 컨텐츠(30)를 분리 실행 대상 코드 블록(34)과 서비스용 컨텐츠(32)로 분리하여 컨텐츠 등록 서버(20)에 전송하여 등록을 요청하는 예를 개시하였지만 이것에 한정되는 것이다. 예컨대 도 16 및 도 18에 도시된 바와 같이, 컨텐츠 제공 단말(10)이 등록할 컨텐츠(30)를 컨텐츠 등록 서버(20)로 전송하여 등록을 요청하면, 컨텐츠 등록 서버(20)는 프로파일링 및 분석을 통하여 해당 컨텐츠(30)를 분리 실행 대상 코드 블록(34)과 서비스용 컨텐츠(32)로 분리하여 등록할 수 있다. 즉 컨텐츠 제공 단말(10)은 분리 실행 대상 코드 블록(34)의 정보로서 컨텐츠(30)를 컨텐츠 등록 서버(20)로 전송하면, 컨텐츠 등록 서버(20)는 해당 컨텐츠(30)에서 분리 실행 대상 코드 블록(34)을 추출하고, 추출한 분리 실행 대상 코드 블록(34)에 대한 검증을 수행한 후 등록을 수행할 수 있다.Meanwhile, in the first embodiment, the content providing terminal 10 divides the content 30 to be registered into the separated execution target code block 34 and the service content 32 and transmits the content 30 to the content registration server 20 to request registration. An example is shown, but it is limited to this. For example, as illustrated in FIGS. 16 and 18, when the content providing terminal 10 transmits content 30 to be registered to the content registration server 20 to request registration, the content registration server 20 may profile and Through analysis, the content 30 may be divided into a separate execution target code block 34 and a service content 32 and registered. That is, when the content providing terminal 10 transmits the content 30 as the information of the separation execution target code block 34 to the content registration server 20, the content registration server 20 separates the execution target from the corresponding content 30. The code block 34 may be extracted, and the registration may be performed after verifying the extracted execution target code block 34.

본 발명의 제3 실시예에 따른 분리 실행 기반의 디지털 저작권 관리 시스템(300)은, 도 16에 도시된 바와 같이, 네트워크(55)를 매개로 연결된 컨텐츠 제공 단말(10), 컨텐츠 등록 서버(20) 및 호스트 단말(51)과, 호스트 단말(51)에 유무선 인터페이스를 매개로 연결된 저장장치(53)를 포함하여 구성된다. 특히 제3 실시예에 따른 분리 실행 기반의 디지털 저작권 관리 시스템(300)은 분리 실행 대상 코드 블록(34)의 검증 시스템을 포함한다. 분리 실행 대상 코드 블록(34)의 검증 시스템은 네트워크(55)를 매개로 연결된 컨텐츠 제공 단말(10) 및 컨텐츠 등록 서버(20)를 포함하여 구성된다.In the digital rights management system 300 based on the separation execution according to the third embodiment of the present invention, as shown in FIG. 16, the content providing terminal 10 and the content registration server 20 connected through the network 55. ) And a host terminal 51 and a storage device 53 connected to the host terminal 51 via a wired or wireless interface. In particular, the digital rights management system 300 based on the separation execution according to the third embodiment includes a verification system of the separation execution target code block 34. The verification system of the separated execution target code block 34 includes a content providing terminal 10 and a content registration server 20 connected through a network 55.

컨텐츠 제공 단말(10)은 등록할 컨텐츠(30)를 컨텐츠 등록 서버(20)로 전송한다. 이때 컨텐츠 제공 단말(10)은 컨텐츠(30)의 등록을 요청할 때, 컨텐츠 제공자로부터 해당 컨텐츠(30)에 대한 보안 수준을 입력받아 함께 전송할 수 있다. 그리고 컨텐츠 제공 단말(10)은 컨텐츠(30)의 등록을 요청할 때, 해당 컨텐츠(30)의 등록 정보를 함께 컨텐츠 등록 서버(20)로 전송할 수 있다.The content providing terminal 10 transmits the content 30 to be registered to the content registration server 20. In this case, when the content providing terminal 10 requests registration of the content 30, the content providing terminal 10 may receive a security level of the corresponding content 30 from the content provider and transmit the same. When the content providing terminal 10 requests registration of the content 30, the content providing terminal 10 may transmit the registration information of the corresponding content 30 to the content registration server 20.

그리고 컨텐츠 등록 서버(20)는 프로파일링 및 분석을 통하여 수신한 컨텐츠(30)를 분리 실행 대상 코드 블록(34)과 서비스용 컨텐츠(32)로 분리하여 등록할 수 있다. 즉 컨텐츠 등록 서버(10)는 수신한 컨텐츠(30)에 대한 프로파일링 및 분석을 통하여 분리 실행 대상 코드 블록(34)을 추출한다. 컨텐츠 등록 서버(20)는 분리 실행 대상 코드 블록(34)이 추출된 코드 영역에 스터브 코드를 삽입하여 서비스용 컨텐츠(32)를 생성한다. 그리고 컨텐츠 등록 서버(20)는 추출한 분리 실행 대상 코드 블록(34)에 대한 유효성을 검증한 후, 검증을 통과한 경우 해당 컨텐츠(30)를 데이터베이스부에 등록한다.In addition, the content registration server 20 may separately register the content 30 received through profiling and analysis into a separate execution target code block 34 and a service content 32. That is, the content registration server 10 extracts the separated execution target code block 34 through profiling and analysis on the received content 30. The content registration server 20 inserts stub codes into the code region from which the separate execution target code block 34 is extracted to generate the service content 32. After verifying the validity of the extracted execution target code block 34, the content registration server 20 registers the corresponding content 30 in the database unit when the verification passes.

이때 컨텐츠 등록 서버(20)는 다음과 같이 검증 및 등록 과정을 수행할 수 있다. 즉 추출된 분리 실행 대상 코드 블록(34)에 대한 검증 결과 유효하지 않은 분리 실행 대상 코드 블록(34)이 검출된 경우, 컨텐츠 등록 서버(20)는 검증 실패로 판단한다. 컨텐츠 등록 서버(20)는 검증 실패 결과를 필터링 리스트에 추가하여 해당 분리 실행 대상 코드 블록(34)을 블랙 리스트에 올려서 선정 대상에서 배제시키고, 재 프로파일링 및 분석을 수행하여 새로운 분리 실행 대상 코드 블록(34)을 추출한다.At this time, the content registration server 20 may perform the verification and registration process as follows. That is, when an invalid separation execution target code block 34 is detected as a result of the verification of the extracted separation execution target code block 34, the content registration server 20 determines that the verification failure. The content registration server 20 adds the verification failure result to the filtering list, puts the corresponding execution target code block 34 on the black list, excludes it from the selection target, and re-profiles and analyzes the new separation execution target code block. Extract 34.

검증 결과 유효한 경우, 컨텐츠 등록 서버(20)는 분리 실행 대상 코드 블록(34)을 저장장치용 코드 블록(27)으로 변환하고, 검증 통과 결과를 컨텐츠 제공 단말(10)로 피드백 한다. 컨텐츠 등록 서버(20)는 변환된 저장장치용 코드 블록(27) 및 서비스용 컨텐츠(32)를 데이터베이스부에 등록하며, 해당 컨텐츠(30)의 등록 정보를 함께 데이터베이스부에 등록할 수 있다.If the verification result is valid, the content registration server 20 converts the separation execution target code block 34 to the storage code block 27 and feeds back the verification pass result to the content providing terminal 10. The content registration server 20 may register the converted code block 27 for the storage device and the service content 32 in the database unit and register the registration information of the corresponding content 30 together in the database unit.

그리고 컨텐츠 등록 서버(20)는 등록 요청한 컨텐츠(30)에 대한 등록 완료 메시지를 컨텐츠 제공 단말(10)로 전송한다. 한편 컨텐츠 제공 단말(10)은 수신한 등록 완료 메시지를 컨텐츠 제공자가 확인할 수 있도록 화면에 출력할 수 있다.The content registration server 20 transmits a registration completion message for the content 30 requested to be registered to the content providing terminal 10. Meanwhile, the content providing terminal 10 may output the registration completion message to the screen so that the content provider can check.

이와 같은 본 발명의 제3 실시예에 따른 분리 실행 대상 코드 블록의 검증 방법을 포함하는 컨텐츠의 등록 방법에 대해서 도 16 내지 도 18을 참조하여 설명하면 다음과 같다. 여기서 도 17은 본 발명의 제3 실시예에 따른 분리 실행 기반의 컨텐츠용 코드 블록의 검증 방법을 포함하는 컨텐츠 등록 방법을 보여주는 흐름도이다. 그리고 도 18은 도 16의 검증 방법에 따른 예시도이다.A method of registering content including a method of verifying a separate execution target code block according to a third embodiment of the present invention will be described with reference to FIGS. 16 to 18 as follows. 17 is a flowchart illustrating a content registration method including a method of verifying a code block for content based on a separation execution according to a third embodiment of the present invention. 18 is an exemplary view according to the verification method of FIG. 16.

먼저 S61단계 내지 S71단계는 제1 실시예에 따른 등록 방법과 동일한 순으로 진행되기 때문에, 상세한 설명은 생략하고 다음 단계인 S72단계부터 설명하면 다음과 같다.First, since steps S61 to S71 are performed in the same order as the registration method according to the first embodiment, detailed descriptions are omitted and the following steps are described from step S72.

S71단계에서 인증을 통과하면, S72단계에서 컨텐츠 등록 서버(20)는 인증정보를 컨텐츠 제공 단말(10)로 전송한다.If the authentication passes in step S71, the content registration server 20 transmits the authentication information to the content providing terminal 10 in step S72.

다음으로 S74단계에서 컨텐츠 제공 단말(10)은 컨텐츠 등록 서버(20)로 컨텐츠(30)와 함께 해당 컨텐츠(30)의 등록을 요청한다. 이때 컨텐츠 제공 단말(10)이 컨텐츠(30)의 등록을 요청할 때, 해당 컨텐츠(30)에 대한 보안 수준을 함께 전송할 수 있다.In operation S74, the content providing terminal 10 requests the content registration server 20 to register the corresponding content 30 together with the content 30. In this case, when the content providing terminal 10 requests registration of the content 30, the content providing terminal 10 may transmit a security level of the corresponding content 30.

그리고 S83단계 내지 S111단계에서 컨텐츠 등록 서버(20)는 해당 컨텐츠에 대한 분리, 검증 및 등록을 일괄적으로 수행하고, 검증 통과 결과 및 등록 완료 메시지를 컨텐츠 제공 단말(10)로 전송한다.In step S83 to step S111, the content registration server 20 collectively performs separation, verification, and registration of the corresponding content, and transmits the verification pass result and the registration completion message to the content providing terminal 10.

즉 S83단계에서 컨텐츠 등록 서버(20)는 프로파일링 및 분석 툴(40)을 실행한다. 이어서 S85단계에서 컨텐츠 등록 서버(20)는 수신한 컨텐츠(30)를 호출한다. 다음으로 S89단계에서 컨텐츠 등록 서버(20)는 실행중인 프로파일링 및 분석 툴(40)을 통하여 등록할 컨텐츠(30)로부터 분리 실행 대상 코드 블록(34)을 추출하고, 서비스용 컨텐츠(32)를 생성한다.In other words, the content registration server 20 executes the profiling and analysis tool 40 in step S83. In step S85, the content registration server 20 calls the received content 30. Next, in step S89, the content registration server 20 extracts the separated execution target code block 34 from the content 30 to be registered through the profiling and analysis tool 40 being executed, and extracts the content 32 for the service. Create

다음으로 S93단계에서 컨텐츠 등록 서버(20)는 추출한 분리 실행 대상 코드 블록(34)을 실제 저장장치(53)의 실행 환경에 대응하는 테스트 환경에서 실행하여 유효성을 검증한다. 이때 컨텐츠 등록 서버(20)는 다음과 같은 검증 항목을 기준으로 분리 실행 대상 코드 블록(34)에 대한 유효성을 검증할 수 있다. 예컨대 검증 항목은 Floating Point Instruction 유무, SIMD Instruction Set 유무, Initial Context에 포함된 메모리 범위가 임계 용량을 초과하는 지의 유무, 분리 실행 대상 코드 블록(34) 내에 장시간 반복하는 루프의 존재 유무, 분리 실행 대상 코드 블록(34) 내에 데이터가 존재하는 지의 유무 중에 적어도 하나를 포함한다.Next, in step S93, the content registration server 20 executes the extracted execution target code block 34 in a test environment corresponding to the execution environment of the actual storage device 53 to verify validity. In this case, the content registration server 20 may verify the validity of the separate execution target code block 34 based on the following verification item. For example, the verification items include: floating point instruction, SIMD instruction set, whether the memory range included in the initial context exceeds the threshold capacity, existence of a loop that repeats for a long time in the separated execution code block 34, separated execution object It includes at least one of the presence or absence of data in the code block 34.

S93단계의 검증 결과 유효하지 않은 분리 실행 대상 코드 블록(34)이 검출된 경우, 즉 검증에 실패한 경우, S98단계에서 컨텐츠 등록 서버(20)는 검증 실패 결과를 필터링 리스트에 추가하여 해당 분리 실행 대상 코드 블록(34)을 블랙 리스트에 올려서 선정 대상에서 배제시키고, S89단계에 따른 재 프로파일링 및 분석을 수행하여 새로운 분리 실행 대상 코드 블록(34)을 추출한다.If an invalid separation execution target code block 34 is detected as a result of the verification in step S93, that is, the verification fails, in step S98, the content registration server 20 adds the verification failure result to the filtering list to perform the separation execution target. The code block 34 is blacklisted to be excluded from the selection target, and the new separation execution target code block 34 is extracted by performing re-profiling and analysis according to step S89.

S93단계의 검증 결과 유효한 경우, 즉 검증을 통과한 경우, S101단계에서 컨텐츠 등록 서버(20)는 컨텐츠 제공 단말(10)로 수신한 분리 실행 대상 코드 블록(34)이 유효하다는 검증 통과 결과를 피드백한다. 한편 컨텐츠 등록 서버(20)는 검증 결과 유효하지 않은 경우라도 자체 수정이 가능한 경우 오류를 수정하여 검증을 통과시킬 수도 있다.If the verification result of step S93 is valid, that is, if the verification passes, in step S101, the content registration server 20 feeds back the verification pass result that the separation execution target code block 34 received by the content providing terminal 10 is valid. do. Meanwhile, even if the verification result is invalid, the content registration server 20 may correct the error by passing the verification if the self registration is possible.

이어서 S105단계에서 컨텐츠 등록 서버(20)는 검증된 분리 실행 대상 코드 블록(34)을 저장장치용 코드 블록(27)으로 변환한다. 예컨대 저장장치가 스마트 카드인 경우, 컨텐츠 등록 서버(20)는 검증을 통과한 분리 실행 대상 코드 블록(34)을 Java Byte 코드 블록 또는 ARM용 코드 블록으로 변환할 수 있다.Subsequently, in step S105, the content registration server 20 converts the verified separation execution target code block 34 into a storage device code block 27. For example, when the storage device is a smart card, the content registration server 20 may convert the separated execution target code block 34 that passes the verification into a Java Byte code block or an ARM code block.

다음으로 S107단계에서 컨텐츠 등록 서버(20)는 변환한 저장장치용 코드 블록(27)과 서비스용 컨텐츠(32)를 데이터베이스부에 등록한다. 이때 컨텐츠 등록 서버(20)는 해당 컨텐츠(30)의 등록 정보도 함께 등록할 수 있다.Next, in step S107, the content registration server 20 registers the converted storage device code block 27 and the service content 32 to the database unit. In this case, the content registration server 20 may also register the registration information of the corresponding content 30.

이어서 S109단계에서 컨텐츠 등록 서버(20)는 등록 완료 메시지를 컨텐츠 제공 단말(10)로 전송한다.In step S109, the content registration server 20 transmits a registration completion message to the content providing terminal 10.

그리고 S111단계에서 컨텐츠 제공 단말(10)은 수신한 등록 완료 메시지를 출력한다. 이때 컨텐츠 제공 단말(10)은 컨텐츠 제공자가 확인할 수 있도록 등록 완료 메시지를 표시부(14)에 표시할 수 있다.In step S111, the content providing terminal 10 outputs the received registration completion message. In this case, the content providing terminal 10 may display a registration completion message on the display unit 14 so that the content provider can check.

한편 S101단계는 S105단계 전에 수행되는 예를 개시하였지만 이것에 한정되는 것이다. 즉 검증 통과 결과는 S93단계에 따라 검증을 통과한 이후의 단계에서 수행될 수 있다. 예컨대 검증 통과 결과는 S105단계가 완료된 이후에 수행될 수도 있고, S109단계에서 등록 완료 메시지를 전송할 때 함께 전송될 수도 있다.On the other hand, step S101 disclosed an example that is performed before step S105 is limited to this. That is, the verification pass result may be performed in a step after passing the verification according to step S93. For example, the verification pass result may be performed after the step S105 is completed, or may be transmitted together with the registration completion message in step S109.

한편, 본 명세서와 도면에 개시된 실시예들은 이해를 돕기 위해 특정 예를 제시한 것에 지나지 않으며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형예들이 실시 가능하다는 것은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게는 자명한 것이다.On the other hand, the embodiments disclosed in the specification and drawings are merely presented specific examples to aid understanding, and are not intended to limit the scope of the present invention. It is apparent to those skilled in the art that other modifications based on the technical idea of the present invention can be carried out in addition to the embodiments disclosed herein.

본 발명은 분리 실행 기반의 컨텐츠용 코드 블록의 검증 시스템 및 방법에 관한 것으로, 등록할 컨텐츠에서 추출한 분리 실행 대상 코드 블록을 저장장치용 코드 블록으로 변환하기 전에 추출한 분리 실행 대상 코드 블록에 대한 검증 단계를 수행함으로써, 실제 분리 실행 기반의 컨텐츠의 실행 시 발생될 수 있는 성능 및 안정성 저하 요인을 사전에 제거하여 안정적인 실행 환경을 제공할 수 있는 분리 실행 대상 코드 블록을 제공할 수 있다.The present invention relates to a system and method for verifying a code block for content based on separated execution, wherein the verification step for the separated execution code block extracted before converting the separated execution target code block extracted from the content to be registered into the code block for storage device By performing the method, the target block of execution code that can provide a stable execution environment by removing the performance and stability deterioration factors that may occur when the actual execution of the execution-based content is executed in advance may be provided.

10 : 컨텐츠 제공 단말 20 : 컨텐츠 등록 서버
21 : 송수신부 22 : 웹페이지
23 : 데이터베이스부 25 : 서버제어부
27 : 저장장치용 코드 블록 30 : 컨텐츠
31 : 코드 영역 32 : 서비스용 컨텐츠
33 : 데이터 영역 34 : 분리 실행 대상 코드 블록
35 : 베이식 블록 36 : 스터브 코드
37 : 베이식 블록 그룹
38 : 분리 실행 대상 코드 블록의 리스트
40 : 프로파일링 및 분석 툴 42 : 컨텐츠 호출부
44 : 코드 블록 그룹 선정부 44a : 기초 정보 수집부
44b : 정적 분석부 46 : 추출 및 생성부
51 : 호스트 단말 53 : 저장장치
55 : 네트워크
100,200,300 : 분리 실행 기반의 디지털 저작권 관리 시스템
10: content providing terminal 20: content registration server
21: transceiver 22: web page
23: database unit 25: server control unit
27: Code block for storage device 30: Content
31: Code area 32: Content for service
33: data area 34: code block to be separated
35: basic block 36: stub code
37: basic block group
38: list of code blocks to be separated
40: Profiling and Analysis Tool 42: Content Caller
44: code block group selection unit 44a: basic information collection unit
44b: static analysis unit 46: extraction and generation unit
51: host terminal 53: storage device
55: network
100,200,300: Separate execution based digital rights management system

Claims (15)

등록할 컨텐츠에 대한 분리 실행 대상 코드 블록의 정보를 컨텐츠 등록 서버로 전송하는 컨텐츠 제공 단말;
상기 컨텐츠 제공 단말로부터 상기 수신한 분리 실행 대상 코드 블록의 정보를 이용하여 상기 분리 실행 대상 코드 블록을 실제 저장장치의 실행 환경에 대응하는 테스트 환경에서 실행하여 유효성을 검증하고, 상기 검증 결과 유효한 경우 상기 분리 실행 대상 코드 블록을 저장장치용 코드 블록으로 변환하는 컨텐츠 등록 서버;
를 포함하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠용 코드 블록의 검증 시스템.
A content providing terminal that transmits information of a separation execution target code block for content to be registered to a content registration server;
By using the information of the separation execution target code block received from the content providing terminal to execute the separation execution target code block in a test environment corresponding to the execution environment of the actual storage device to validate, and if the verification result is valid A content registration server for converting a separation execution target code block into a code block for storage;
Separation execution based content block verification system, characterized in that it comprises a.
컨텐츠 제공 단말과 통신을 수행하는 송수신부;
상기 송수신부를 통하여 상기 컨텐츠 제공 단말로부터 등록할 컨텐츠에 대한 분리 실행 대상 코드 블록의 정보를 수신하고, 상기 분리 실행 대상 코드 블록을 실제 저장장치의 실행 환경에 대응하는 테스트 환경에서 실행하여 유효성을 검증하고, 상기 검증 결과 유효하지 않은 분리 실행 대상 코드 블록이 검출된 경우 상기 컨텐츠 제공 단말로 상기 검증 실패 결과를 피드백하고, 상기 검증 결과 유효한 경우 상기 분리 실행 대상 코드 블록을 저장장치용 코드 블록으로 변환하는 서버제어부;
를 포함하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠용 코드 블록의 검증 시스템의 컨텐츠 등록 서버.
Transmitting and receiving unit for communicating with the content providing terminal;
Receives information of the separation execution target code block for the content to be registered from the content providing terminal through the transmission and reception unit, and executes the separation execution target code block in a test environment corresponding to the execution environment of the actual storage device to validate And a server for feeding back the verification failure result to the content providing terminal when an invalid separation execution target code block is detected as a result of the verification, and converting the separation execution target code block to a code block for storage when the verification result is valid. Control unit;
Content registration server of the verification system of the code execution block for content based on the separation execution.
제2항에 있어서,
상기 서버제어부의 제어에 따라 상기 변환된 저장장치용 코드 블록을 저장하는 데이터베이스부;
를 더 포함하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 등록 서버.
The method of claim 2,
A database unit for storing the converted code block for the storage device under the control of the server controller;
Separation execution-based content registration server, characterized in that it further comprises.
컨텐츠 등록 서버가 컨텐츠 제공 단말로부터 등록할 컨텐츠에 대한 분리 실행 대상 코드 블록의 정보를 수신하는 수신 단계;
상기 컨텐츠 등록 서버가 상기 분리 실행 대상 코드 블록을 실제 저장장치의 실행 환경에 대응하는 테스트 환경에서 실행하여 유효성을 검증하는 검증 단계;
상기 검증 결과 유효한 경우, 상기 컨텐츠 등록 서버가 상기 분리 실행 대상 코드 블록을 저장장치용 코드 블록으로 변환하는 변환 단계;
를 포함하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠용 코드 블록의 검증 방법.
A reception step of the content registration server receiving information of a separation execution target code block for content to be registered from the content providing terminal;
A verification step of the content registration server verifying validity by executing the separated execution target code block in a test environment corresponding to an execution environment of an actual storage device;
A conversion step of converting, by the content registration server, the separation execution target code block into a storage device code block when the verification result is valid;
Separation execution-based code block verification method for content comprising a.
제4항에 있어서,
상기 분리 실행 대상 코드 블록의 정보는 상기 등록할 컨텐츠로부터 추출한 분리 실행 대상 코드 블록을 포함하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠용 코드 블록의 검증 방법.
The method of claim 4, wherein
The information on the separation execution target code block includes a separation execution target code block extracted from the content to be registered.
제4항에 있어서,
상기 분리 실행 대상 코드 블록의 정보는 상기 등록할 컨텐츠와, 상기 등록할 컨텐츠로부터 추출한 분리 실행 대상 코드 블록의 리스트를 포함하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠용 코드 블록의 검증 방법.
The method of claim 4, wherein
And the information on the separation execution target code block includes a list of the content to be registered and a separation execution target code block extracted from the content to be registered.
제6항에 있어서, 상기 수신 단계와 상기 검증 단계 사이에 수행되는,
상기 컨텐츠 등록 서버가 상기 수신한 리스트를 기반으로 상기 수신한 컨텐츠로부터 분리 실행 대상 코드 블록을 추출하는 추출 단계;
를 더 포함하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠용 코드 블록의 검증 방법.
The method of claim 6, wherein the step is performed between the receiving step and the verifying step.
Extracting, by the content registration server, a separation execution target code block from the received content based on the received list;
Separating execution-based code block for the content verification method further comprising a.
제4항에 있어서,
상기 분리 실행 대상 코드 블록의 정보는 상기 등록할 컨텐츠를 포함하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠용 코드 블록의 검증 방법.
The method of claim 4, wherein
And the information on the separation execution target code block includes the content to be registered.
제8항에 있어서, 상기 수신 단계와 상기 검증 단계 사이에 수행되는,
상기 컨텐츠 등록 서버가 상기 수신한 컨텐츠에 대한 프로파일링 및 분석을 통하여 분리 실행 대상 코드 블록을 추출하는 단계;
를 더 포함하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠용 코드 블록의 검증 방법.
The method of claim 8, wherein the step is performed between the receiving step and the verifying step.
Extracting, by the content registration server, a target block of execution execution through profiling and analysis of the received content;
Separating execution-based code block for the content verification method further comprising a.
제9항에 있어서,
상기 검증 결과 유효하지 않은 분리 실행 대상 코드 블록이 검출된 경우, 상기 컨텐츠 등록 서버가 상기 검증 실패 결과를 기반으로 재 프로파일링 및 분석을 수행하여 분리 실행 대상 코드 블록을 다시 추출하는 재추출 단계;
를 더 포함하며,
상기 컨텐츠 등록 서버가 상기 재추출 단계 이후에 상기 검증 단계부터 다시 수행하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠용 코드 블록의 검증 방법.
10. The method of claim 9,
Re-extracting, if the invalid execution target code block is detected as the verification result, the content registration server re-extracts and executes the separation execution target code block based on the verification failure result;
More,
Separating execution-based code block verification method for the content registration server, characterized in that to perform again from the verification step after the re-extraction step.
제4항에 있어서, 상기 검증 단계에서의 검증 항목은,
Floating Point Instruction 유무, SIMD Instruction Set 유무, Initial Context에 포함된 메모리 범위가 임계 용량을 초과하는 지의 유무, 분리 실행 대상 코드 블록 내에 장시간 반복하는 루프의 존재 유무, 분리 실행 대상 코드 블록 내에 데이터가 존재하는 지의 유무 중에 적어도 하나를 포함하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠용 코드 블록의 검증 방법.
The method of claim 4, wherein the verification item in the verification step,
Whether there is a floating point instruction, whether there is a SIMD instruction set, whether the memory range included in the initial context exceeds the critical capacity, whether there is a loop that repeats for a long time in the code block to be executed, and the data exists in the code block to be executed. Separation execution-based code block for the content, characterized in that it comprises at least one of the presence or absence.
제4항에 있어서,
상기 검증 결과 유효하지 않은 분리 실행 대상 코드 블록이 검출된 경우, 상기 컨텐츠 등록 서버가 상기 컨텐츠 제공 단말로 상기 검증 실패 결과를 피드백하는 패드백 단계;
를 더 포함하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠용 코드 블록의 검증 방법.
The method of claim 4, wherein
A padback step of feeding back, by the content registration server, the verification failure result to the content providing terminal when an invalid separation execution target code block is detected as the verification result;
Separating execution-based code block for the content verification method further comprising a.
제12항에 있어서, 상기 피드백 단계 이후에 수행되는,
상기 컨텐츠 등록 서버가 상기 컨텐츠 제공 단말로부터 상기 전송한 검증 실패 결과를 기반으로 획득한 상기 등록할 컨텐츠에 대한 분리 실행 대상 코드 블록의 정보를 재수신하는 단계;
를 더 포함하며,
상기 컨텐츠 등록 서버가 상기 재수신하는 단계 이후에 상기 검증 단계부터 다시 수행하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠용 코드 블록의 검증 방법.
The method according to claim 12, which is performed after the feedback step,
Re-receiving, by the content registration server, information of a separation execution target code block for the content to be registered, obtained based on the verification failure result transmitted from the content providing terminal;
More,
Separating execution-based code block verification method for the content registration server, characterized in that to perform again from the verification step after the step of receiving again.
제4항에 있어서,
상기 분리 실행 대상 코드 블록이 x86용 컨텐츠의 코드 영역에서 추출된 경우,
상기 검증 단계에서 상기 컨텐츠 등록 서버가 Floating Point Instruction 유무 또는 SIMD Instruction Set 유무를 검증하고,
상기 변환 단계에서 상기 컨텐츠 등록 서버가 상기 분리 실행 대상 코드 블록을 Java Byte 코드 블록 또는 ARM용 코드 블록으로 변환하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠용 분리 실행 대상 코드 블록의 검증 방법.
The method of claim 4, wherein
When the separation execution target code block is extracted from the code area of the content for x86,
In the verification step, the content registration server verifies the presence or absence of Floating Point Instruction or SIMD Instruction Set,
And in the converting step, the content registration server converts the split execution target code block into a Java Byte code block or an ARM code block.
제4항에 있어서, 상기 변환 단계 이후에 수행되는,
상기 컨텐츠 등록 서버가 상기 컨텐츠 제공 단말로 상기 수신한 분리 실행 대상 코드 블록이 유효하다는 검증 통과 결과를 패드백하는 단계;
를 더 포함하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠용 분리 실행 대상 코드 블록의 검증 방법.
The method of claim 4, wherein the step is performed after the conversion step,
Padding, by the content registration server, a verification pass result indicating that the received separation execution code block is valid to the content providing terminal;
Separating execution based content separation execution target code block verification method further comprising a.
KR1020100024136A 2009-07-30 2010-03-18 Verification system and verification method of code block for separating execution based contents KR101412465B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20090070229 2009-07-30
KR1020090070229 2009-07-30

Publications (2)

Publication Number Publication Date
KR20110013175A true KR20110013175A (en) 2011-02-09
KR101412465B1 KR101412465B1 (en) 2014-06-30

Family

ID=43772985

Family Applications (5)

Application Number Title Priority Date Filing Date
KR1020100024136A KR101412465B1 (en) 2009-07-30 2010-03-18 Verification system and verification method of code block for separating execution based contents
KR1020100024585A KR101442000B1 (en) 2009-07-30 2010-03-19 Server for registering separating execution based contents, method thereof and computer recordable medium storing program performing the method
KR1020100027937A KR101441999B1 (en) 2009-07-30 2010-03-29 Apparatus for separating contents in separating execution based, method thereof and computer recordable medium storing the method
KR20100027946A KR101478034B1 (en) 2009-07-30 2010-03-29 Apparatus for analyzing code in contents, method thereof and computer recordable medium storing the method
KR1020100030170A KR101455668B1 (en) 2009-07-30 2010-04-02 Definition apparatus of basic block group separating execution based contents, method thereof and computer recordable medium storing the basic block group and the method

Family Applications After (4)

Application Number Title Priority Date Filing Date
KR1020100024585A KR101442000B1 (en) 2009-07-30 2010-03-19 Server for registering separating execution based contents, method thereof and computer recordable medium storing program performing the method
KR1020100027937A KR101441999B1 (en) 2009-07-30 2010-03-29 Apparatus for separating contents in separating execution based, method thereof and computer recordable medium storing the method
KR20100027946A KR101478034B1 (en) 2009-07-30 2010-03-29 Apparatus for analyzing code in contents, method thereof and computer recordable medium storing the method
KR1020100030170A KR101455668B1 (en) 2009-07-30 2010-04-02 Definition apparatus of basic block group separating execution based contents, method thereof and computer recordable medium storing the basic block group and the method

Country Status (1)

Country Link
KR (5) KR101412465B1 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130063332A (en) * 2011-12-06 2013-06-14 주식회사 케이티 Method for reprsenting stored content information on user device
WO2013101079A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Profiling asynchronous events resulting from the execution of software at code region granularity
KR102043038B1 (en) 2017-12-12 2019-11-11 슈어소프트테크주식회사 Static test proceeding method based on voice information and apparatus for the same
KR102441167B1 (en) * 2018-12-05 2022-09-08 한국전자통신연구원 Apparatus and method for executing function

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020044301A (en) * 2000-12-05 2002-06-15 구자홍 Document Conversion System For Mobile Internet Contents And Vioce Internet Contents Service Method Using The System
JP2004164554A (en) 2002-09-24 2004-06-10 Hitachi Ltd Device and method for executing and monitoring program
KR100491541B1 (en) 2003-08-01 2005-05-25 니트젠테크놀러지스 주식회사 A contents synchronization system in network environment and a method therefor
JP4664055B2 (en) * 2004-12-10 2011-04-06 株式会社エヌ・ティ・ティ・ドコモ Program dividing device, program executing device, program dividing method, and program executing method
JP2006172351A (en) * 2004-12-20 2006-06-29 Hitachi Ltd Method and system for content expiration date management by use of removable medium
JP4922951B2 (en) * 2005-02-11 2012-04-25 シンプレックス メジャー センドリアン ベルハッド Software protection methods
KR100709751B1 (en) * 2005-02-22 2007-04-19 일공오이닷컴 주식회사 Method and system for digital rights management
KR100734628B1 (en) * 2005-09-29 2007-07-03 한국전자통신연구원 Distributed Software Streaming Service Method and System
US7975257B2 (en) * 2006-06-13 2011-07-05 Microsoft Corporation Iterative static and dynamic software analysis

Also Published As

Publication number Publication date
KR101455668B1 (en) 2014-11-03
KR20110013183A (en) 2011-02-09
KR20110013186A (en) 2011-02-09
KR101478034B1 (en) 2015-01-02
KR101441999B1 (en) 2014-09-24
KR20110013182A (en) 2011-02-09
KR101442000B1 (en) 2014-09-24
KR20110013176A (en) 2011-02-09
KR101412465B1 (en) 2014-06-30

Similar Documents

Publication Publication Date Title
CN109885311B (en) Application program generation method and device
CN105068932B (en) A kind of detection method of Android application programs shell adding
US7155381B2 (en) Module for developing wireless device applications using an integrated emulator
CN109918055B (en) Application program generation method and device
CN111831538B (en) Debugging method, device and storage medium
KR100546742B1 (en) Apparatus and Method for Developing Application on Target System in Embedded Software Development Environment
WO2021208288A1 (en) Program implementation method and system capable of separating code and configuration data
CN110377321A (en) Method, apparatus, terminal and the storage medium of application program updating
Yao et al. Identifying privilege separation vulnerabilities in IoT firmware with symbolic execution
WO2006009287A1 (en) Automatic converting program and program conversion server
KR101487176B1 (en) System for providing code block for separating execution based contents, method thereof and computer recordable medium storing the method
CN110032392A (en) Service administering method and device, storage medium and electronic equipment
Mahmud et al. Android compatibility issue detection using api differences
KR101412465B1 (en) Verification system and verification method of code block for separating execution based contents
CN107066886A (en) A kind of Android reinforces the detection method of shelling
CN110826074A (en) Application vulnerability detection method and device and computer readable storage medium
Niu et al. Clone analysis and detection in android applications
CN111427770B (en) Resource testing method and related equipment
KR101384536B1 (en) System and method for calling API of host terminal in smart-card, host terminal and smart-card, and recording medium thereof
CN108345461B (en) Application updating method and device and computer readable storage medium
CN113608996B (en) Mirror image compiling test method, system, device and readable storage medium
CN107341403A (en) A kind of document conversion method and device
CN110083363B (en) Method for intercepting wireless data packet in Linux kernel dynamic injection mode
Yoon et al. A Hidden File Extraction Scheme Defeating Malware Using Android Dynamic Loading
CN114253526A (en) Online pricing method, device, equipment and storage medium

Legal Events

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

Payment date: 20170607

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180607

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190604

Year of fee payment: 6