KR101544731B1 - Storage device capable of separating execution of executable content, and device for configuring native execution environment in storage device - Google Patents

Storage device capable of separating execution of executable content, and device for configuring native execution environment in storage device Download PDF

Info

Publication number
KR101544731B1
KR101544731B1 KR1020100031065A KR20100031065A KR101544731B1 KR 101544731 B1 KR101544731 B1 KR 101544731B1 KR 1020100031065 A KR1020100031065 A KR 1020100031065A KR 20100031065 A KR20100031065 A KR 20100031065A KR 101544731 B1 KR101544731 B1 KR 101544731B1
Authority
KR
South Korea
Prior art keywords
memory
execution
block
code
host terminal
Prior art date
Application number
KR1020100031065A
Other languages
Korean (ko)
Other versions
KR20110013192A (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 KR20110013192A publication Critical patent/KR20110013192A/en
Application granted granted Critical
Publication of KR101544731B1 publication Critical patent/KR101544731B1/en

Links

Images

Classifications

    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본 발명은 실행형 컨텐츠의 저작권 보호를 위하여 실행형 컨텐츠를 분리 실행하는 저장 장치 및 그의 네이티브 실행 환경 구현 장치에 관한 것이다. 본 발명에 의한 저장 장치에서 네이티브 실행 환경 구현 장치는, 로더를 통해 실행할 코드 블록을 로딩하고, 링킹을 수행하여 코드 블록의 참조값이 고정되지 않은 코드의 참조값을 고정한다. 실행자를 통해 로더에 의해 로드된 코드 블록의 엔트리 포인트를 강제로 호출하여, 실행한다. 작업 관리자를 통해 코드 블록 별로 TCB(Task Control Block)을 생성하여 관리하고, TCB를 통해 호스트 단말로부터 전달된 데이터를 실행자로 전달하고, 실행 결과를 호스트 단말로 반환한다. 이러한 네이티브 실행 환경 구현 장치를 통해서, 실행형 컨텐츠의 분리 실행 속도를 향상시킬 수 있다.The present invention relates to a storage device for separately executing executable contents for copyright protection of executable contents and an apparatus for implementing the native execution environment. In the storage apparatus according to the present invention, the native execution environment implementing apparatus loads the code block to be executed through the loader and performs linking to fix a reference value of a code whose reference value of the code block is not fixed. The execution point of the code block loaded by the loader is forcibly called and executed. It generates and manages a TCB (Task Control Block) for each code block through the task manager, transfers the data transferred from the host terminal to the executor through the TCB, and returns the execution result to the host terminal. Through this native execution environment implementing device, it is possible to improve the execution speed of executing executable contents.

Description

실행형 컨텐츠의 분리 실행이 가능한 저장 장치 및 그의 네이티브 실행 환경 구현 장치{Storage device capable of separating execution of executable content, and device for configuring native execution environment in storage device}Technical Field [0001] The present invention relates to a storage device capable of executing executable content, and a storage device capable of performing a separating execution of an executable content,

본 발명은 실행형 컨텐츠의 저작권 보호를 위하여 호스트 단말과 저장 장치의 상호 연동을 통해 실행형 컨텐츠를 분리 실행하는데 있어서, 실행형 컨텐츠의 코드 영역에서 분리된 코드 블록을 호스트 단말과의 연동을 통해 분리 실행할 수 있는 저장 장치, 및 그의 네이티브 실행 환경 구현 장치에 관한 것이다.The present invention separates and executes the executable content through interoperation between the host terminal and the storage device to protect the copyright of the executable content. The code block separated from the code area of the executable content is separated An executable storage device, and an apparatus for implementing the native execution environment.

최근 PC(Personal Computer)나 PDA(Personal Digital Assistant)와 같은 다양한 호스트 단말의 사용이 증가하면서, 그에 맞추어 호스트 단말에서 이용되는 디지털 컨텐츠 들도 다양하게 개발되고 있다.2. Description of the Related Art [0002] Recently, as the use of various host terminals such as a personal computer (PC) and a personal digital assistant (PDA) has been increasing, various digital contents used in host terminals have been developed accordingly.

디지털 컨텐츠는 디지털 형식으로 만들어진 문자, 음성, 음향, 이미지 등을 의미하는 것으로서, 최근 디지털 기술이 발달하면서 그 종류가 더욱 다양해지고 있다. 이러한 디지털 컨텐츠는 무료로 사용할 수 있는 프리웨어인 경우도 있지만, 대부분 상용으로 개발된 것으로, 소정의 가격을 지불하여 사용권이나 프로그램을 구매한 후 사용하도록 되어 있다. 그러나 일부 사용자들이 크래킹 등을 통해서 이들을 불법으로 복제하거나 사용하는 경우가 많이 있다.Digital contents refers to characters, sounds, sounds, images, and the like, which are made in a digital format. Recently, with the development of digital technology, the kinds of digital contents have become more diverse. These digital contents are freeware that can be freely used, but most of them are developed for commercial use, and they are used after purchasing a license or a program at a predetermined price. However, there are many cases in which some users illegally copy or use them through cracking.

따라서 개발자의 권익 보호를 위해 디지털 컨텐츠에 대한 저작권을 보호하는 디지털 저작권 관리(Digital Rights Management) 기술에 대한 중요성이 커지고 있다.Therefore, in order to protect the rights of developers, digital rights management technology that protects copyright on digital contents is becoming more important.

DRM은 디지털 컨텐츠의 무단 사용을 막아, 디지털 컨텐츠 제공자의 권리와 이익을 보호하며 불법 복제를 막고 사용료 부과와 결제 대행 등 컨텐츠의 생성에서 유통 및 관리까지를 지원하는 기술 및 서비스를 통틀어 일컫는 것으로서, 여기에는 적법한 사용자만 컨텐츠를 사용하고 적절한 요금을 지불하도록 하는 디지털 저작권 관리기술, 저작권 승인과 집행을 위한 소프트웨어 및 보안기술, 지불/결제 기술이 모두 포함된다.DRM refers to technologies and services that prevent the unauthorized use of digital contents, protect the rights and interests of digital contents providers, prevent illegal copying, charge fees, settle and distribute contents, and support distribution and management. Include digital rights management technology that allows only legitimate users to use content and pay appropriate fees, software and security technology for copyright approval and enforcement, and payment / billing technology.

특히, 이러한 DRM 시스템에서는 디지털 컨텐츠의 불법 복제 및 사용을 방지하기 위하여, 다양한 방법들이 이용되고 있는데, 가장 보편적인 방법은 인증 키를 이용하는 것이다. 이 방법은 인증 키를 입력하는 경우에만 디지털 컨텐츠를 설치하거나 실행할 수 있도록 되어 있으나, 사용자들이 서로 인증 키를 공유하거나, 키 검증 알고리즘의 리버스 엔지니어링을 통한 불법 사용이나 불법 복제가 여전히 이루어지고 있다.Particularly, in such a DRM system, various methods are used to prevent illegal copying and use of digital contents. The most common method is to use an authentication key. In this method, digital content can be installed or executed only when an authentication key is input. However, illegal use or illegal copying is still performed by users sharing the authentication key with each other or by reverse engineering the key verification algorithm.

더 강력한 방법으로, 하드웨어 키 록을 제공하여, 프로그램 실행 시 제공된 키 록이 존재하는 경우에만 실행이 되도록 하는 방법이 있다. 그러나 이 방식 또한 키 록을 확인하는 부분만 바이패스(bypass)하도록 프로그램을 수정하는 방법으로 무력화될 수 있다.In a more powerful way, there is a way to provide a hardware key lock so that it is executed only when the provided key lock is present when the program is executed. However, this method can also be disabled by modifying the program to bypass only the portion of the key lock.

이로 인하여 디지털 컨텐츠의 불법 사용은 여전히 이루어지고 있으며, 디지털 컨텐츠의 무단 사용으로 인한 컨텐츠 개발사의 피해가 증가하고 있는 실정이다. 디지털 컨텐츠의 무단 사용은 컨텐츠 개발사의 응용프로그램의 개발 의욕을 떨어뜨리는 요인으로 작용하고, 또한 디지털 컨텐츠의 개발 시, 불법 복제 및 사용을 억제하기 위한 보안 기술의 개발에 따른 디지털 컨텐츠의 개발 비용을 증가시켜, 컨텐츠 제공자에게 부담으로 작용한다.As a result, the illegal use of digital contents is still being performed, and the damage caused by content developers due to unauthorized use of digital contents is increasing. Unauthorized use of digital contents is a factor that deteriorates the desire to develop application programs of content developers. In addition, when developing digital contents, it increases the development cost of digital contents due to development of security technology for suppressing illegal copy and use , Which is a burden on the content provider.

본 발명은 종래의 문제점을 해결하기 위하여 제안된 것으로서, 저작권 보호를 위하여 실행형 컨텐츠를 분리 실행하는데 있어서, 실행형 컨텐츠의 코드 영역에서 분리된 코드 블록을 상기 호스트 단말과의 연동을 통해 분리 실행하는 저장 장치 및 그의 네이티브 실행 환경 구현 장치를 제공하고자 한다.The present invention has been proposed in order to solve the problems of the related art, and it is an object of the present invention to separate and execute executable contents for protection of copyright by separating code blocks separated from the code area of executable contents through interlocking with the host terminal A storage device and an apparatus for implementing the native execution environment.

상기 과제를 해결하기 위한 수단으로서, 본 발명은 오퍼레이팅 시스템 및 네이티브 실행 환경 구현 장치를 포함하고 호스트 단말과 연동하여 실행형 컨텐츠의 분리 실행을 수행하는 저장 장치를 제공한다. 오퍼레이팅 시스템은 저장 장치의 하드웨어 요소를 관리 및 운영하여, 호스트 단말과의 통신, 내부 메모리에 대한 데이터의 읽기 및 쓰기, 파일의 접근 제어, 사용자 인증, 응용 프로그램의 실행 중에서 하나 이상의 기능을 수행한다. 네이티브 실행 환경 구현 장치는, 오퍼레이팅 시스템의 확장 형태로 구현되어, 실행할 코드 블록을 로드하여, 런타임에 링킹한 후, 실행 결과를 호스트 단말로 제공한다.As a means for solving the above-mentioned problems, the present invention provides a storage device including an operating system and a native execution environment implementing device and performing a separate execution of executable contents in cooperation with a host terminal. The operating system manages and operates the hardware elements of the storage device to perform at least one of communication with the host terminal, reading and writing data to the internal memory, file access control, user authentication, and execution of an application program. The native execution environment implementation device is implemented as an extension of the operating system, loads the code block to be executed, links it at runtime, and provides the execution result to the host terminal.

본 발명에 의한 저장 장치는, 실행형 컨텐츠의 RO(Right Object)에 대한 설치 및 관리 기능을 수행하고, 상기 호스트 단말과 보안 채널을 연결하여 분리 실행을 위한 정보를 교환할 수 있도록 하는 저장 장치용 DRM(Digital Right Management) 에이전트를 더 포함할 수 있다.The storage device according to the present invention is a storage device for performing installation and management functions for RO (Right Object) of executable contents and for exchanging information for separation execution by connecting the host terminal with a secure channel And a DRM (Digital Right Management) agent.

본 발명에 의한 네이티브 실행 환경 구현 장치는, 로더와, 실행자와, 작업 관리자를 포함한다. 로더는 실행할 코드 블록을 로딩하고, 참조값이 정해지지 않은 코드의 참조값을 고정하는 링킹을 수행한다. 실행자는 로더에 의해 로드된 코드 블록의 엔트리 포인트를 강제로 호출하여, 코드 블록을 실행시킨다. 작업 관리자는 호스트 단말의 복수의 어플리케이션에 1:1로 매핑하여 TCB(Task Control Block)을 생성하여 관리하고, TCB를 통해 호스트 단말로부터 전달된 데이터를 실행자로 전달하고, 그 실행 결과를 호스트 단말로 반환한다.An apparatus for implementing a native execution environment according to the present invention includes a loader, an executor, and a task manager. The loader loads the code block to be executed and performs linking to fix the reference value of the code for which the reference value is not set. The executor forcibly invokes the entry point of the code block loaded by the loader to execute the code block. The task manager generates and manages a task control block (TCB) by mapping 1: 1 to a plurality of applications of the host terminal, transfers the data transferred from the host terminal to the executor through the TCB, Return.

본 발명에 의한 네이티브 실행 환경 구현 장치는, 메모리 매퍼를 더 포함할 수 있다. 메모리 매퍼는 코드 블록의 실행 중에, 호스트 단말의 메모리 참조가 필요한 경우, 호스트 단말로 메모리 참조 요청을 전달하고, 그에 대한 결과를 호스트 단말로부터 반환받아 실행자로 전달한다.The apparatus for implementing a native execution environment according to the present invention may further include a memory mapper. When a memory reference of a host terminal is required during execution of a code block, the memory mapper delivers a memory reference request to the host terminal, and returns the result of the memory reference request to the host terminal.

본 발명에 의한 네이티브 실행 환경 구현 장치는, 코드 블록의 실행 중에 OS API 호출이 필요한 경우, 호스트 단말과 연동하여, 호스트 단말의 OS API를 호출하고, 그 결과를 반환받아 실행자로 전달하는 OS API 매퍼를 더 포함할 수 있다.An apparatus for implementing a native execution environment according to the present invention includes an OS API mapper that, when an OS API call is required during execution of a code block, calls an OS API of a host terminal in cooperation with a host terminal, As shown in FIG.

본 발명에 의한 네이티브 실행 환경 구현 장치는, 코드 블록의 실행을 위하여 사용될 메모리를 저장 장치의 오퍼레이팅 시스템으로부터 할당받아 관리하는 메모리 관리자를 더 포함할 수 있다.The apparatus for implementing a native execution environment according to the present invention may further include a memory manager that allocates and manages a memory to be used for execution of a code block from an operating system of the storage device.

본 발명에 의한 네이티브 실행 환경 구현 장치에 있어서, 실행자는, 호스트 단말로부터 실행할 코드 블록이 전달되면 로더를 호출하는 기능을 더 수행한다.In the native execution environment implementing apparatus according to the present invention, the executor further performs a function of calling a loader when a code block to be executed is transmitted from the host terminal.

본 발명에 의한 네이티브 실행 환경 구현 장치에 있어서, 실행자는 코드 블록의 실행 중에, 호스트 단말의 응답을 기다려야 하는 경우, 현재 실행중이던 인스트런션 포인트(Instruction point) 및 레지스터 값을 컨텍스트(context) 형태로 저장하고, 호스트 단말의 응답이 도착하면 저장된 값을 참조하여 해당 인스트럭션 포인트부터 재구동시킨다.In an apparatus for implementing a native execution environment according to the present invention, when an executor needs to wait for a response from a host terminal during execution of a code block, an execution instruction point and a register value, which are currently being executed, And when the response of the host terminal arrives, it refers to the stored value and restarts it from the corresponding instruction point.

본 발명에 의한 네이티브 실행 환경 구현 장치에 있어서, 작업 관리자는 호스트 단말에서 RO(Right object)의 체크 시에, 사용 권한이 있으면, TCB를 생성하고, 호스트 단말에서 대응하는 어플리케이션이 종료되거나, 저장 장치의 파워가 오프되는 경우에 생성된 TCB를 제거한다.In the native execution environment realization device according to the present invention, the task manager generates a TCB when the right terminal has a use right at the time of checking the RO (Right Object) at the host terminal, terminates the corresponding application at the host terminal, The TCB generated is removed.

본 발명에 의한 네이티브 실행 환경 구현 장치에 있어서, 로더는 링킹 과정 중에, 상기 코드 블록에 호스트 단말의 메모리를 참조하는 코드가 있는 경우, 메모리 매퍼를 호출하도록 링킹하고, 이때 메모리 매퍼는 코드블록의 실행 중에 호출되면, 호출을 패키징하여 호스트 단말로 전달하고, 호스트 단말로부터 처리 결과를 전달받아 이를 해석하여 상기 실행자에게 전달한다.In the native execution environment implementation apparatus according to the present invention, the loader links the memory mapper to call the memory block when the code block refers to the memory of the host terminal during the linking process, , The call is packaged and transferred to the host terminal, and the processing result is received from the host terminal and is analyzed and transmitted to the executor.

본 발명에 의한 네이티브 실행 환경 구현 장치에 있어서, 로더는 링킹 과정 중에, 코드 블록에 있어서 호스트 단말의 OS API를 참조하는 코드에 대하여, OS API 매퍼를 호출하도록 링킹하고, OS API 매퍼는 코드블록의 실행 중에, 호출되면, 호출을 패키징하여, 호스트 단말로 전달하고, 호스트 단말의 응답을 해석하여 실행자에게 전달한다.In the native execution environment implementing apparatus according to the present invention, the loader links the OS API mapper to the code referring to the OS API of the host terminal in the code block during the linking process, and the OS API mapper links the OS API mapper When invoked during execution, the call is packaged and delivered to the host terminal, and the response of the host terminal is interpreted and transmitted to the implementer.

본 발명에 의한 네이티브 실행 환경 구현 장치에 있어서, 상기 메모리 관리자는 오퍼레이팅 시스템으로부터 4 바이트로 정렬된 동적 메모리를 할당받고, 할당받은 동적 메모리를 복수의 군(Size-Class)로 나누어 관리하며, 할당받은 동적 메모리에 대한 부분적인 메모리 컴팩션을 지원하고, 물리적으로 인접한 프리 메모리 블록을 병합하는 기능을 수행한다.In the apparatus for implementing a native execution environment according to the present invention, the memory manager allocates 4-byte aligned dynamic memory from the operating system, divides the allocated dynamic memory into a plurality of groups (size-class) It supports partial memory compaction for dynamic memory and performs the function of merging physically adjacent free memory blocks.

본 발명에 의한 네이티브 실행 환경 구현 장치에 있어서, 메모리 관리자에 의해 관리되는 메모리 블록은, 실제 데이터(Real Data)가 저장되는 동적 할당 메모리와, 동적 할당 메모리의 앞에 위치한 헤더로 구성되고, 헤더는 물리적으로 앞쪽에 위치한 메모리 블록의 크기와, 메모리 그룹을 위한 체크 비트가 기록되는 제1 섹션과, 해당 메모리 블록의 크기와, 해당 메모리 블록의 사용 여부가 기록되는 제2 섹션과, 다음 프리 메모리 블록의 포인터와 해당 메모리 블록을 할당한 어플리케이션 ID가 기록되는 제3 섹션과, 해당 메모리 블록의 앞쪽에 있는 프리 메모리 블록의 주소 및 간접 주소가 기록되는 제4 섹션을 포함한다.In the native execution environment implementation apparatus according to the present invention, the memory block managed by the memory manager is composed of a dynamic allocation memory in which real data is stored, and a header located in front of the dynamic allocation memory, A first section in which a size of a memory block located at a front side and a check bit for a memory group are recorded, a size of the memory block, a second section in which whether or not the memory block is used is recorded, A third section in which a pointer and an application ID to which the memory block is allocated are recorded, and a fourth section in which the addresses and indirect addresses of the free memory blocks in front of the memory block are recorded.

본 발명에 의한 네이티브 실행 환경 구현 장치에 있어서, 코드블록은 분리 실행 기반 실행형 컨텐츠의 코드 영역에서 분리된 분리 실행 대상 코드 블록이 저장 장치에서 실행 가능한 형태로 변환된 저장 장치용 코드 블록이다. In the native execution environment implementing apparatus according to the present invention, the code block is a code block for a storage device in which a code block to be separated from the code area of the execution-based execution content is converted into a form executable in the storage device.

여기서, 분리 실행 대상 코드 블록은 실행형 컨텐츠의 코드 영역에 존재하는 복수의 베이식 블록으로 이루어진 복수의 베이식 블록 그룹 중에서 실행형 컨텐츠의 중요 경로(critical path) 상에 있는 베이식 블록 그룹이다. Here, the detachment object code block is a basic block group on a critical path of executable contents among a plurality of basic block groups made up of a plurality of basic blocks existing in the code area of the executable contents.

베이식 블록 그룹은 시작점(entry point)을 통한 제어 신호의 진입 및 상기 복수의 베이식 블록 간의 제어 신호의 이동은 허용하고, 상기 시작점을 제외한 상기 복수의 베이식 블록 내부로의 제어 신호의 진입이 없는 서로 관련된 상기 복수의 베이식 블록의 모임이다.The basic block group allows entry of a control signal through an entry point and movement of a control signal between the plurality of basic blocks and allows the control signals to be transferred to the plurality of basic blocks without entry of control signals into the plurality of basic blocks Is a group of the plurality of basic blocks.

베이식 블록은 단일 입력(single input) 및 단일 출력(single output)의 속성과, 외부에서 내부로의 제어 신호의 진입을 허용하지 않는 속성을 갖는 코드 블록이다.A basic block is a block of code with attributes of single input and single output and attributes that do not allow entry of control signals from outside to inside.

본 발명에 의한 저장 장치 및 네이티브 실행 환경 구현 장치에 있어서, 저장 장치용 코드 블록은 저장 장치의 프로세서용 명령어를 내장하는 코드 블록이다.In the storage device and the native execution environment realization apparatus according to the present invention, the code block for the storage device is a code block containing a processor instruction word of the storage device.

본 발명에 의한 네이티브 실행 환경 구현 장치는, 저장 장치의 ROM에서 특정 영역을 할당받아 파일 시스템을 구현한다.An apparatus for implementing a native execution environment according to the present invention implements a file system by allocating a specific area in a ROM of a storage device.

도 1은 본 발명이 적용되는 디지털 저작권 관리 시스템의 개략적인 구조를 보인 도면이다.
도 2는 본 발명이 적용되는 실행형 컨텐츠의 구조를 개략적으로 나타낸 도면이다.
도 3은 본 발명에 따른 분리 실행 기반 실행형 컨텐츠의 구조를 개략적으로 나타낸 도면이다.
도 4는 본 발명이 적용되는 디지털 저작권 관리 시스템에 있어서, 분리 실행 기반 실행형 컨텐츠의 구조 및 분리 실행 과정을 나타낸 블록도이다.
도 5는 본 발명에 따른 실행형 컨텐츠의 분리 실행이 가능한 저장 장치의 구성을 나타낸 블록도이다.
도 6은 본 발명에 따른 네이티브 실행 환경 구현 장치의 구성을 나타낸 블록도이다.
도 7은 본 발명에 따른 네이티브 실행 환경 구현 장치에 있어서, 로더(Loader)의 기능을 설명하는 예시도이다.
도 8은 본 발명에 따른 네이티브 실행 환경 구현 장치에 있어서, 작업 관리자의 동작을 설명하기 위한 도면이다.
도 9는 본 발명에 따른 네이티브 실행 환경 구현 장치에 있어서, 작업 생성자의 TCB 생성 동작을 나타낸 메시지 흐름도이다.
도 10은 본 발명에 따른 네이티브 실행 환경 구현 장치에 있어서, 작업 생성자의 TCB 종료 동작을 나타낸 메시지 흐름도이다.
도 11은 본 발명에 따른 네이티브 실행 환경 구현 장치에 있어서, 메모리 관리자의 기능을 설명하는 도면이다.
도 12는 본 발명에 따른 네이티브 실행 환경 구현 장치에 있어서, 메모리 관리자에 의해 관리되는 메모리 블록 구조도이다.
도 13은 본 발명에 따른 네이티브 실행 환경 구현 장치의 파일 시스템의 구조를 나타낸 도면이다.
1 is a diagram showing a schematic structure of a digital rights management system to which the present invention is applied.
2 is a diagram schematically showing the structure of an executive content to which the present invention is applied.
3 is a diagram schematically illustrating the structure of an execution-based execution content according to the present invention.
FIG. 4 is a block diagram illustrating a structure of a separation-based execution content and a separation execution process in the digital rights management system to which the present invention is applied.
5 is a block diagram illustrating a configuration of a storage device capable of separately executing executable content according to the present invention.
6 is a block diagram showing a configuration of a native execution environment implementation apparatus according to the present invention.
7 is an exemplary diagram illustrating a function of a loader in a native execution environment realization apparatus according to the present invention.
8 is a diagram for explaining the operation of the task manager in the native execution environment realization apparatus according to the present invention.
9 is a message flow diagram illustrating a TCB generation operation of a task creator in the native execution environment realization device according to the present invention.
10 is a message flow diagram illustrating a TCB termination operation of a task creator in the native execution environment realization device according to the present invention.
11 is a diagram for explaining the function of the memory manager in the native execution environment realization apparatus according to the present invention.
12 is a block diagram of a memory block managed by a memory manager in the native execution environment realization device according to the present invention.
13 is a diagram illustrating a structure of a file system of a native execution environment implementing apparatus according to the present invention.

이하 본 발명의 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 다만, 하기의 설명 및 첨부된 도면에서 본 발명의 요지를 흐릴 수 있는 공지 기능 또는 구성에 대한 상세한 설명은 생략한다. 또한, 도면 전체에 걸쳐 동일한 구성 요소들은 가능한 한 동일한 도면 부호로 나타내고 있음에 유의하여야 한다.Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings. In the following description and the accompanying drawings, detailed description of well-known functions or constructions that may obscure the subject matter of the present invention will be omitted. It should be noted that the same constituent elements are denoted by the same reference numerals as possible throughout the drawings.

도 1은 본 발명이 적용되는 디지털 저작권 관리 시스템(이하, DRM 시스템이라 함)의 전체 구조를 나타낸 블록도이다.1 is a block diagram showing the entire structure of a digital rights management system (hereinafter referred to as DRM system) to which the present invention is applied.

도 1을 참조하면, 본 발명이 적용되는 DRM 시스템(10)은, 네트워크(11)를 매개로 연결된 컨텐츠 제공 서버(12) 및 호스트 단말(13)과, 상기 호스트 단말(13)에 유무선 인터페이스를 매개로 연결된 저장 장치(14)를 포함하여 구성된다.1, the DRM system 10 to which the present invention is applied includes a content providing server 12 and a host terminal 13 connected via a network 11, a wired / wireless interface And an intermediately connected storage device 14.

본 발명에 있어서, '분리 실행'은 실행형 컨텐츠가 두 개의 서로 다른 장치, 더 구체적으로는 호스트 단말(13)과 저장 장치(14)의 연동을 통해 실행되는 것을 의미한다. 이러한 분리 실행을 구현하기 위해서, 호스트 단말(13)에는 코드 영역에서 선택된 코드 블록(이하 분리 실행 대상 코드 블록이라 함)이 제거된 분리 실행기반 실행형 컨텐츠(15a)가 저장되고, 상기 저장 장치(14)에는 분리 실행 대상 코드 블록이 저장 장치(14)에서 실행 가능하도록 변환된 저장 장치용 코드 블록(15b)이 저장된다. 상기 상태에서 분리 실행은, 호스트 단말(13)이 분리 실행 기반 실행형 컨텐츠(15a)에서 제거된 부분(분리 실행 대상 코드 블록)에 대한 결과값을 저장 장치(14)에 요청하여 반환 받는 형태로 이루어진다. In the present invention, 'separate execution' means that the executable content is executed through two different apparatuses, more specifically, interworking of the host terminal 13 and the storage device 14. In order to implement such separate execution, the host terminal 13 stores the execution execution-based executable content 15a from which a code block selected as a code area (hereinafter, referred to as a separation execution object code block) is removed, 14 stores a code block 15b for a storage device converted so as to be executable in the storage device 14 as a code block to be separated. The separation execution in the above state is a form in which the host terminal 13 requests the storage device 14 to return the result of the part removed from the execution execution based on the execution execution content 15a .

따라서, 본 발명이 적용되는 실행형 컨텐츠는, 실행 파일을 포함하는 컨텐츠를 의미하며, 예를 들어, 게임 프로그램 및 응용 프로그램을 포함한다.Accordingly, the executable content to which the present invention is applied refers to content including an executable file, for example, a game program and an application program.

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

상기 컨텐츠 제공 서버(12)는 분리 실행기반 실행형 컨텐츠(15a) 및 저장 장치용 코드 블록(15b)을 저장하고 있으며, 이를 고객의 요청에 따라서 호스트 단말(13)로 제공한다. 상기 컨텐츠 제공 서버(12)는 실행형 컨텐츠를 분리 실행이 가능하도록 분리 실행 기반 실행형 컨텐츠(15a)와 저장 장치용 코드 블록(15b)으로 변환하는 기능을 더 수행할 수 있다.The content providing server 12 stores separate execution execution type content 15a and a storage device code block 15b and provides the same to the host terminal 13 at the request of the customer. The content providing server 12 may further perform a function of converting executable content into separate execution execution type content 15a and a storage device code block 15b so that the executable content can be separately executed.

상기 호스트 단말(13)은 실행형 컨텐츠를 실행할 수 있는 독립된 CPU를 가진 컴퓨팅 장치, 예컨대 PC, 노트북, 워크스테이션, PDA 등을 통칭한다. 호스트 단말(13)은 다수의 사용자에 의해 접근이 자유로운 공용 컴퓨터를 포함한다. 호스트 단말(13)에는 분리실행기반 실행형 컨텐츠(15a)가 설치되어 있다. 호스트 단말(13)에 유무선 인터페이스를 통해 저장 장치(14)가 연결되면, 호스트 단말(13)은 저장 장치(14)와 연동하여 실행형 컨텐츠의 분리 실행을 수행한다. 더하여, 호스트 단말(13)은 사용자의 요청에 따라서 컨텐츠 제공 서버(12)로 실행형 컨텐츠의 구매를 요청하고, 상기 컨텐츠 제공 서버(12)로부터 분리 실행 기반 실행형 컨텐츠(15a)와 저장 장치용 코드 블록(15b)을 다운받아, 분리 실행 기반 실행형 컨텐츠(15a)는 자신의 메모리에 저장하고, 상기 저장 장치용 코드 블록(15b)은 저장 장치(14)로 전달한다.The host terminal 13 collectively refers to a computing device having an independent CPU capable of executing executable content, such as a PC, a notebook, a workstation, a PDA, and the like. The host terminal 13 includes a public computer which is accessible by a plurality of users. The host terminal 13 is provided with an execution-based execution content 15a. When the storage device 14 is connected to the host terminal 13 via the wired / wireless interface, the host terminal 13 performs separation execution of the executable content in cooperation with the storage device 14. [ In addition, the host terminal 13 requests the content providing server 12 to purchase the executable content at the request of the user, and transmits the execution-based content 15a and the storage device The code block 15b is downloaded and the execution execution based executive content 15a is stored in its own memory and the storage code block 15b is transferred to the storage device 14. [

여기서 호스트 단말(13)과 저장 장치(14)를 연결하는 유무선 인터페이스는 USB, USB2, Serial/Parallel Port, Ethernet, TCP/IP, 통신 케이블 등을 이용한 유선 통신 방식과, 근거리 무선통신방식으로 구현될 수 있다. 근거리 무선 통신 방식으로는 블루투스(Bluetooth), 지그비(zigbee), 루비(Rubee), 적외선데이터통신(IrDA; Infrared Data Association), 초광대역방식(UWB; Ultra Wide Broadband) 등이 사용될 수 있다. 이외에도 향후 개발될 다양한 기술이 적용될 수 있다.The wired / wireless interface connecting the host terminal 13 and the storage device 14 may be implemented using a wired communication method using USB, USB2, Serial / Parallel Port, Ethernet, TCP / IP, . Bluetooth, Zigbee, Ruby, Infrared Data Association (IrDA), and Ultra Wide Broadband (UWB) may be used as the short-range wireless communication method. In addition, various technologies to be developed in the future can be applied.

저장 장치(14)는 유무선 인터페이스를 통해 호스트 단말(13)에 연결되며, 호스트 단말(13)을 통해 저장 장치용 코드 블록(15b)을 전달받아 저장하고 관리한다. 상기 저장 장치용 코드 블록(15b)을 안전하게 보관하기 위하여, 상기 저장 장치(14)는 보안 기능을 구비하는 것이 바람직하다. 그리고 상기 저장 장치(14)는 호스트 단말(13)과 연동하여 분리 실행을 수행하기 위하여, 프로세서를 구비하는 것이 바람직하다. 이에 의하여, 저장 장치(14)는 상기 호스트 단말(13)의 요청에 따라 저장 장치용 코드 블록(15b)을 실행하여 그 결과값을 호스트 단말(13)로 반환한다.The storage device 14 is connected to the host terminal 13 via a wired / wireless interface and receives and stores and manages the storage device code block 15b through the host terminal 13. [ In order to safely store the code block 15b for the storage device, the storage device 14 preferably has a security function. In addition, the storage device 14 preferably includes a processor for performing a separate execution in conjunction with the host terminal 13. [ Thus, the storage device 14 executes the storage device code block 15b at the request of the host terminal 13 and returns the resultant value to the host terminal 13.

상술한 DRM 시스템에서, 컨텐츠 제공자는 컨텐츠 제공 서버(12)를 통하여, 적법한 사용자의 호스트 단말(13)에 분리 실행 기반 실행형 컨텐츠(15a)를 제공하고, 저장 장치(14)에 저장 장치용 코드 블록(15b)을 저장시킨다. 이후, 적법한 사용자가, 상기 저장 장치용 코드 블록(15b)이 저장된 저장 장치(14)를 호스트 단말(13)에 연결한 상태에서, 호스트 단말(13)에 설치된 분리 실행 기반 실행형 컨텐츠(15a)를 실행시키면, 호스트 단말(13)과 저장 장치(14)의 연동을 통해 분리실행 기반의 실행형 컨텐츠가 정상적으로 실행되므로, 저장 장치용 코드 블록(15b)이 없는 경우에 상기 실행형 컨텐츠는 정상적으로 실행될 수 없다.In the DRM system described above, the content provider provides separate execution-based execution content 15a to the host terminal 13 of a legitimate user through the content providing server 12, And stores block 15b. Thereafter, when a legitimate user connects the storage device 14 in which the storage device code block 15b is stored to the host terminal 13, the execution execution based on the execution execution based content 15a provided in the host terminal 13, Execution-based content is normally executed through interlocking between the host terminal 13 and the storage device 14, so that when the storage device code block 15b is not present, the execution-type content is normally executed I can not.

본 발명에 의한 분리 실행 기반 실행형 컨텐츠에 대한 기본 개념을 도 2 및 도 3을 참조하여 설명한다.The basic concept of the execution-based execution content according to the present invention will be described with reference to FIGS. 2 and 3. FIG.

도 2는 본 발명이 적용되는 실행형 컨텐츠의 데이터 구조를 개략적으로 나타낸 도면으로서, 이를 참조하면, 본 발명이 적용되는 실행형 컨텐츠(20)는, 복수 개의 파일, 예컨대, 실행 파일, 운영체제에서 제공하는 API(application program interface), 개발사에서 제공하는 API 또는 DLL(dynamic linking library)과 같은 파일을 포함한다. 이와 같은 실행형 컨텐츠(20)는, 코드 영역(21)과 데이터 영역(23)을 포함한다. 실제로 코드 영역(21)과 데이터 영역(23)은 서로 섞여 있다. 코드 영역(21)은 복수의 베이식 블록(25; basic block)으로 이루어진 복수의 베이식 블록 그룹(27)을 포함한다.2 is a diagram schematically illustrating a data structure of an executive content to which the present invention is applied. Referring to FIG. 2, an executable content 20 to which the present invention is applied includes a plurality of files, for example, an executable file, Such as an application program interface (API), an API provided by the developer, or a dynamic linking library (DLL). Such an executive content 20 includes a code area 21 and a data area 23. Actually, the code area 21 and the data area 23 are mixed with each other. The code area 21 includes a plurality of basic block groups 27 made up of a plurality of basic blocks 25.

여기서, 베이식 블록(25)은 단일 입력(single input) 및 단일 출력(single output)의 속성을 갖는 명령어의 열(sequence of instruction)을 의미하는 것으로서, 외부에서 내부로의 진입을 허용하지 않는 속성을 갖는 코드 블록으로 정의할 수 있다. 즉 베이식 블록(25)은 시작부터 끝까지 한번에 실행되는 연속적인 문장(코드의 모임)을 의미하며, 중간에 흐름 제어로 인해 실행이 중지되지 않는 문장 그룹이다.Here, the basic block 25 means a sequence of instructions having attributes of a single input and a single output, and is a property that does not allow entry from the outside to the inside As shown in Fig. That is, the basic block 25 is a continuous sentence (a group of codes) executed at a time from the beginning to the end, and is a group of sentences whose execution is not stopped due to the flow control in the middle.

도 3은 본 발명에 따른 분리 실행 기반 실행형 컨텐츠의 구조를 개략적으로 나타낸 도면이다.3 is a diagram schematically illustrating the structure of an execution-based execution content according to the present invention.

도 3을 참조하면, 본 발명에 따른 분리 실행 기반 실행형 컨텐츠는, 실행형 컨텐츠(30)와, 하나 이상의 분리 실행 대상 코드 블록(37)으로 이루어진다.Referring to FIG. 3, the execution-based execution content according to the present invention includes executable content 30 and at least one separate execution object code block 37.

실행형 컨텐츠(30)는 하나 이상의 분리 실행 대상 코드 블록(37)을 대신하여 스터브 코드(39)가 삽입된 코드 영역(31)과, 데이터 영역(33)을 포함한다. 이때 스터브 코드(39)는 추출된 분리 실행 대상 코드 블록(37)을 대신하여 삽입되는 코드로서, 실행형 컨텐츠(30)와, 분리 실행 대상 코드 블록(37)을 연결한다. 더 구체적으로, 스터브 코드(39)는 실행형 컨텐츠(30)에 대한 실행을 수행할 때, 대응하는 분리 실행 대상 코드 블록(37)을 호출하고, 호출된 분리 실행 대상 코드 블록(37)의 결과값을 반환 받는다.The executive content 30 includes a code area 31 and a data area 33 in which a stub code 39 is inserted in place of one or more separate execution object code blocks 37. [ At this time, the stub code 39 is a code to be inserted in place of the extracted separation execution object code block 37, and connects the execution contents 30 and the separation execution object code block 37. More specifically, when executing the executable content 30, the stub code 39 calls the corresponding detached execution object code block 37, and the result of the called detached execution object code block 37 Returns a value.

하나 이상의 분리 실행 대상 코드 블록(37)은, 원래의 실행형 컨텐츠(20)에 대한 동적 프로파일링 및 정적 분석을 통하여 코드 영역(31)에서 추출된 복수의 베이식 블록 그룹(27) 중의 하나로서, 복수의 베이식 블록(35)을 포함한다. 더 바람직하게, 상기 분리 실행 대상 코드 블록(37)은 시작점(entry point)을 통한 제어 신호의 진입 및 내부에 포함된 베이식 블록(35) 간의 제어 신호의 이동은 허용하지만, 시작점을 제외한 베이식 블록(35)으로의 제어 신호의 진입이 없는 서로 관련된 복수의 베이식 블록(35)을 포함하는 베이식 블록 그룹이다. One or more separate execution object code blocks 37 are one of a plurality of basic block groups 27 extracted from the code area 31 through dynamic profiling and static analysis of the original executive contents 20, And includes a plurality of basic blocks 35. More preferably, the detachment object code block 37 permits the entry of the control signal through the entry point and the movement of the control signal between the basic blocks 35 contained therein, 35, which are not related to each other.

이와 다르게, 시작점을 제외한 베이식 블록(35)으로의 제어 신호의 진입이 있는 베이식 블록 그룹을 분리 실행 대상 코드 블록(37)으로 선정할 경우, 해당 분리 실행 대상 코드 블록(37)을 추출한 후 삽입되는 스터브 코드(39)에 시작 부분이 아닌 중간으로 제어 신호가 진입할 수 있으며, 이 경우 스터브 코드(39)는 해당 제어 신호에 대한 처리를 수행하지 못하며, 결국, 실행형 컨텐츠(30)의 실행이 중지되거나 에러가 발생할 수 있다.Alternatively, when the basic block group in which the control signal enters the basic block 35 excluding the starting point is selected as the separation execution object code block 37, the separation execution object code block 37 is extracted and inserted The control signal may enter the stub code 39 in the middle of the stub code 39. In this case, the stub code 39 can not perform processing for the corresponding control signal, It may be stopped or an error may occur.

이러한 특성의 분리 실행 대상 코드 블록(37)의 추출 방법은 다음과 같다.An extraction method of the separation execution object code block 37 having such a characteristic is as follows.

먼저, 분리 실행할 실행형 컨텐츠(20)의 코드 영역(21)에 대한 동적 프로파일링 및 정적 분석을 통하여 복수의 베이식 블록 그룹(27)을 선정한다. 상기 복수의 베이식 블록 그룹(27)의 선정은, 실행형 컨텐츠(20)를 실행하여, 런-타임 동안 코드 영역(21)에 대한 기초 정보를 수집하고, 수집한 기초 정보를 이용하여 분석 범위를 확장한 동적 프로파일링을 통해 상기 코드 영역(21)에 대한 정적 분석을 수행함에 의해 이루어진다. 여기서, 기초 정보는, 브랜치 어드레스, 점프 어드레스, 콜 어드레스 및 RET의 간접 주소 중에 적어도 하나의 간접 주소이다. 이러한 기초 정보 중에서 실행형 컨텐츠(20)의 공개된 API와 관련된 기초 정보를 제거하고, 공개된 API와 관련된 기초 정보가 제거된 기초 정보를 기반으로 실행형 컨텐츠(20)의 코드 영역(21)에 대한 정적 분석을 수행함으로써, 분석 범위를 확장할 수 있다. 상기 수집한 기초 정보 중 간접 주소를 컨트롤 플로우 상에 대입함으로써 분석 범위를 확장할 수 있으며, 그 결과 단독으로 동적 프로파일링 또는 정적 분석을 수행하는 것에 비하여 더 많은 베이식 블록 그룹(27)을 선정할 수 있다.First, a plurality of basic block groups 27 are selected through dynamic profiling and static analysis of the code area 21 of the executable content 20 to be separated. The selection of the plurality of basic block groups 27 is performed by executing the executive content 20 to collect basic information about the code area 21 during the run-time, and using the collected basic information, And performing static analysis on the code area 21 through extended dynamic profiling. Here, the basic information is at least one indirect address among a branch address, a jump address, a call address, and an indirect address of RET. The basic information related to the published API of the executive content 20 is removed from the basic information and the basic information related to the published API is removed from the code area 21 of the executive content 20 based on the removed basic information By performing a static analysis on the subject, the scope of analysis can be extended. The analysis range can be extended by substituting the indirect address among the collected basic information on the control flow. As a result, more basic block groups 27 can be selected than performing dynamic profiling or static analysis alone have.

더하여, 선정된 복수의 베이식 블록 그룹(27) 중에서, 베이식 블록 그룹(27)의 내부로 진입하는 제어 신호가 발생하면, 제어 신호의 명령어 주소를 기준으로 해당 베이식 블록 그룹(27)을 분할하여 재정의한다. 이때 재정의 대상이 되는 베이식 블록 그룹(27)은 제어 신호의 명령어 주소를 기준으로 이전의 제1 베이식 블록 그룹과, 제어 신호의 명령어 주소를 포함하는 이후의 제2 베이식 블록 그룹으로 재정의한다.In addition, when a control signal for entering the inside of the basic block group 27 is generated among the selected plurality of basic block groups 27, the corresponding basic block group 27 is divided based on the command address of the control signal, do. At this time, the basic block group 27 to be redefined redefines the previous first basic block group and the subsequent second basic block group including the command address of the control signal based on the command address of the control signal.

이와 같은 재정의 과정을 반복함으로써, 최종적으로 단일 입력 및 단일 출력의 속성과, 외부에서 내부로의 진입을 허용하지 않는 속성을 갖는 복수의 베이식 블록(25)을 포함하는 베이식 블록 그룹(27)을 더 정확하게 정의할 수 있다.By repeating this redefinition process, a basic block group 27 including a plurality of basic blocks 25 having attributes of a single input and a single output and an attribute not allowing entry from the outside to the inside is finally obtained More precisely defined.

이어서 복수의 베이식 블록 그룹(27) 중에서 분리 실행 대상 코드 블록(37)을 선정한다. 그리고 분리 실행 대상 코드 블록(37)을 코드 영역(31)에서 분리하고, 상기 분리 실행 대상 코드 블록(37) 대신에 스터브 코드(39)를 삽입한다. Then, the separation execution object code block 37 is selected from among the plurality of basic block groups 27. [ Then, the separation execution object code block 37 is separated from the code area 31, and the stub code 39 is inserted instead of the separation execution object code block 37.

이때 분리 실행 대상 코드 블록(37)은 복수의 베이식 블록 그룹(27) 중에서 실행형 컨텐츠(20)의 중요 경로(Critical path) 상에 있는 베이식 블록 그룹을 선택하는 것이 바람직하다. 또한, 복수의 베이식 블록 그룹(27) 중에서 콜 횟수, 크기 및 실행 시간을 함께 고려하여 분리 실행 대상 코드 블록(37)을 선출할 수 있다. 예컨대 콜 횟수가 많고, 크기가 작고, 실행 시간이 짧은 베이식 블록 그룹(27)을 분리 실행 대상 코드 블록(37)으로 선출한다.At this time, it is preferable that the separation execution object code block 37 selects a basic block group on the critical path of the executive contents 20 among the plurality of basic block groups 27. [ In addition, it is possible to select the code block 37 for separation execution in consideration of the number of calls, the size, and the execution time among the plurality of basic block groups 27. [ For example, the basic block group 27 having a large number of calls, a small size, and a short execution time is selected by the separation execution object code block 37.

이에 따르면, 실행형 컨텐츠에 있어서, 중요 경로 상에 존재하고, 콜 횟수가 많고 크기가 작고, 실행 시간이 짧은 베이식 블록 그룹을 보안을 위한 분리 실행 대상 코드 블록으로 선정하여, 상기 분리 실행 대상 코드 블록이 실행형 컨텐츠에서 분리 실행되도록 함으로써, 실행형 컨텐츠의 복제 방지와 관련된 보안 성능을 향상시킬 수 있다.According to the present invention, in the executable content, a basic block group existing on an important path and having a large number of calls, a small size, and a short execution time is selected as a separation execution target code block for security, The execution performance of the executable content can be improved.

또한, 동적 프로파일링(dynamic profiling)을 통하여 수집한 코드 영역의 기초 정보를 이용한 정적 분석(static analysis)을 수행하여 베이식 블록 그룹을 추출함으로써, 실행형 컨텐츠의 코드 영역의 분석 범위를 확장하여 베이식 블록 그룹의 추출율을 향상시킬 수 있다.Further, by performing static analysis using the basic information of the code area collected through dynamic profiling to extract a basic block group, the scope of analysis of the code area of the executable content is extended, The extraction rate of the group can be improved.

또한, 한 번 정의된 베이식 블록 그룹에 대해서 재정의할 수 있는 유연성을 제공함으로써, 분리 실행 대상 코드 블록의 후보가 될 수 있는 단일 입력(single input) 및 단일 출력(single output)을 갖는 베이식 블록 그룹을 생성할 수 있고, 시작점(entry point)을 제외한 내부로의 제어 신호의 진입이 있는 부적합한 베이식 블록 그룹이 분리 실행 대상 코드 블록으로 선출되는 것을 억제할 수 있으며, 그 결과, 분리 실행 대상 코드 블록을 분리하여 실행하는 중의 오류 발생을 억제할 수 있다.In addition, by providing flexibility to redefine a once-defined basic block group, a basic block group having a single input and a single output, which can be candidate candidates for a separate code block, It is possible to inhibit selection of an unsuitable basic block group having an entry of the control signal into the inside thereof excluding the entry point as a code block to be detached. As a result, It is possible to suppress the occurrence of an error during execution.

다시 도 1을 참조하면, 컨텐츠 제공 서버(12)는 분리 실행 기반 실행형 컨텐츠를 제공하는데 있어서, 분리 실행 대상 코드 블록(37)을 선택하여, 상기 분리 실행 대상 코드 블록(37)을 분리하고, 상기 분리 실행 대상 코드 블록(37)을 저장 장치용 코드 블록(15b)로 변환하는데 있어서, 실행형 컨텐츠(15a)와 저장 장치용 코드 블록(15b)이 상호 연동하여 실행될 수 있도록 컨텐츠를 변환한다.Referring again to FIG. 1, the content providing server 12 selects the separation execution object code block 37 to separate the separation execution object code block 37, In converting the separation execution object code block 37 into the storage device code block 15b, the content is converted so that the executable content 15a and the storage device code block 15b can be executed in cooperation with each other.

도 4는 본 발명이 적용되는 디지털 저작권 관리 시스템에 있어서, 분리 실행 기반 실행형 컨텐츠의 구조 및 분리 실행 방법을 설명하기 위한 도면이다. 이를 참조하여 분리 실행 기반 실행형 컨텐츠를 구성하는 과정을 설명하면 다음과 같다.FIG. 4 is a diagram for explaining a structure of a separation-based execution content and a separation execution method in the digital rights management system to which the present invention is applied. Hereinafter, the process of configuring the execution-based execution content based on the separation will be described.

먼저, 분리 실행 기반 실행형 컨텐츠(15a)와 저장 장치용 코드 블록(15b)과의 상호 연동을 위한 보조 실행 코드(158)를 생성하고, 스터브 코드(153b)를 생성하여 대응하는 분리 실행 대상 코드 블록의 위치에 삽입한다. 보조 실행 코드(158)는, 스터브 코드(153b)의 호출에 의하여 실행되어, 호출시 전달된 파라메터, 즉, 스택과 레지스터의 정보를 패킹하여 상기 저장 장치(14)에 저장된 저장 장치용 코드 블록(15b)을 호출하고, 상기 호출이 종료되면 저장 장치(14)로부터 반환되는 저장 장치용 코드 블록(15b)의 실행 결과값으로 스택과 레지스터의 정보를 리스토어한다. 스터브 코드(153b)는 대응하는 분리 실행 대상 코드 블록의 맨 앞에서 보조 실행 코드(158)로 점프한 후 보조 실행 코드(158)의 실행이 완료되면 분리 실행 대상 코드 블록의 다음에 실행되어야 할 위치로 점프한다.First, an auxiliary execution code 158 for mutual interoperation between the execution-based execution content 15a and the storage device code block 15b is generated, a stub code 153b is generated, Insert at the location of the block. The auxiliary execution code 158 is executed by a call of the stub code 153b to pack the information of the stack and the register transferred at the time of the call, 15b, and restores the information of the stack and registers to the execution result value of the storage device code block 15b returned from the storage device 14 when the call is terminated. The stub code 153b jumps to the auxiliary execution code 158 at the beginning of the corresponding detachment execution target code block and then when the execution of the auxiliary execution code 158 is completed, Jump.

저장 장치용 코드 블록(15b)은 저장 장치(14)의 플랫폼에 기반한 것인데, 예를 들면, 저장 장치(14)가 Java Card로 구현되는 경우, Java 용 코드 블록 및 ARM용 코드블록이 된다. 상기 저장 장치용 코드 블록(15b)는 애플릿으로 구현될 수 도 있고, RO에 포함될 수 도 있다. 구체적으로는 Java 애플릿 및 ARM 인스트럭션을 내장한 Java 애플릿으로 구현될 수 있다. 이때 상기 보조 실행 코드(158)는 상술한 Java 애플릿을 실행하기 위한 Native launcher이다. 더하여, 상기 보조 실행 코드(158)는 필요 시에만 로딩되어 실행될 수 있도록 DLL(Dynamic Link Library) 파일로 구현될 수 있다. The storage device code block 15b is based on the platform of the storage device 14. For example, when the storage device 14 is implemented as a Java Card, it is a code block for Java and a code block for ARM. The storage device code block 15b may be implemented as an applet or may be included in an RO. Specifically, it can be implemented as a Java applet and a Java applet with an embedded ARM instruction. At this time, the auxiliary execution code 158 is a native launcher for executing the Java applet described above. In addition, the auxiliary execution code 158 can be implemented as a dynamic link library (DLL) file so that it can be loaded and executed only when necessary.

그리고, 스터브 코드(153b)의 삽입과 더불어, 보조 실행 코드(158)의 로딩을 위하여 임포트 영역(idata section)(155)의 임포트 테이블(import table)에 보조 실행 코드(Native Launcher DLL)(155a)을 삽입한다. 상기 임포트 테이블에 대한 보조 실행 코드(158)의 삽입은, 호스트 단말(13)에서 분리 실행 기반 실행형 컨텐츠(15a)가 구동될 때, OS의 로더(loader)에 의하여 보조 실행 코드(158)가 로딩되도록 하기 위한 것이다.In addition to the insertion of the stub code 153b, an import table 155a of the import area 155 is loaded in the native launcher DLL 155a for loading the auxiliary executable code 158, . The insertion of the auxiliary execution code 158 into the import table is performed by the loader of the OS when the detachment execution based executive content 15a is executed in the host terminal 13 To be loaded.

이러한 방식을 통하여, 상기 분리 실행 기반 실행형 컨텐츠의 소스 코드의 큰 수정 없이, 분리 실행 대상 코드 블록과의 상호 작용이 가능해진다.Through this method, it is possible to interact with the separate execution target code block without making large modifications to the source code of the execution-based execution content.

그리고, 분리 실행 기반 실행형 컨텐츠(15a)에서 분리된 분리 실행 대상 코드 블록(37)을 저장 장치(14)에서 실행 가능한 저장 장치용 코드 블록(15b)으로 변환한다. 이때, 저장 장치용 코드 블록(15b)은, 저장 장치(14)에 구비된 프로세서의 명령어로 변환함으로써 실행 속도를 향상시킬 수 있다. 또한, 실행형 컨텐츠의 분리 실행을 다양한 환경의 저장 장치에 적용할 수 있도록, 분리 실행 대상 코드 블록을 복수의 머신 코드로 변환하는 것이 바람직하다.Then, the separation execution object code block 37 separated from the execution execution-based executive content 15a is converted from the storage device 14 into a executable code block 15b for a storage device. At this time, the storage device code block 15b can be converted into the instruction word of the processor provided in the storage device 14, thereby improving the execution speed. It is also preferable to convert the code block to be divided into a plurality of machine codes so as to be able to apply separate execution of executable contents to storage devices of various environments.

더하여, 분리 실행 기반 실행형 컨텐츠(15a)에서 초기에 실행되는 초기 코드 블록을 선정하고, 선정된 초기 코드 블록을 특정 키로 암호화한 후, 상기 암호화된 초기 코드 블록(157a)을 추가 생성된 보안 영역(157)에 삽입하고, 상기 초기 코드 블록의 위치에는 상기 키를 획득하여 암호화된 초기 코드 블록(157a)을 복호화한 후 실행시키도록 보조 실행 코드(158)의 특정 함수를 호출하는 시동 스터브 코드(153a)를 삽입한다.In addition, an initial code block to be initially executed in the separation execution based executive content 15a is selected, the selected initial code block is encrypted with a specific key, and then the encrypted initial code block 157a is added to the generated security area And a start stub code (hereinafter referred to as a " start code ") 157 for calling a specific function of the auxiliary execution code 158 to decrypt the encrypted initial code block 157a after acquiring the key at the position of the initial code block 153a.

이때 암호화에 사용되는 키는 실행형 컨텐츠의 실행시에 복호화를 위하여 필요하므로, 권리 객체(RO: Right Object)의 CEK(Contents Encryption key) 형태로 사용자에게 제공되며, 상기 저장 장치(14)에 저장될 수 있다.At this time, the key used for encryption is provided to the user in the form of a content encryption key (CEK) of a right object (RO) since it is required for decryption at the time of execution of executable content. .

암호화된 초기 코드 블록(157a)은, 이후, 보조 실행 코드(158)에 의하여 복호화되고, 온 메모리(On-Memory) 상태에서 구동(Running)된다. 이에 의하면, 실행형 컨텐츠에 대하여, 초기 구동 시 암호화를 통한 1단계 보안 기술을 적용하고, 분리 실행을 통해 2단계 보안 기술을 동시에 적용할 수 있으며, 그 결과, 실행형 컨텐츠의 불법 사용 및 복제를 더 강력하게 차단할 수 있다.The encrypted initial code block 157a is thereafter decoded by the auxiliary execution code 158 and is run in an on-memory state. According to this, the first level security technique through encryption can be applied to the executable content at the initial driving, and the second level security technique can be applied at the same time through separate execution. As a result, illegal use and duplication of the executable content can be prevented It can be blocked more strongly.

도 4에 예시한 컨텐츠는 PE 포맷의 파일로서, DOS 헤더(151)와, PE 헤더(152))와, 코드 영역(153)과, 데이터 영역(154)과, 임포트 영역(import section)(155)과, 익스포트 영역(export section)(160)을 포함한다. 상기 코드 영역(153)은, 실제 실행되는 프로그램 코드의 모임을 말하며, 데이터 영역(154)은 초기화된 프로그램 데이터들의 모임을 의미하고, 임포트 영역(155)은 PE 파일이 실행될 때 외부에서 가져와 사용하는 함수들의 목록이 들어있고, 익스포트 영역(156)에는 외부에서 사용할 수 있는 함수들이 노출된다.The content illustrated in FIG. 4 is a PE format file, which includes a DOS header 151 and a PE header 152, a code area 153, a data area 154, and an import section 155 , And an export section 160. [ The code area 153 is a group of actually executed program codes. The data area 154 is a group of initialized program data. The import area 155 is used when the PE file is executed, Functions, and the export area 156 exposes functions that can be used externally.

보조 실행 코드(158)는, 인터페이스 기능부(158a)와, 패킹(packing) 기능부(158b)와, 언패킹(unpacking) 기능부(158c)와, 메모리 매핑 기능부(158d)와, OS API 매핑 기능부(158e)를 포함하고, 더하여, 코드 복호화 기능부(158f)를 더 포함할 수 있다.The auxiliary execution code 158 includes an interface function unit 158a, a packing function unit 158b, an unpacking function unit 158c, a memory mapping function unit 158d, an OS API Mapping function 158e, and in addition, may further include a code decoding function 158f.

인터페이스 기능부(158a)는, 저장 장치(14), 더 구체적으로는 저장 장치용 코드 블록(15b)과의 통신 채널을 제공하여, 상기 통신 채널을 통해 데이터를 교환한다. 예를 들어, 상기 인터페이스 기능부(158a)는 ISO-7816에 정의된 APDU(Application Protocol Data Unit)을 통해 저장 장치용 코드 블록(15b)과의 통신 채널을 제공할 수 있다. 인터페이스 기능부(158a)는, 향후 TCP/IP Over USB와 같은 다른 종류의 인터페이스가 적용되더라도, 보조 실행 코드(158)의 다른 기능부가 변경되지 않도록, Network bearer transparent한 인터페이스를 제공하는 것이 바람직하다. 인터페이스 기능부(158a)는 일반적인 I/O 함수들과 동일한 형태의 함수를 갖는다.The interface function unit 158a provides a communication channel with the storage device 14, and more specifically with the storage device code block 15b, to exchange data over the communication channel. For example, the interface function unit 158a may provide a communication channel with the storage device code block 15b through an APDU (Application Protocol Data Unit) defined in ISO-7816. It is preferable that the interface function unit 158a provides a Network bearer transparent interface so that other functional units of the auxiliary executable code 158 are not changed even if other kinds of interfaces such as TCP / IP Over USB are applied in the future. The interface function unit 158a has the same type of function as general I / O functions.

패킹 기능부(158b)는 스터브 코드(153b)로부터 스택과 레지스터의 정보를 전달받아 패킹하여, 인터페이스 기능부(158a)를 통해 저장 장치용 코드 블록(15b)으로 전달한다. 여기서, 스택 정보는, SP 레지스터에 의해 지정된 스택 포지션에서부터 시작하여 파라메터로 이용되는 스택 값들의 모임이고, 레지스터 정보는, 스터브 코드(153b)에서 저장 장치용 코드 블록(15b)를 호출할 때 전달되는 레지스터 정보이다.The packing function unit 158b receives the stack and register information from the stub code 153b, packs it, and transfers it to the storage device code block 15b through the interface function unit 158a. Here, the stack information is a collection of stack values used as a parameter starting from the stack position designated by the SP register, and the register information is transmitted when the stub code 153b calls the code block 15b for storage Register information.

언패킹 기능부(158c)는, 인터페이스 기능부(158a)를 통해 실행된 저장 장치용 코드 블록(15b)으로부터 전달된 패킹 데이터를 언패킹하여, 상기 스터브 코드(153b)로 반환한다. 언패킹 기능부(158b)는, 저장 장치용 코드블록(15b)에서 반환되는 결과값이 Primitive Data Type인 경우에는 단순히 해당 레지스터의 값에 반환된 결과 값을 설정하고, 메모리 주소인 경우, 해당 주소에 해당하는 값들을 반환된 결과값에 따라서 변경한다.The unpacking function unit 158c unpacks the packing data transferred from the storage device code block 15b executed via the interface function unit 158a and returns the packing data to the stub code 153b. When the result value returned from the storage device code block 15b is a primitive data type, the unpacking function unit 158b simply sets the result value returned to the value of the corresponding register. If the result value is a memory address, To the value returned.

메모리 매핑 기능부(158d)는, 인터페이스 기능부(158a)를 통해 저장 장치용 코드블록(15b)에서 전달된 데이터를 호스트 단말(13)의 메모리에 기록하거나, 호스트 단말(13)의 메모리에서 데이터를 디스패치하여 저장 장치용 코드블록(15b)으로 전달한다. 이러한 메모리 매핑 기능부(158c)를 통해 저장 장치용 코드블록(15b)이 호스트 단말(13)의 메모리를 참조할 수 있다.The memory mapping function unit 158d writes the data transferred from the storage device code block 15b to the memory of the host terminal 13 via the interface function unit 158a, And transmits it to the code block 15b for the storage device. The storage device code block 15b can refer to the memory of the host terminal 13 through the memory mapping function unit 158c.

OS API 매핑 기능부(158e)는, 인터페이스 기능부(158a)를 통해 저장 장치용 코드블록(15b)으로부터 API 명 및 파라메터 값을 전달받아, 호스트 단말(13)의 OS API를 호출하고, 그 결과를 반환받아 저장 장치용 코드블록(15b)으로 전달한다. 이에 의하여, 저장 장치(14)에 저장된 저장 장치용 코드블록(15b)이 호스트 단말(13)의 OS API를 호출하여 그 결과를 반환 받을 수 있다.The OS API mapping function unit 158e receives the API name and the parameter value from the storage device code block 15b via the interface function unit 158a and calls the OS API of the host terminal 13, And transfers it to the storage device code block 15b. Thus, the storage device code block 15b stored in the storage device 14 can call the OS API of the host terminal 13 and return the result.

코드 복호화 기능부(158e)는, 저장 장치(15b)로부터 특정 키를 획득하여 보안 영역(157)에 적재된 암호화된 초기 코드 블록(157a)을 복호화한 후, 복호화된 초기 코드 블록을 실행시킨다. 더 구체적으로는, 복호화된 초기 코드 블록을 런타임 코드 실행자(Runtime code executioner)가 메모리 상에서 바로 실행시키는데, 상기 런타임 코드 실행자가 상기 복호화된 초기 코드 블록으로 인스트럭션 포인터(Instruction Pointer)를 매핑하여 점프시켜, 상기 복호화된 초기 코드 블록을 실행한다. 이에 의하면, 분리 실행 기반 실횅형 컨텐츠의 실행 시에만, 복호화된 초기 코드 블록이 메모리에 존재하고, 실행이 후에는 바로 소멸되며, 이를 통해 보안 효과를 더 높일 수 있다.The code decryption function unit 158e acquires a specific key from the storage device 15b, decrypts the encrypted initial code block 157a loaded in the secure area 157, and then executes the decrypted initial code block. More specifically, a decoded initial code block is immediately executed in a memory by a runtime code executioner. The runtime code executor maps an instruction pointer to the decoded initial code block, And executes the decoded initial code block. In this case, the decoded initial code block exists in the memory only at the time of execution of the execution-based real content, and the execution is immediately terminated, thereby further enhancing the security effect.

상기와 같이 구성된 보조 실행 코드(158)를 이용한 분리 실행은 다음과 같이 이루어진다.The separation execution using the auxiliary execution code 158 configured as described above is performed as follows.

먼저, 분리 실행 기반 실행형 컨텐츠(15a)가 구동되기 시작하면, 코드 영역(153)의 초기에 위치한 시동 스터브 코드(153a)에 의하여 보조 실행 코드(158)가 로딩되고(①), 코드 복호화 기능부(158f)가 호출되어, 보안 영역(157)에 적재된 암호화된 초기 코드 블록(157a)을 가져온다(②), 복호화에 필요한 키(CEK)를 획득하여(③), 상기 암호화된 초기 코드 블록(157a)을 복호화한 후 실행한다(④). 이어서 코드 영역의 다음 프로그램 코드가 순서대로 실행되다가, 스터브 코드(153b)에 진입하면, 상기 스터브 코드(153b)에 의하여 패킹 기능부(158b)가 호출되고, 상기 호출된 패킹 기능부(158b)가 스터브 코드(153b)에서 전달된 스택 및 레지스터 정보를 패킹하여 인터페이스 기능부(158a)를 통해 저장 장치(14)의 저장 장치용 코드블록(15b)으로 전달된다(⑤). 이에 상기 저장 장치용 코드블록(15b)이 실행되는데, 이때, 상기 저장 장치용 코드블록(15b)은 메모리 매핑 기능부(158c) 및 OS API 매핑 기능부(158d)를 통해 호스트 단말(13)의 메모리 및 OS API에 접근할 수 있다(⑥). 상기에 의해 저장 장치용 코드블록(15b)의 실행이 완료되면, 그 결과값이 인터페이스 기능부(158b)를 통해 보조 실행 코드(158)로 전달되고, 상기 언패킹 기능부(158b)가 상기 결과값을 다시 언패킹하여 스터브 코드(153b)로 반환한다(⑦).First, when the execution-based execution content 15a starts to run, the auxiliary execution code 158 is loaded (①) by the startup stub code 153a located at the beginning of the code area 153 (158) is called to obtain the encrypted initial code block 157a loaded in the secure area 157 ((2)), obtains the key (CEK) necessary for decryption (3) (157) is decoded and then executed (4). Subsequently, when the next program code in the code area is executed in order and enters the stub code 153b, the packing function part 158b is called by the stub code 153b, and the called packing function part 158b The stack and register information transferred from the stub code 153b are packed and transferred to the storage device code block 15b of the storage device 14 via the interface function unit 158a (step 5). The storage device code block 15b is connected to the host device 13 via the memory mapping function 158c and the OS API mapping function 158d. Memory and OS APIs can be accessed (⑥). When the execution of the storage device code block 15b is completed as described above, the result value is transferred to the auxiliary execution code 158 via the interface function unit 158b, and the unpacking function unit 158b transfers the result The value is again unpacked and returned to the stub code 153b (7).

이에 의하면, 분리 실행 기반 실행형 컨텐츠(15a) 및 저장 장치용 코드블록(15b)이 호스트 단말(13)과 저장 장치(14)의 연동을 통해 정상적으로 동작할 수 있게 된다.This makes it possible for the execution-based execution content 15a and the storage device code block 15b to operate normally through interlocking of the host terminal 13 and the storage device 14.

상기에서 저장 장치용 코드 블록(15b)은 실행 속도의 향상을 위하여 내부에 저장 장치의 프로세서 명령어(예를 들어, ARM 바이너리)를 내장할 수 있다. 이에 반해, 저장 장치(14)로 이용될 수 있는 스마트 카드나 USIM의 오퍼레이팅 시스템은 인터프리트 언어(예를 들어, Java)로 구현될 수 있다.In this case, the code block 15b for a storage device may embed processor instructions (for example, an ARM binary) of the storage device in order to improve execution speed. On the other hand, the operating system of the smart card or USIM, which can be used as the storage device 14, can be implemented in an interpreted language (e.g., Java).

따라서, 분리 실행 속도의 향상을 위해서는, 인터프리트 언어 기반의 오퍼레이팅 시스템을 구비한 저장 장치(14)에서 프로세서 명령어가 내장된 저장 장치용 코드 블록(15b)을 실행하도록 하기 위한 환경을 구현하는 네이티브 실행 환경 구현 장치가 필요하다.Therefore, in order to improve the separation execution speed, it is necessary to perform a native execution that implements an environment for executing a code block 15b for a storage device in which a processor instruction is embedded in a storage device 14 having an operating system based on an interpreted language Environment implementation device is needed.

도 5는 본 발명에 따른 네이티브 실행 환경 구현 장치가 적용된 저장 장치(14)의 상세 구성을 보인 블록도이다. 도 5에서 본 발명에 의한 네이티브 실행 환경 구현 장치는, 소프트웨어 모듈 형태로 구현된다.FIG. 5 is a block diagram showing a detailed configuration of a storage device 14 to which a native execution environment implementation apparatus according to the present invention is applied. In FIG. 5, the apparatus for implementing a native execution environment according to the present invention is implemented in the form of a software module.

도 5를 참조하면, 본 발명이 적용된 저장 장치(14)는, 오퍼레이팅 시스템(OS: Operating System)(140)과, 네이티브 실행 환경 구현 장치(100)을 포함하고, 여기에, 호스트 단말(13)과 연동하여 권리 객체(RO:Right Object)(143)를 관리하기 위한 저장 장치용 DRM 에이전트(142)를 더 포함할 수 있다. 여기서, 저장 장치(14)가 Java Card 기반으로 구현된 경우, 네이티브 실행 환경 구현 장치(100)는 JCVM(Java Card Virtual Machine)을 통해 호출된다.5, the storage device 14 to which the present invention is applied includes an operating system (OS) 140 and a native execution environment implementation apparatus 100, and includes a host terminal 13, And a DRM agent 142 for a storage device for managing a right object (RO) 143 in cooperation with the DRM agent 142. [ Here, when the storage device 14 is implemented on a Java Card basis, the native execution environment implementing apparatus 100 is called through a JCVM (Java Card Virtual Machine).

오퍼레이팅 시스템(140)은 저장 장치(14)의 하드웨어 요소(CPU, ROM, RAM, EEPROM, I/O 인터페이스 등)를 종합적으로 관리, 운영하기 위한 것으로서, 호스트 단말(13)과의 통신, 내부 메모리에 대한 데이터의 읽기 및 쓰기, 파일의 접근 제어, 사용자 인증, 응용 프로그램의 실행 등의 기능을 수행한다. 이러한 오퍼레이팅 시스템(140)은 제조사별로 서로 다른 형태로 구현되고 있는데, 이에 따른 문제점들을 해결하고자, JavaCard와 MULTOS와 같은 개방형 플랫폼이 주로 사용되고 있다.The operating system 140 collectively manages and operates the hardware elements (CPU, ROM, RAM, EEPROM, I / O interface, etc.) of the storage device 14 and communicates with the host terminal 13, Reading and writing data to and from a file, access control of a file, user authentication, and execution of an application program. Such an operating system 140 is implemented in different forms according to each manufacturer. To solve the problems, an open platform such as JavaCard and MULTOS is mainly used.

저장 장치용 DRM 에이전트(142)는, 분리 실행 기반 실행형 컨텐츠(15a)에 대한 RO(Right Object)의 설치 및 관리 기능을 수행하고, 저장 장치(14)의 인증서에 대한 관리 기능을 제공한다. 더하여, 저장 장치용 DRM 에이전트(142)는 인증서 및 RO가 인증되면, 호스트 단말(13)과 보안 채널을 연결하여 분리 실행을 위한 정보를 교환할 수 있도록 한다. 더 구체적으로, 저장 장치용 DRM 에이전트(142)는 호스트 단말(13)의 보조 실행 코드(158)로부터 저장 장치용 코드 블록(15b)에 대한 실행 요청을 전달받고, 상기 저장 장치용 코드 블록(15b)의 실행이 완료되면 그 결과값을 호스트 단말(13)로 반환한다.The DRM agent 142 for the storage device performs a function of installing and managing a right object (RO) on the detachment-based execution content 15a and provides a management function for the certificate of the storage device 14. [ In addition, when the certificate and the RO are authenticated, the DRM agent 142 for the storage device connects the host terminal 13 and the secure channel so that information for separation execution can be exchanged. More specifically, the DRM agent 142 for the storage device receives the execution request for the storage device code block 15b from the auxiliary execution code 158 of the host terminal 13, and the storage device code block 15b ) Is completed, the resultant value is returned to the host terminal 13.

네이티브 실행 환경 구현 장치(100)는, 분리 실행 속도를 향상시키기 위한 것으로서, 저장 장치용 코드 블록(15b)에 내장된 프로세서 명령어들을 실행한다. 더 구체적으로, 네이티브 실행 환경 구현 장치(100)는 상기 저장 장치용 DRM 에이전트(142)로부터 저장 장치용 코드 블록(15b)을 전달받아 이를 실행시킨다. 이를 위하여, 상기 네이티브 실행 환경 구현 장치(100)는 오퍼레이팅 시스템(140)의 확장 모듈 형태로 존재하여, 전달된 저장 장치용 코드블록(15b)을 로드하여 고정되지 않은 참조변수(reference)를 모두 고정하고(이하, 링킹(Linking)이라고 함), 실행시킨다. 더하여, 네이티브 실행 환경 구현 장치(100)는 저장 장치용 코드 블록(15b)의 실행을 위한 호스트 단말(13)의 메모리 접근 및 OS API 호출을 검출하여 처리한다. The native execution environment implementation apparatus 100 executes the processor instructions built in the storage device code block 15b for improving the separation execution speed. More specifically, the native execution environment implementing apparatus 100 receives the storage device code block 15b from the DRM agent 142 for the storage apparatus and executes the same. To this end, the native execution environment implementing device 100 exists in the form of an extension module of the operating system 140, loads the transferred storage device code block 15b, and fixes all non-fixed reference variables (Hereinafter referred to as " linking "). In addition, the native execution environment implementing apparatus 100 detects and processes the memory access and OS API calls of the host terminal 13 for execution of the storage device code block 15b.

이러한 네이티브 실행 환경 구현 장치(100)는, 예를 들어, 상기 저장 장치(14)의 오퍼레이팅 시스템(140)이 Java Card로 구현된 경우, Javacard에서 지원하는 JNI(Java Native Interface)를 이용하여 구현될 수 있다. 또한, 저장 장치용 코드블록(15b)은 PIB(Position Independent Binary)로 구현된다. 따라서, 네이티브 실행 환경 구현 장치(100)는, JNI Call을 통해 활성화되며, 초기에는 전달된 PIB를 런타임 링킹한 후, IP 레지스터를 조작하여 시작번지로 점프시켜 코드를 구동시킨다.For example, when the operating system 140 of the storage device 14 is implemented as a Java Card, the native execution environment implementation apparatus 100 may be implemented using a Java Native Interface (JNI) supported by Javacard . Also, the code block 15b for the storage device is implemented as a PIB (Position Independent Binary). Accordingly, the native execution environment implementing apparatus 100 is activated through a JNI call. At first, the native execution environment implementing apparatus 100 executes runtime linking of the transferred PIB, and then operates the IP register to jump to the start address to drive the code.

도 6은 본 발명에 따른 네이티브 실행 환경 구현 장치(100)의 상세 구성을 나타낸 블록도로서, 이를 참조하여 네이티브 실행 환경 구현 장치의 구성 및 작용을 더 구체적으로 설명한다.FIG. 6 is a block diagram illustrating a detailed configuration of an apparatus 100 for implementing a native execution environment according to the present invention. The configuration and operation of the native execution environment implementation apparatus will be described in more detail with reference to FIG.

도 6을 참조하면, 네이티브 실행 환경 구현 장치(100)는 로더(Loader)(110)와, 실행자(Executor)(120)와, 작업 관리자(Task manager)(130)와, 메모리 매퍼(Memory Mapper)(140)와, OS API 매퍼(Mapper)(150)와, 메모리 관리자(Memory Manager)(160)를 포함한다.6, the native execution environment implementing apparatus 100 includes a loader 110, an executor 120, a task manager 130, a memory mapper 130, (OS) API mapper 150, and a memory manager 160. The OS API mapper 150 includes a CPU 140,

로더(110)는 메모리의 특정 영역에 저장된 저장 장치용 코드 블록(15b)을 런타임에 링킹하여, 메모리 상의 임의의 영역으로 로드한다. 상기 저장 장치용 코드 블록(15b)는 PIB(Position Independent Binary)이다. The loader 110 links the code block 15b for a storage device stored in a specific area of the memory at runtime and loads the code block 15b into an arbitrary area on the memory. The storage unit code block 15b is a PIB (Position Independent Binary).

도 7은 로더(110)의 기능을 설명하기 위한 블록도이다. 도 7을 참조하면, 저장 장치용 코드블록(15b)은 파라메터 등의 데이터가 기록된 데이터 영역과 실행될 코드가 기록된 코드 영역과, 헤더와, 링킹을 위한 기준정보인 참조 정보로 이루어지며, 여기서, 코드 영역의 각 코드의 참조값은 고정되어 있지 않다. Fig. 7 is a block diagram for explaining the function of the loader 110. Fig. Referring to FIG. 7, the storage device code block 15b includes a data area in which data such as parameters are recorded, a code area in which a code to be executed is recorded, a header, and reference information, which is reference information for linking, , The reference value of each code in the code area is not fixed.

따라서, 로더(110)는 메모리의 특정 영역(OxOfO2)에 저장된 저장 장치용 코드블록(15b)을 메모리의 임의 영역(Oxee00,Oxee10)으로 로드하는데, 이때 참조 정보를 참조하여 고정되지 않은 참조값을 모두 고정시킨다. 예를 들어, 저장 장치용 코드블록(15b)의 데이터영역을 메모리 상의 Oxee10에 저장하고, 코드 영역을 Ox0e00에 저장하면서, 참조값이 고정되지 않은 코드 Loadr1의 참조값을 데이터 영역의 주소 Oxee10로 고정한다. Therefore, the loader 110 loads the storage device code block 15b stored in the specific area OxOfO2 of the memory into an arbitrary area (Oxee00, Oxee10) of the memory. At this time, referring to the reference information, . For example, the data area of the storage device code block 15b is stored in the Oxee 10 on the memory, and the reference value of the code Loadr1 whose reference value is not fixed is fixed to the address Oxee10 of the data area while the code area is stored in Ox0e00.

다시 도 6에서, 실행자(120)는 로더(110)에 의해 로드된 저장 장치용 코드 블록(15b)의 엔트리 포인트를 강제로 호출하여, 저장 장치용 코드블록(15b)을 실행한다.6, the executor 120 forcibly invokes the entry point of the storage device code block 15b loaded by the loader 110, and executes the code block 15b for the storage device.

이러한 실행자(120)는 실제로 실행되는 코드 블록의 실체가 되는 것이며, Java Card 기반의 저장 장치에서는 JNI 함수 인터페이스도 실행자(120)에 놓인다.The implementer 120 is the entity of the code block to be actually executed, and the JNI function interface is also placed in the executor 120 in the Java Card-based storage device.

더하여, 실행자(120)는 초기에 호스트 단말(13)로부터 JNI를 통해 저장 장치용 코드 블록(15b)이 전달되면 로더(110)를 호출하여, 해당 저장 장치용 코드 블록(15b)이 로드되게 하고, 이후에는 상기 로드된 저장 장치용 코드 블록(15b)의 실행을 담당한다.In addition, when the implementer 120 initially receives the storage device code block 15b via the JNI from the host terminal 13, the executor 120 calls the loader 110 to load the storage device code block 15b , And then takes charge of the execution of the loaded storage device code block 15b.

또한, 실행자(120)는 상기 메모리 매퍼(140)와 OS API 매퍼(150)를 통해 호스트 단말(13)의 응답을 기다려야 하는 상황인 경우, 현재 실행중이던 인스트런션 포인트(Instruction point) 및 레지스터 값을 컨텍스트(context) 형태로 저장하고 있다가, 호스트 단말(13)의 응답이 도착하면 상기 저장된 값을 참조하여 해당 인스트럭션 포인트부터 재구동시킨다.If the executioner 120 is to wait for a response from the host terminal 13 through the memory mapper 140 and the OS API mapper 150, the executioner 120 may determine that the instruction point and the register value Stored in the form of a context, and when a response of the host terminal 13 arrives, it refers to the stored value and restarts it from the corresponding instruction point.

더하여, 실행자(120)의 일부는 호스트 단말(13)과의 통신을 수행한다. 더 구체적으로 설명하면, 오퍼레이팅 시스템(140)을 통해 호스트 단말(13)로부터 특정 헤더의 값이 오면, 그 헤더를 제외한 데이터와 길이(Length)를 실행자(120)의 다른 부분으로 전달하고, 실행자(120)의 다른 부분에서 데이터를 파싱하여 해당 내용을 실행하면, 그 결과를 호스트 단말(13)로 전달한다. 이에 대한 프로토콜은 호스트 단말(13)의 보조 실행 코드(158)와, 네이티브 실행 환경 구현 장치(100) 사이에 규격화시켜서 처리할 수 있도록 한다.In addition, a part of the executor 120 performs communication with the host terminal 13. [ More specifically, when a value of a specific header comes from the host terminal 13 through the operating system 140, the data and the length excluding the header are transmitted to the other part of the executor 120, 120, and transfers the result to the host terminal 13. The host terminal 13 then transmits the result to the host terminal 13. [ The protocol for this can be standardized and processed between the auxiliary execution code 158 of the host terminal 13 and the native execution environment implementing apparatus 100.

작업 관리자(130)는 복수의 저장 장치용 코드 블록(15b)의 TCB(Task Control Block)을 관리하고, 호스트 단말(13)의 보조 실행 코드(158)로부터 전달된 데이터를 각각의 TCB에 매핑된 실행자(110)로 전달하고, 그 실행 결과를 호스트 단말(13)의 해당 보조 실행 코드(158)로 전달한다. 이에 의하여, 복수의 저장 장치용 코드 블록(15b)이 호스트 단말(13)의 대응하는 보조 실행 코드(158)와 매칭되어 실행될 수 있다. The task manager 130 manages a task control block (TCB) of a plurality of storage device code blocks 15b and manages data transferred from the auxiliary execution code 158 of the host terminal 13 to each TCB And transmits the execution result to the corresponding auxiliary execution code 158 of the host terminal 13. [ Thereby, a plurality of storage device code blocks 15b can be matched with the corresponding auxiliary execution code 158 of the host terminal 13 and executed.

호스트 단말(13)에서는 사용자의 선택에 따라서 복수의 분리 실행 기반 실행형 컨텐츠(15a)가 실행될 수 있으며, 각 실행형 컨텐츠별로 보조 실행 코드(158)가 생성되어 동작한다. 따라서, 저장 장치(14) 측에서도 복수의 보조 실행 코드(158)에 대응하는 복수의 저장 장치용 코드 블록(15b)이 저장되어 실행될 수 있다. 이를 위하여, 호스트 단말(13)의 복수의 보조 실행 코드(158)에 1:1로 매칭되는 복수의 태스크가 필요하다. In the host terminal 13, a plurality of execution-based execution contents 15a can be executed according to a user's selection, and an auxiliary execution code 158 is generated and operated for each execution type content. Therefore, a plurality of storage-use code blocks 15b corresponding to the plurality of auxiliary execution codes 158 can be stored and executed on the storage device 14 side. To this end, a plurality of tasks matching 1: 1 to a plurality of auxiliary execution codes 158 of the host terminal 13 are required.

따라서, 작업 관리자(130)는 호스트 단말(13)의 복수의 보조 실행 코드(158)에 1:1로 매핑하는 복수의 TCB(Task Control Block)를 생성하여 관리하고, 상기 복수의 TCB를 통해 각 저장 장치용 코드 블록(15b)이 대응하는 보조 실행 코드(158)와 연동하여 실행될 수 있도록 한다. Accordingly, the task manager 130 generates and manages a plurality of task control blocks (TCBs) 1: 1 mapped to a plurality of auxiliary execution codes 158 of the host terminal 13, So that the code block 15b for the storage device can be executed in conjunction with the corresponding auxiliary execution code 158. [

도 8은 본 발명에 따른 네이티브 실행 환경 구현 장치에서의 TCB와 호스트 단말(13)의 관계를 나타낸 도면이다. 도시된 바와 같이, 네이티브 실행 환경 구현 장치(100)의 작업 관리자(130)에 의해 생성되는 복수의 TCB(131)는 각각 호스트 단말(13)에서 실행되는 복수의 실행형 컨텐츠(15a)에 추가 생성된 복수의 보조 실행 코드(158)와 1:1로 매핑되어 동작한다.8 is a diagram showing the relationship between the TCB and the host terminal 13 in the native execution environment realization apparatus according to the present invention. As shown in the figure, the plurality of TCBs 131 generated by the task manager 130 of the native execution environment implementing apparatus 100 are respectively added to a plurality of executable contents 15a executed in the host terminal 13 1: 1 with a plurality of auxiliary executable codes 158 that are executed.

더하여, 이러한 TCB(131)는 대응하는 보조 실행 코드(158)가 실행되기 전에 미리 실행되어야 한다. 이를 위해서는, 각 실행형 컨텐츠(15a)의 실행시, 보조 실행 코드(158)가 실행되기 전에, RO의 여부에 따라서 TCB(131)를 미리 생성하여야 한다.In addition, this TCB 131 must be executed before the corresponding auxiliary execution code 158 is executed. In order to do this, the TCB 131 must be generated in advance according to whether or not the RO is executed before the execution of the auxiliary execution code 158 when each execution content 15a is executed.

도 9는 본 발명에 의한 네이티브 실행 환경 구현 장치에 있어서, TCB를 생성하는 과정을 나타낸 메시지 흐름도이다. 도 9는 Java 기반 저장 장치의 경우를 예로 들어 나타낸 것이다.9 is a message flow diagram illustrating a process of generating a TCB in an apparatus for implementing a native execution environment according to the present invention. 9 shows an example of a Java based storage device.

도 9를 참조하면, 실행형 컨텐츠(15a)의 실행 등으로 인하여, 호스트 단말(13)이 RO의 내용에 대한 체크를 요청하면(S91), OS(140)가 RO를 확인하여 권한이 있으면, JCVM(141)을 통하여 태스크 생성 명령을 네이티브 실행 환경 구현 장치(100)로 지시한다(S92~S94). 이에 상기 네이티브 실행 환경 구현 장치(100), 더 구체적으로는 작업 관리자(130)가 TCB를 생성하고(S95), 그 수행 결과를 OS(140) 및 JCVM(141)으로 반환한다(S96,S97).9, when the host terminal 13 requests a check of the contents of the RO (S91) due to the execution of the executable content 15a or the like, if the OS 140 checks the RO and has authority, And instructs the native execution environment implementing apparatus 100 via the JCVM 141 to generate a task (S92 to S94). The native execution environment implementing apparatus 100, more specifically, the task manager 130 creates the TCB (S95), and returns the execution result to the OS 140 and the JCVM 141 (S96, S97) .

상기에 의하면, 호스트 단말(13)에서 RO의 체크 시에 TCB가 생성됨으로써, 보조 실행 코드(158)가 실행되기 전에, 대응하는 TCB가 마련될 수 있다.According to the above description, the TCB is generated at the time of checking the RO in the host terminal 13, so that the corresponding TCB can be prepared before the auxiliary execution code 158 is executed.

이와 같이 생성된 TCB는 호스트 단말(13)에서 해당하는 실행형 컨텐츠가 종료되거나, 저장 장치(14)의 전원이 오프되는 경우에 제거된다.The generated TCB is removed when the corresponding executive content is terminated in the host terminal 13 or the power of the storage device 14 is turned off.

도 10은 본 발명에 의한 네이티브 실행 환경 구현 장치에 있어서, 실행형 컨텐츠의 실행 종료에 따라서 TCB를 제거하는 과정을 나타낸 메시지 흐름도이다.10 is a message flow diagram illustrating a process of removing a TCB in response to an execution end of execution content in an apparatus for implementing a native execution environment according to the present invention.

호스트 단말(13)에서 실행형 컨텐츠(15a)가 종료될 때, 해당 보조 실행 코드(158)에 의하여 실행형 컨텐츠(15a)의 종료를 저장 장치(14)의 OS(140)로 알린다(S1001). 상기 OS(140)는 실행형 컨텐츠(15a)의 종료를 네이티브 실행 환경 구현 장치(100)로 전달하며(S1002), 이를 수신한 상기 네이티브 실행 환경 구현 장치(100)의 작업 관리자(130)가 대응하는 TCB를 제거하고(S1003), 그 실행 결과를 OS(140)를 통해서 호스트 단말(13)에 알린다(S1004,1005).The end of the executable content 15a is notified to the OS 140 of the storage device 14 by the auxiliary execution code 158 when the execution content 15a ends in the host terminal 13 (S1001) . The OS 140 transfers the end of the executable content 15a to the native execution environment implementing apparatus 100 (S1002), and the task manager 130 of the native execution environment implementing apparatus 100, (S1003), and notifies the host terminal 13 of the execution result through the OS 140 (S1004, 1005).

다시 도 6을 참조하면, 메모리 매퍼(140)는, 실행자(120)에 의해 저장 장치용 코드 블록(15b)의 실행 중에, 호스트 단말(13)의 메모리 참조가 필요한 경우, 상기 호스트 단말(13)의 보조 실행 코드(158)을 통해 호스트 단말(13)를 참조할 수 있도록 한다. 더 구체적으로 설명하면, 상기 로더(110)는 링킹 과정 중에, 저장 장치용 코드 블록(15b)에 호스트 단말(13)의 메모리를 참조하는 코드가 있는 경우, 메모리 매퍼(140)를 호출하도록 링킹한다. 이에 따라서, 실행중인 저장 장치용 코드 블록(15b)에서 메모리 매퍼(140)를 호출하면, 이 호출을 패키징하여 호스트 단말(13)의 보조 실행 코드(158)로 전달하며, 상기 보조 실행 코드(158)에 의해 처리 결과를 전달받아 이를 해석하여 실행자(120)에게 전달한다.Referring again to FIG. 6, the memory mapper 140, when the memory reference of the host terminal 13 is required during execution of the storage device code block 15b by the executor 120, So that the host terminal 13 can be referred to via the auxiliary execution code 158 of FIG. More specifically, the loader 110 links the memory mapper 140 to the memory mapper 140 when there is a code in the storage device code block 15b, which refers to the memory of the host terminal 13, during the linking process . Accordingly, when the memory mapper 140 is called in the executing storage device code block 15b, this call is packaged and transferred to the auxiliary execution code 158 of the host terminal 13, and the auxiliary execution code 158 And transmits the result of the analysis to the performer 120.

그리고, OS API 매퍼(150)는, 저장 장치용 코드 블록(15b)의 실행 중에, 상기 호스트 단말(13)의 보조 실행 코드(158)와 연동하여, 호스트 단말(13)의 OS API를 호출하여 그 실행 결과를 반환 받기 위한 것이다. 더 구체적으로 설명하면, 로더(110)는 링킹 과정 중에, 저장 장치용 코드 블록(15b)에 호스트 단말(13)의 OS API를 참조하는 코드에 대하여, OS API 매퍼(150)를 호출하도록 링킹한다. 이에 저장 장치용 코드 블록(15b)의 실행 중에, OS API 매퍼(150)가 호출되면, 상기 OS API 매퍼(150)는 상기 호출을 패키징하여, 호스트 단말(13)의 보조 실행 코드(158)로 전달하고, 상기 보조 실행 코드(158)로부터의 응답을 해석하여 실행자(120)에게 전달한다.The OS API mapper 150 calls the OS API of the host terminal 13 in conjunction with the auxiliary execution code 158 of the host terminal 13 during execution of the storage device code block 15b And to receive the results of the execution. More specifically, the loader 110 links the OS API mapper 150 to the code referring to the OS API of the host terminal 13 in the storage device code block 15b during the linking process . If the OS API mapper 150 is invoked during execution of the storage device code block 15b, the OS API mapper 150 packages the call and sends the OS API mapper 150 to the auxiliary execution code 158 of the host terminal 13 Analyzes the response from the auxiliary execution code 158, and transmits the interpreted response to the executor 120.

마지막으로, 메모리 관리자(160)는, 분리 실행을 위하여 오퍼레이팅 시스템(140)으로부터 메모리를 할당받아, 상기 네이티브 실행 환경 구현 장치(100)의 로더(110)와, 실행자(120)와, 작업 관리자(130)와, 메모리 매퍼(140)와, OS API 매퍼(150)에서 사용할 수 있도록 관리한다. Finally, the memory manager 160 allocates a memory from the operating system 140 for execution of the detachment, and allocates the memory to the loader 110, the executor 120, the task manager 130, the memory mapper 140, and the OS API mapper 150, as shown in FIG.

일반적으로 임베디드 환경에서의 메모리 관리는 플랫폼의 개발 및 포팅을 하면서 최적화된 기술을 가지고 있어서, 네이티브 실행 환경 구현 장치(100)에서 사용하기에는 부족한 부분이 있다.In general, memory management in an embedded environment is optimized for developing and porting a platform, which is insufficient for use in the native execution environment implementing apparatus 100.

이에, 상기 메모리 관리자(160)는, 네이티브 실행 환경 구현 장치(100)의 초기 실행시, 오퍼레이팅 시스템(140)으로부터 메모리를 할당받아, 로더(110)와, 실행자(120)와, 작업 관리자(130)와, 메모리 매퍼(140)와, OS API 매퍼(150)에서 사용하기 적합하도록 관리한다. When the native execution environment implementing apparatus 100 is initially executed, the memory manager 160 allocates a memory from the operating system 140 to the loader 110, the executor 120, the task manager 130 ), The memory mapper 140, and the OS API mapper 150, as shown in FIG.

더 구체적으로 설명하면, 오퍼레이팅 시스템(140)은 네이티브 실행 환경 구현 장치(100)를 위하여 메모리를 할당하는데, 이때 할당한 Heap의 시작번지와 사용 가능한 사이즈를 메모리 관리자(160)에게 제공한다. 이때, 네이티브 실행 환경 구현 장치(100)를 위해 할당된 메모리는 고정되어 있어야 하며, 네이티브 실행 환경 구현 장치(100)를 제외한 다른 장치에서 사용해서는 안 된다. 또한, Heap의 시작 주소는 4의 배수이어야 한다. 메모리 관리자(160)는 이렇게 할당된 Heap에 대해 malloc, free 등의 함수를 구현하여, 로더(110)와, 실행자(120)와, 작업 관리자(130)와, 메모리 매퍼(140)와, OS API 매퍼(150)에서 사용할 수 있게 한다.More specifically, the operating system 140 allocates memory for the native execution environment implementing apparatus 100, and provides the memory manager 160 with the start address and usable size of the assigned Heap. At this time, the memory allocated for the native execution environment implementing apparatus 100 should be fixed and not be used by any other apparatus except for the native execution environment implementing apparatus 100. Also, the start address of the Heap must be a multiple of four. The memory manager 160 implements functions such as malloc and free for the heap allocated in this manner and executes the functions of the loader 110, the executor 120, the task manager 130, the memory mapper 140, So that it can be used in the mapper 150.

특히 메모리 관리자(160)는, 네이티브 실행 환경 구현 장치(100)를 위하여, 4 바이트 Alignment로 동적 메모리를 할당받고, 할당받은 동적 메모리를 10개의 군(Size-Class)로 나누어 관리하며, 부분적인 메모리 컴팩션을 지원한다. 더 구체적으로, 물리적으로 인접한 Free 메모리 블록을 병합하고, 메모리 단편화를 최소화한다.In particular, the memory manager 160 allocates a dynamic memory with 4-byte alignment for the native execution environment implementing apparatus 100, divides the allocated dynamic memory into 10 groups (size-class) Compaction is supported. More specifically, merging physically contiguous Free memory blocks and minimizing memory fragmentation.

도 12는 메모리 관리자(160)에 의해 관리되는 메모리 블록의 구조를 나타낸다. 도 12를 참조하면, 메모리 관리자(160)의 메모리 블록은 실제 데이터(Real Data)가 저장되는 동적 할당 메모리(162)와, 동적 할당 메모리(162)의 앞쪽에 위치한 총 16 바이트의 헤더(161)로 구성된다. 상기 헤더(161)는, 각각 4 바이트로 이루어진 4 개의 섹션으로 구성되는데, 제1 섹션에는 물리적으로 해당 메모리 블록의 앞쪽에 위치한 메모리 블록의 크기와, 메모리 그룹을 위한 체크 비트가 기록되며, 제2 섹션에는 해당 메모리 블록의 크기와, 해당 메모리 블록의 사용 여부가 기록되며, 제3 섹션에는 해당 메모리 블록의 다음에 위치하는 Free 메모리 블록의 포인터와, 해당 메모리 블록을 할당한 어플리케이션 ID가 기록되며, 제4 섹션에는 해당 메모리 블록의 앞쪽에 위치한 Free 메모리 블록의 주소와, 실제 데이터에 대한 간접 주소가 기록된다.12 shows a structure of a memory block managed by the memory manager 160. As shown in FIG. 12, the memory block of the memory manager 160 includes a dynamic allocation memory 162 in which real data is stored, a 16-byte header 161 in front of the dynamic allocation memory 162, . The size of the memory block physically located in front of the corresponding memory block and the check bit for the memory group are recorded in the first section, The size of the memory block and whether or not the memory block is used are recorded in the section. In the third section, a pointer of a free memory block positioned next to the memory block and an application ID allocated to the memory block are recorded. In the fourth section, the address of the free memory block located in front of the memory block and the indirect address of the actual data are recorded.

상기와 같은 구조의 헤더(161)를 통하여 동적 할당 메모리 블록을 관리한다.The dynamic allocation memory block is managed through the header 161 having the above structure.

한편, 스마트 카드와 같은 저장 장치의 경우, NOR 메모리나 NAND 메모리는 쓰기의 횟수 제한이 걸려있다. 또한, RAM의 용량이 적어, NOR 메모리나 NAND 메모리를 사용할 시에 최소한의 접근을 통해서 사용할 수 있는 파일 시스템을 구현하여 한다.On the other hand, in the case of a storage device such as a smart card, the number of times of writing is limited in the NOR memory or the NAND memory. Also, a file system that can be used through a minimum access when NOR memory or NAND memory is used is implemented.

이에 본 발명에 의한 네이티브 실행 환경 구현 장치(100)는, 도 13에 도시된 바와 같이, OS(141)로부터 ROM의 일정 영역을 할당받아 파일 시스템을 구현한다.The native execution environment implementation apparatus 100 according to the present invention, as shown in FIG. 13, allocates a certain area of the ROM from the OS 141 to implement a file system.

기존의 플래쉬 메모리로 구성되는 파일 시스템을 이용한 캐쉬의 구현은, 저장 장치(14) 자체의 물리적 한계로 인해 성능적 제약이 있지만, 본 발명에서는 플래쉬 메모리가 아닌 ROM에서 캐쉬를 구현할 수 있는 파일 시스템을 구현함으로써, 종래의 성능적 제약 문제를 해결한다. 상기 파일 시스템에는 기존의 파일 시스템에서처럼, Open, Read, Write, Attribute, Remove, Rename 등과 같은 RFS(Remote File Storage) API가 제공된다.The implementation of the cache using the file system constituted by the existing flash memory has a performance limitation due to the physical limitations of the storage device 14 itself. However, in the present invention, the file system that can implement the cache in the ROM, Thereby solving the conventional performance constraint problem. The file system includes an RFS (Remote File Storage) API such as Open, Read, Write, Attribute, Remove, and Rename as in the existing file system.

본 발명에 따른 네이티브 실행 환경 구현 장치는 다양한 컴퓨터 수단을 통하여 판독 가능한 소프트웨어 형태로 구현되어 컴퓨터로 판독 가능한 기록매체에 기록될 수 있다. 여기서, 기록매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 기록매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 예컨대 기록매체는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광 기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치를 포함한다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 이러한 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The native execution environment implementing apparatus according to the present invention may be implemented in a form of software readable by various computer means and recorded in a computer-readable recording medium. Here, the recording medium may include program commands, data files, data structures, and the like, alone or in combination. Program instructions to be recorded on a recording medium may be those specially designed and constructed for the present invention or may be available to those skilled in the art of computer software. For example, the recording medium may be a magnetic medium such as a hard disk, a floppy disk and a magnetic tape, an optical medium such as a CD-ROM or a DVD, a magneto-optical medium such as a floppy disk magneto-optical media, and hardware devices that are specially configured to store and execute program instructions such as ROM, RAM, flash memory, and the like. Examples of program instructions may include machine language code such as those generated by a compiler, as well as high-level language code that may be executed by a computer using an interpreter or the like. Such a hardware device may be configured to operate as one or more software modules to perform the operations of the present invention, and vice versa.

이상과 같이, 본 명세서와 도면에는 본 발명의 바람직한 실시 예에 대하여 개시하였으나, 여기에 개시된 실시 예외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다. 또한, 본 명세서와 도면에서 특정 용어들이 사용되었으나, 이는 단지 본 발명의 기술 내용을 쉽게 설명하고 발명의 이해를 돕기 위한 일반적인 의미에서 사용된 것이지, 본 발명의 범위를 한정하고자 하는 것은 아니다.While the present invention has been described in connection with what is presently considered to be practical exemplary embodiments, it is to be understood that the invention is not limited to the disclosed embodiments, but, on the contrary, It will be apparent to those skilled in the art. Furthermore, although specific terms are used in this specification and the drawings, they are used in a generic sense only to facilitate the description of the invention and to facilitate understanding of the invention, and are not intended to limit the scope of the invention.

본 발명은 실행형 컨텐츠의 코드 영역에 존재하는 임의의 코드 블록을 분리하여 저장 장치에서 실행되도록 함으로써, 상기 분리된 코드 블록이 없는 경우 실행형 컨텐츠가 정상적으로 동작할 수 없게 하고, 이를 통해 실행형 컨텐츠의 불법 복제 및 사용을 원천적으로 차단할 수 있는 우수한 효과가 있다.The present invention separates arbitrary code blocks existing in the code area of the executable contents and causes them to be executed in the storage device, thereby making it impossible for the executable contents to operate normally in the absence of the separated code blocks, There is an excellent effect that the illegal copying and use of the contents can be blocked at the source.

더하여, 본 발명은 실행형 컨텐츠에서 임의의 코드 블록을 분리하여 실행하는데 있어서, 저장 장치의 프로세서 명령어를 내장한 형태로 변환하고, 분리 실행을 위한 보조 실행 코드를 추가로 생성하고, 상기 보조 실행 코드를 통해 저장 장치에 저장된 코드 블록을 실행시키고 그 결과값을 리턴 받도록 함으로써, 실행형 컨텐츠가 호스트 단말과 저장 장치의 연동을 통해 분리 실행될 수 있도록 하며, 특히, X86 실행형 컨텐츠가 ARM 프로세서를 갖는 스마트 카드나 USIM 을 이용하여 분리 실행할 수 있도록 한다.In addition, the present invention separates and executes an arbitrary code block in the executable content, converts the processor command of the storage device into a built-in form, further generates an auxiliary execution code for separate execution, And executing the code block stored in the storage device and receiving the result of the execution of the code block, so that the executable content can be executed separately through interlocking between the host terminal and the storage device. In particular, Card or a USIM.

더하여, 본 발명은 저장 장치에서, 오퍼레이팅 시스템의 확장 형태로 구현된 네이티브 실행 환경 구현 장치를 통하여, 상기 분리된 코드 블록을 프로세서 명령어로 실행함으로써, 저장 장치용 코드 블록에 대한 분리 실행 속도를 향상시킬 수 있다.In addition, the present invention improves the separation execution speed for a code block for a storage device by executing the separated code block with a processor instruction through a native execution environment implementing device implemented in an extended form of an operating system in a storage device .

10: 디지털 저작권 관리(Digital Rights Management) 시스템
11: 네트워크 12: 컨텐츠 제공 서버
13: 호스트 단말 14: 저장 장치
15a: 분리 실행 기반 실행형 컨텐츠 15b: 저장 장치용 코드 블록
100: 네이티브 실행 환경 구현 장치 110: 로더
120: 실행자 130: 작업 관리자
140: 메모리 매퍼 150: OS API 매퍼
160: 메모리 관리자
10: Digital Rights Management System
11: Network 12: Content providing server
13: Host terminal 14: Storage device
15a: detached execution-based executable content 15b: code block for storage device
100: native execution environment implementation device 110: loader
120: Actor 130: Task Manager
140: Memory Mapper 150: OS API Mapper
160: Memory Manager

Claims (18)

실행형 컨텐츠에서 분리된 저장장치용 코드블록을 저장하고, 호스트 단말과 연동하여 실행형 컨텐츠의 분리 실행을 수행하는 저장 장치에 있어서,
저장 장치의 하드웨어 요소를 관리 및 운영하여, 상기 호스트 단말과의 통신, 내부 메모리에 대한 데이터의 읽기 및 쓰기, 파일의 접근 제어, 사용자 인증, 응용 프로그램의 실행 중에서 하나 이상을 수행하는 오퍼레이팅 시스템; 및
상기 오퍼레이팅 시스템의 확장 형태로 구현되어, 상기 실행형 컨텐츠에서 분리된 저장 장치용 코드 블록을 로드하고, 런타임 링킹하여 실행하고, 실행 결과를 상기 호스트 단말로 제공하는 네이티브 실행 환경 구현 장치를 포함하되,
상기 저장 장치용 코드 블록은 상기 실행형 컨텐츠의 코드 영역에서 분리된 분리 실행 대상 코드 블록이 저장 장치에서 실행 가능한 형태로 변환된 것이며, 상기 분리 실행 대상 코드 블록은 상기 실행형 컨텐츠의 코드 영역에 존재하는 복수의 베이식 블록으로 이루어진 복수의 베이식 블록 그룹 중에서 상기 실행형 컨텐츠의 실행 경로들 중 기 설정 된 경로 상에 있는 베이식 블록 그룹인 것을 특징으로 하는 저장 장치.
1. A storage device for storing a code block for a storage device separated from an executable content and executing separation execution of executable content in cooperation with a host terminal,
An operating system for managing and operating a hardware element of a storage device and performing at least one of communication with the host terminal, reading and writing data to and from an internal memory, file access control, user authentication, and execution of an application program; And
And a native execution environment implementation device implemented in an extended form of the operating system, loading a code block for a storage device separated from the executable content, performing runtime linking and execution, and providing the execution result to the host terminal,
Wherein the code block for a storage device is a code block to be separated from the code area of the executable content, the code block being separated from the code area of the executable content, Wherein the basic block group is a basic block group on a predetermined path among the execution paths of the executable content among a plurality of basic block groups made up of a plurality of basic blocks.
제1항에 있어서,
상기 실행형 컨텐츠의 RO(Right Object)에 대한 설치 및 관리 기능을 수행하고, 상기 호스트 단말과 보안 채널을 연결하여 분리 실행을 위한 정보를 교환하는 저장 장치용 DRM(Digital Right Management) 에이전트를 더 포함하는 것을 특징으로 하는 저장 장치.
The method according to claim 1,
And a DRM (Digital Right Management) agent for a storage device that performs installation and management functions for the RO (Right Object) of the executable content and connects the host terminal and the secure channel to exchange information for separation execution .
호스트 단말에 연결된 저장 장치의 네이티브 실행 환경 구현 장치에 있어서,
실행할 코드 블록을 로딩하고, PIB(Position Independent Binary, 위치이진코드)에서 참조값이 정해지지 않은 코드의 참조값을 고정하는 링킹을 수행하는 로더;
상기 로더에 의해 로드된 코드 블록의 엔트리 포인트를 강제로 호출하여, 상기 코드 블록을 실행시키는 실행자;
상기 호스트 단말의 복수의 어플리케이션에 1:1로 매핑하여 TCB(Task Control Block)을 생성하여 관리하고, 상기 TCB를 통해 상기 호스트 단말로부터 전달된 데이터를 상기 실행자로 전달하고, 그 실행 결과를 상기 호스트 단말로 반환하는 작업 관리자를 포함하되,
상기 코드 블록은 실행형 컨텐츠의 코드 영역에서 분리된 분리 실행 대상 코드 블록이 저장 장치에서 실행 가능한 형태로 변환된 저장 장치용 코드블록이며, 상기 분리 실행 대상 코드 블록은 상기 실행형 컨텐츠의 코드 영역에 존재하는 복수의 베이식 블록으로 이루어진 복수의 베이식 블록 그룹 중에서 상기 실행형 컨텐츠의 실행 경로들 중 기 설정된 경로 상에 있는 베이식 블록 그룹인 것을 특징으로 하는 네이티브 실행 환경 구현 장치.
An apparatus for implementing a native execution environment of a storage device connected to a host terminal,
A loader for loading a code block to be executed and performing linking to fix a reference value of a code whose reference value is not defined in a position independent binary (PIB);
An executor for forcing an entry point of a code block loaded by the loader to execute the code block;
A Task Control Block (TCB) is generated and managed by mapping the data to a plurality of applications of the host terminal in a one-to-one manner, and the data transmitted from the host terminal through the TCB is transferred to the executor, And a task manager for returning to the terminal,
Wherein the code block is a code block for a storage device in which a code block to be separated from the code area of the executable content is converted into a form executable on a storage device, Wherein the basic block group is a basic block group on a predetermined path among execution paths of the executable content among a plurality of basic block groups made up of a plurality of existing basic blocks.
제3항에 있어서,
상기 코드 블록의 실행 중에, 상기 호스트 단말의 메모리 참조가 필요한 경우, 상기 호스트 단말로 메모리 참조 요청을 전달하고, 그에 대한 결과를 상기 호스트 단말로부터 반환받아 상기 실행자로 전달하는 메모리 매퍼를 더 포함하는 것을 특징으로 하는 네이티브 실행 환경 구현 장치.
The method of claim 3,
And a memory mapper for transferring a memory reference request to the host terminal when the memory reference of the host terminal is required during execution of the code block and returning a result of the memory reference request to the host terminal and delivering the result to the executor Wherein the native execution environment implementation device is a native execution environment implementation device.
제3항에 있어서,
상기 코드 블록의 실행 중에, 상기 호스트 단말과 연동하여, 상기 호스트 단말의 OS API를 호출하고, 그 결과를 반환받아 상기 실행자로 전달하는 OS API 매퍼를 더 포함하는 것을 특징으로 하는 네이티브 실행 환경 구현 장치.
The method of claim 3,
Further comprising an OS API mapper operable to interoperate with the host terminal during execution of the code block to call the OS API of the host terminal and to return the result to the executor. .
제3항에 있어서,
상기 코드 블록의 실행을 위하여 사용될 메모리를 상기 저장 장치의 오퍼레이팅 시스템으로부터 할당받아 관리하는 메모리 관리자를 더 포함하는 것을 특징으로 하는 네이티브 실행 환경 구현 장치.
The method of claim 3,
Further comprising a memory manager for allocating and managing a memory to be used for execution of the code block from an operating system of the storage device.
제3항에 있어서, 상기 실행자는
상기 호스트 단말로부터 상기 코드 블록이 전달되면 상기 로더를 호출하는 기능을 더 수행하는 것을 특징으로 하는 네이티브 실행 환경 구현 장치.
4. The method of claim 3, wherein the executor
And when the code block is transferred from the host terminal, calling the loader is performed.
제3항에 있어서, 상기 실행자는
상기 코드 블록의 실행 중에, 상기 호스트 단말의 응답을 기다려야 하는 경우, 현재 실행중이던 인스트럭션 포인트(Instruction point) 및 레지스터 값을 컨텍스트(context) 형태로 저장하고, 상기 호스트 단말의 응답이 도착하면 상기 저장된 값을 참조하여 해당 인스트럭션 포인트부터 재구동시키는 기능을 더 수행하는 것을 특징으로 하는 네이티브 실행 환경 구현 장치.
4. The method of claim 3, wherein the executor
Wherein when a response of the host terminal is to be waited for during execution of the code block, an instruction point and a register value that are currently being executed are stored in a context type, and when a response of the host terminal is received, And re-driving the instruction from the corresponding instruction point.
제3항에 있어서, 상기 작업 관리자는
상기 호스트 단말에서 RO(Right object)의 체크 시에, 사용 권한이 있으면, 상기 TCB를 생성하고, 상기 호스트 단말에서 대응하는 어플리케이션이 종료되거나, 상기 저장 장치의 파워가 오프되는 경우에 상기 생성된 TCB를 제거하는 것을 특징으로 하는 네이티브 실행 환경 구현 장치.
4. The system of claim 3, wherein the task manager
When a right object is checked at the host terminal, if the right to use is authorized, the TCB is generated, and when the corresponding application is terminated at the host terminal or the power of the storage device is turned off, To the native execution environment.
제4항에 있어서,
상기 로더는 링킹 과정 중에, 상기 코드 블록에 상기 호스트 단말의 메모리를 참조하는 코드가 있는 경우, 상기 메모리 매퍼를 호출하도록 링킹하고,
상기 메모리 매퍼는 상기 코드블록의 실행 중에 호출되면, 상기 호출을 패키징하여 상기 호스트 단말로 전달하고, 상기 호스트 단말로부터 처리 결과를 전달받아 이를 해석하여 상기 실행자에게 전달하는 것을 특징으로 하는 네이티브 실행 환경 구현 장치.
5. The method of claim 4,
Wherein the loader links the memory mapper to the memory block when the code block includes a code that refers to the memory of the host terminal during the linking process,
Wherein when the memory mapper is invoked during execution of the code block, the memory mapper delivers the call to the host terminal, receives the processing result from the host terminal, and analyzes and analyzes the result of the processing to the executor. Device.
제5항에 있어서,
상기 로더는 링킹 과정 중에, 상기 코드 블록에 있어서 상기 호스트 단말의 OS API를 참조하는 코드에 대하여, 상기 OS API 매퍼를 호출하도록 링킹하고,
상기 OS API 매퍼는 상기 코드 블록의 실행 중에, 호출되면, 상기 호출을 패키징하여, 상기 호스트 단말로 전달하고, 상기 호스트 단말의 응답을 해석하여 상기 실행자로 전달하는 것을 특징으로 하는 네이티브 실행 환경 구현 장치.
6. The method of claim 5,
Wherein the loader links the OS API mapper to a code referring to the OS API of the host terminal in the code block during a linking process,
Wherein the OS API mapper packages the call and delivers the call to the host terminal when the OS API mapper is invoked during execution of the code block and interprets the response of the host terminal and delivers the interpreted response to the executor. .
제6항에 있어서, 상기 메모리 관리자는
상기 오퍼레이팅 시스템으로부터 4 바이트 Alignment로 동적 메모리를 할당받고, 할당받은 동적 메모리를 복수의 군(Size-Class)로 나누어 관리하며, 부분적인 메모리 컴팩션을 지원하고, 물리적으로 인접한 프리 메모리 블록을 병합하는 것을 특징으로 하는 네이티브 실행 환경 구현 장치.
7. The system of claim 6, wherein the memory manager
The dynamic memory is allocated from the operating system with 4-byte alignment, the allocated dynamic memory is divided into a plurality of groups (size-class) and managed, partial memory compaction is supported, and physically adjacent free memory blocks are merged Wherein the native execution environment implementation apparatus comprises:
제12항에 있어서, 상기 메모리 관리자에 의해 관리되는 메모리 블록은
실제 데이터(Real Data)가 저장되는 동적 할당 메모리와, 상기 동적 할당 메모리의 앞에 위치한 헤더로 구성되고,
상기 헤더는 물리적으로 앞쪽에 위치한 메모리 블록의 크기와, 메모리 그룹을 위한 체크 비트가 기록되는 제1 섹션과, 해당 메모리 블록의 크기와, 해당 메모리 블록의 사용 여부가 기록되는 제2 섹션과, 해당 메모리 블록의 다음에 위치하는 프리 메모리 블록의 포인터와, 해당 메모리 블록을 할당한 어플리케이션 ID가 기록되는 제3 섹션과, 해당 메모리 블록의 앞쪽에 있는 프리 메모리 블록의 주소 및 데이터의 간접 주소가 기록되는 제4 섹션을 포함하는 것을 특징으로 하는 네이티브 실행 환경 구현 장치.
13. The method of claim 12, wherein the memory block managed by the memory manager
A dynamic allocation memory in which real data is stored, and a header located in front of the dynamic allocation memory,
The header includes a first section in which a size of a memory block physically located at a front side, a check bit for a memory group are recorded, a size of the memory block, a second section in which whether or not the memory block is used is recorded, A third section in which a pointer of a free memory block positioned next to the memory block and an application ID allocated to the memory block are recorded and an indirect address of the free memory block in front of the memory block and an indirect address of the data are recorded And a fourth section.
삭제delete 제3항에 있어서, 상기 저장 장치용 코드 블록은
상기 저장 장치의 프로세서 명령어를 내장하는 코드인 것을 특징으로 하는 네이티브 실행 환경 구현 장치.
4. The apparatus of claim 3, wherein the code block for storage comprises:
Wherein the processor is a code for embedding processor instructions of the storage device.
삭제delete 제3항에 있어서, 상기 베이식 블록 그룹은
시작점(entry point)을 통한 제어 신호의 진입 및 상기 복수의 베이식 블록 간의 제어 신호의 이동은 허용하고, 상기 시작점을 제외한 상기 복수의 베이식 블록 내부로의 제어 신호의 진입이 없는 서로 관련된 상기 복수의 베이식 블록의 모임인 것을 특징으로 하는 네이티브 실행 환경 구현 장치.
4. The method of claim 3, wherein the basic block group
A plurality of basic blocks which are associated with each other and which do not allow control signals to enter into the plurality of basic blocks except for the start point, Block of the native execution environment.
제17항에 있어서,
상기 베이식 블록은 단일 입력(single input) 및 단일 출력(single output)의 속성과, 외부에서 내부로의 제어 신호의 진입을 허용하지 않는 속성을 갖는 코드 블록인 것을 특징으로 하는 네이티브 실행 환경 구현 장치.
18. The method of claim 17,
Wherein the basic block is a code block having attributes of a single input and a single output and an attribute of not allowing entry of an external control signal into the internal block.
KR1020100031065A 2009-07-30 2010-04-05 Storage device capable of separating execution of executable content, and device for configuring native execution environment in storage device KR101544731B1 (en)

Applications Claiming Priority (4)

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

Publications (2)

Publication Number Publication Date
KR20110013192A KR20110013192A (en) 2011-02-09
KR101544731B1 true KR101544731B1 (en) 2015-08-17

Family

ID=43772986

Family Applications (8)

Application Number Title Priority Date Filing Date
KR20100029978A KR101487176B1 (en) 2009-07-30 2010-04-01 System for providing code block for separating execution based contents, method thereof and computer recordable medium storing the method
KR1020100029969A KR101432989B1 (en) 2009-07-30 2010-04-01 System for providing code block for separating execution based contents, method thereof and computer recordable medium storing the method
KR20100030188A KR101487175B1 (en) 2009-07-30 2010-04-02 Host device and Storage device for separating management of RO, method for separating management of RO, and storage media recorded program executing separating RO management
KR1020100030189A KR101504087B1 (en) 2009-07-30 2010-04-02 Web service system and method based on storage device, and storage media recorded program executing web service method
KR1020100030172A KR20110013187A (en) 2009-07-30 2010-04-02 System and method for providing service or contents using storage device, drm-server and storage device, and recording medium thereof
KR1020100030784A KR101525402B1 (en) 2009-07-30 2010-04-05 Separating execution method of executable contents, device for forming separating execution based executable contents, and storage media recorded separating execution based executable contents
KR1020100031065A KR101544731B1 (en) 2009-07-30 2010-04-05 Storage device capable of separating execution of executable content, and device for configuring native execution environment in storage device
KR1020100031120A KR101374159B1 (en) 2009-07-30 2010-04-05 System and method for managing rights object using storage device, DRM-server and terminal, and recording medium thereof

Family Applications Before (6)

Application Number Title Priority Date Filing Date
KR20100029978A KR101487176B1 (en) 2009-07-30 2010-04-01 System for providing code block for separating execution based contents, method thereof and computer recordable medium storing the method
KR1020100029969A KR101432989B1 (en) 2009-07-30 2010-04-01 System for providing code block for separating execution based contents, method thereof and computer recordable medium storing the method
KR20100030188A KR101487175B1 (en) 2009-07-30 2010-04-02 Host device and Storage device for separating management of RO, method for separating management of RO, and storage media recorded program executing separating RO management
KR1020100030189A KR101504087B1 (en) 2009-07-30 2010-04-02 Web service system and method based on storage device, and storage media recorded program executing web service method
KR1020100030172A KR20110013187A (en) 2009-07-30 2010-04-02 System and method for providing service or contents using storage device, drm-server and storage device, and recording medium thereof
KR1020100030784A KR101525402B1 (en) 2009-07-30 2010-04-05 Separating execution method of executable contents, device for forming separating execution based executable contents, and storage media recorded separating execution based executable contents

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020100031120A KR101374159B1 (en) 2009-07-30 2010-04-05 System and method for managing rights object using storage device, DRM-server and terminal, and recording medium thereof

Country Status (1)

Country Link
KR (8) KR101487176B1 (en)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101447282B1 (en) * 2012-08-20 2014-10-16 주식회사 네오위즈인터넷 Method, mobile terminal, recording medium, and system for providing mobile payment service
WO2014178618A1 (en) * 2013-04-29 2014-11-06 케이피커뮤니케이션 주식회사 Bidirectional advertisement motion picture matching system and method for operating same
KR102156371B1 (en) 2013-11-27 2020-09-15 한국전자통신연구원 Method for providing embedded software development tools for supporting embedded software development environment based on native building and apparatus thereof
KR102204654B1 (en) * 2014-01-24 2021-01-19 주식회사 넥슨코리아 Method and apparatus for providing content purchased from offline store
KR101671336B1 (en) * 2014-02-27 2016-11-16 (주)스마일게이트엔터테인먼트 Method of unpacking protection with code separation and apparatus thereof
KR102443069B1 (en) 2015-08-12 2022-09-14 삼성전자주식회사 Deveice and method for executing application
CA2993857A1 (en) 2018-02-02 2019-08-02 Ferguson Technologies Inc. Systems and methods for generating electrical energy
KR102441167B1 (en) * 2018-12-05 2022-09-08 한국전자통신연구원 Apparatus and method for executing function

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006164184A (en) 2004-12-10 2006-06-22 Ntt Docomo Inc Program division device, program execution device, program division method and program execution method

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002215828A (en) * 2000-11-16 2002-08-02 Yoshinobu Inada Management system and management method of digital literary work
KR100407389B1 (en) * 2001-11-19 2003-11-28 에스케이텔레텍주식회사 Method and Device for providing Resource Alone of Contents Application for Mobile Communication terminal
KR101254209B1 (en) * 2004-03-22 2013-04-23 삼성전자주식회사 Apparatus and method for moving and copying right objects between device and portable storage device
KR101043336B1 (en) * 2004-03-29 2011-06-22 삼성전자주식회사 Method and apparatus for acquiring and removing informations of digital right objects
JP2006172351A (en) 2004-12-20 2006-06-29 Hitachi Ltd Method and system for content expiration date management by use of removable medium
KR100738917B1 (en) 2006-02-14 2007-07-12 에스케이 텔레콤주식회사 Server, method and system for providing encryption contents and rights object to electronic communication device by using delegation schemes of rights issuer server
KR101346734B1 (en) * 2006-05-12 2014-01-03 삼성전자주식회사 Multi certificate revocation list support method and apparatus for digital rights management
KR101314271B1 (en) * 2006-07-25 2013-10-02 엘지전자 주식회사 Digital rights management method and system thereof
KR101354759B1 (en) 2007-01-03 2014-01-22 엘지전자 주식회사 Digital rights management method for terminal
KR100783811B1 (en) 2007-08-28 2007-12-10 주식회사 파수닷컴 Method of digital rights management about a compressed file
RU2504005C2 (en) 2007-12-20 2014-01-10 Конинклейке Филипс Электроникс Н.В. Digital rights management apparatus and method

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006164184A (en) 2004-12-10 2006-06-22 Ntt Docomo Inc Program division device, program execution device, program division method and program execution method

Also Published As

Publication number Publication date
KR101374159B1 (en) 2014-03-13
KR20110013193A (en) 2011-02-09
KR20110013188A (en) 2011-02-09
KR101487176B1 (en) 2015-02-02
KR20110013191A (en) 2011-02-09
KR101525402B1 (en) 2015-06-08
KR20110013187A (en) 2011-02-09
KR101432989B1 (en) 2014-08-27
KR20110013189A (en) 2011-02-09
KR20110013185A (en) 2011-02-09
KR20110013192A (en) 2011-02-09
KR20110013184A (en) 2011-02-09
KR101487175B1 (en) 2015-02-02
KR101504087B1 (en) 2015-03-24

Similar Documents

Publication Publication Date Title
KR101544731B1 (en) Storage device capable of separating execution of executable content, and device for configuring native execution environment in storage device
TW476914B (en) Using a high level programming language with a microcontroller
JP5821034B2 (en) Information processing apparatus, virtual machine generation method, and application distribution system
US20070271446A1 (en) Application Execution Device and Application Execution Device Application Execution Method
CN101297280B (en) Configuration of isolated extensions and device drivers
EP1031910A1 (en) Software program protection mechanism
EA006639B1 (en) Process for compiling and executing software applications in a multi-processor environment
EP1890237A1 (en) Computer system and program creating device
US20080263542A1 (en) Software-Firmware Transfer System
US20070277160A1 (en) System and method for virtual memory and securing memory in programming languages
WO2022017242A1 (en) Method and apparatus for running second system application in first system, device, and medium
CZ423598A3 (en) Portable safe transaction system for programmable intelligent devices
US8972745B2 (en) Secure data handling in a computer system
KR20050103448A (en) Semiconductor memory card and computer readable program
CN110597496B (en) Method and device for acquiring bytecode file of application program
KR101444070B1 (en) System and method for using memory of host terminal in storage device, host terminal and storage device, and recording medium thereof
CN101593258B (en) System for realizing.Net virtual machine in software protection device and method thereof
CN110888674A (en) Method and device for executing security calculation in Python virtual machine
Markantonakis The case for a secure multi-application smart card operating system
Yakkundi Security Implications of Memory Use on Java Card Platform

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
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: 20180731

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190718

Year of fee payment: 5