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 PDFInfo
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/45—Management 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/462—Content 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/4627—Rights 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
본 발명은 실행형 컨텐츠의 저작권 보호를 위하여 호스트 단말과 저장 장치의 상호 연동을 통해 실행형 컨텐츠를 분리 실행하는데 있어서, 실행형 컨텐츠의 코드 영역에서 분리된 코드 블록을 호스트 단말과의 연동을 통해 분리 실행할 수 있는 저장 장치, 및 그의 네이티브 실행 환경 구현 장치에 관한 것이다.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
본 발명에 있어서, '분리 실행'은 실행형 컨텐츠가 두 개의 서로 다른 장치, 더 구체적으로는 호스트 단말(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
따라서, 본 발명이 적용되는 실행형 컨텐츠는, 실행 파일을 포함하는 컨텐츠를 의미하며, 예를 들어, 게임 프로그램 및 응용 프로그램을 포함한다.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
상기 컨텐츠 제공 서버(12)는 분리 실행기반 실행형 컨텐츠(15a) 및 저장 장치용 코드 블록(15b)을 저장하고 있으며, 이를 고객의 요청에 따라서 호스트 단말(13)로 제공한다. 상기 컨텐츠 제공 서버(12)는 실행형 컨텐츠를 분리 실행이 가능하도록 분리 실행 기반 실행형 컨텐츠(15a)와 저장 장치용 코드 블록(15b)으로 변환하는 기능을 더 수행할 수 있다.The
상기 호스트 단말(13)은 실행형 컨텐츠를 실행할 수 있는 독립된 CPU를 가진 컴퓨팅 장치, 예컨대 PC, 노트북, 워크스테이션, PDA 등을 통칭한다. 호스트 단말(13)은 다수의 사용자에 의해 접근이 자유로운 공용 컴퓨터를 포함한다. 호스트 단말(13)에는 분리실행기반 실행형 컨텐츠(15a)가 설치되어 있다. 호스트 단말(13)에 유무선 인터페이스를 통해 저장 장치(14)가 연결되면, 호스트 단말(13)은 저장 장치(14)와 연동하여 실행형 컨텐츠의 분리 실행을 수행한다. 더하여, 호스트 단말(13)은 사용자의 요청에 따라서 컨텐츠 제공 서버(12)로 실행형 컨텐츠의 구매를 요청하고, 상기 컨텐츠 제공 서버(12)로부터 분리 실행 기반 실행형 컨텐츠(15a)와 저장 장치용 코드 블록(15b)을 다운받아, 분리 실행 기반 실행형 컨텐츠(15a)는 자신의 메모리에 저장하고, 상기 저장 장치용 코드 블록(15b)은 저장 장치(14)로 전달한다.The
여기서 호스트 단말(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
저장 장치(14)는 유무선 인터페이스를 통해 호스트 단말(13)에 연결되며, 호스트 단말(13)을 통해 저장 장치용 코드 블록(15b)을 전달받아 저장하고 관리한다. 상기 저장 장치용 코드 블록(15b)을 안전하게 보관하기 위하여, 상기 저장 장치(14)는 보안 기능을 구비하는 것이 바람직하다. 그리고 상기 저장 장치(14)는 호스트 단말(13)과 연동하여 분리 실행을 수행하기 위하여, 프로세서를 구비하는 것이 바람직하다. 이에 의하여, 저장 장치(14)는 상기 호스트 단말(13)의 요청에 따라 저장 장치용 코드 블록(15b)을 실행하여 그 결과값을 호스트 단말(13)로 반환한다.The
상술한 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
본 발명에 의한 분리 실행 기반 실행형 컨텐츠에 대한 기본 개념을 도 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
여기서, 베이식 블록(25)은 단일 입력(single input) 및 단일 출력(single output)의 속성을 갖는 명령어의 열(sequence of instruction)을 의미하는 것으로서, 외부에서 내부로의 진입을 허용하지 않는 속성을 갖는 코드 블록으로 정의할 수 있다. 즉 베이식 블록(25)은 시작부터 끝까지 한번에 실행되는 연속적인 문장(코드의 모임)을 의미하며, 중간에 흐름 제어로 인해 실행이 중지되지 않는 문장 그룹이다.Here, the
도 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
실행형 컨텐츠(30)는 하나 이상의 분리 실행 대상 코드 블록(37)을 대신하여 스터브 코드(39)가 삽입된 코드 영역(31)과, 데이터 영역(33)을 포함한다. 이때 스터브 코드(39)는 추출된 분리 실행 대상 코드 블록(37)을 대신하여 삽입되는 코드로서, 실행형 컨텐츠(30)와, 분리 실행 대상 코드 블록(37)을 연결한다. 더 구체적으로, 스터브 코드(39)는 실행형 컨텐츠(30)에 대한 실행을 수행할 때, 대응하는 분리 실행 대상 코드 블록(37)을 호출하고, 호출된 분리 실행 대상 코드 블록(37)의 결과값을 반환 받는다.The
하나 이상의 분리 실행 대상 코드 블록(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
이와 다르게, 시작점을 제외한 베이식 블록(35)으로의 제어 신호의 진입이 있는 베이식 블록 그룹을 분리 실행 대상 코드 블록(37)으로 선정할 경우, 해당 분리 실행 대상 코드 블록(37)을 추출한 후 삽입되는 스터브 코드(39)에 시작 부분이 아닌 중간으로 제어 신호가 진입할 수 있으며, 이 경우 스터브 코드(39)는 해당 제어 신호에 대한 처리를 수행하지 못하며, 결국, 실행형 컨텐츠(30)의 실행이 중지되거나 에러가 발생할 수 있다.Alternatively, when the basic block group in which the control signal enters the
이러한 특성의 분리 실행 대상 코드 블록(37)의 추출 방법은 다음과 같다.An extraction method of the separation execution
먼저, 분리 실행할 실행형 컨텐츠(20)의 코드 영역(21)에 대한 동적 프로파일링 및 정적 분석을 통하여 복수의 베이식 블록 그룹(27)을 선정한다. 상기 복수의 베이식 블록 그룹(27)의 선정은, 실행형 컨텐츠(20)를 실행하여, 런-타임 동안 코드 영역(21)에 대한 기초 정보를 수집하고, 수집한 기초 정보를 이용하여 분석 범위를 확장한 동적 프로파일링을 통해 상기 코드 영역(21)에 대한 정적 분석을 수행함에 의해 이루어진다. 여기서, 기초 정보는, 브랜치 어드레스, 점프 어드레스, 콜 어드레스 및 RET의 간접 주소 중에 적어도 하나의 간접 주소이다. 이러한 기초 정보 중에서 실행형 컨텐츠(20)의 공개된 API와 관련된 기초 정보를 제거하고, 공개된 API와 관련된 기초 정보가 제거된 기초 정보를 기반으로 실행형 컨텐츠(20)의 코드 영역(21)에 대한 정적 분석을 수행함으로써, 분석 범위를 확장할 수 있다. 상기 수집한 기초 정보 중 간접 주소를 컨트롤 플로우 상에 대입함으로써 분석 범위를 확장할 수 있으며, 그 결과 단독으로 동적 프로파일링 또는 정적 분석을 수행하는 것에 비하여 더 많은 베이식 블록 그룹(27)을 선정할 수 있다.First, a plurality of
더하여, 선정된 복수의 베이식 블록 그룹(27) 중에서, 베이식 블록 그룹(27)의 내부로 진입하는 제어 신호가 발생하면, 제어 신호의 명령어 주소를 기준으로 해당 베이식 블록 그룹(27)을 분할하여 재정의한다. 이때 재정의 대상이 되는 베이식 블록 그룹(27)은 제어 신호의 명령어 주소를 기준으로 이전의 제1 베이식 블록 그룹과, 제어 신호의 명령어 주소를 포함하는 이후의 제2 베이식 블록 그룹으로 재정의한다.In addition, when a control signal for entering the inside of the
이와 같은 재정의 과정을 반복함으로써, 최종적으로 단일 입력 및 단일 출력의 속성과, 외부에서 내부로의 진입을 허용하지 않는 속성을 갖는 복수의 베이식 블록(25)을 포함하는 베이식 블록 그룹(27)을 더 정확하게 정의할 수 있다.By repeating this redefinition process, a
이어서 복수의 베이식 블록 그룹(27) 중에서 분리 실행 대상 코드 블록(37)을 선정한다. 그리고 분리 실행 대상 코드 블록(37)을 코드 영역(31)에서 분리하고, 상기 분리 실행 대상 코드 블록(37) 대신에 스터브 코드(39)를 삽입한다. Then, the separation execution
이때 분리 실행 대상 코드 블록(37)은 복수의 베이식 블록 그룹(27) 중에서 실행형 컨텐츠(20)의 중요 경로(Critical path) 상에 있는 베이식 블록 그룹을 선택하는 것이 바람직하다. 또한, 복수의 베이식 블록 그룹(27) 중에서 콜 횟수, 크기 및 실행 시간을 함께 고려하여 분리 실행 대상 코드 블록(37)을 선출할 수 있다. 예컨대 콜 횟수가 많고, 크기가 작고, 실행 시간이 짧은 베이식 블록 그룹(27)을 분리 실행 대상 코드 블록(37)으로 선출한다.At this time, it is preferable that the separation execution
이에 따르면, 실행형 컨텐츠에 있어서, 중요 경로 상에 존재하고, 콜 횟수가 많고 크기가 작고, 실행 시간이 짧은 베이식 블록 그룹을 보안을 위한 분리 실행 대상 코드 블록으로 선정하여, 상기 분리 실행 대상 코드 블록이 실행형 컨텐츠에서 분리 실행되도록 함으로써, 실행형 컨텐츠의 복제 방지와 관련된 보안 성능을 향상시킬 수 있다.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
도 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
저장 장치용 코드 블록(15b)은 저장 장치(14)의 플랫폼에 기반한 것인데, 예를 들면, 저장 장치(14)가 Java Card로 구현되는 경우, Java 용 코드 블록 및 ARM용 코드블록이 된다. 상기 저장 장치용 코드 블록(15b)는 애플릿으로 구현될 수 도 있고, RO에 포함될 수 도 있다. 구체적으로는 Java 애플릿 및 ARM 인스트럭션을 내장한 Java 애플릿으로 구현될 수 있다. 이때 상기 보조 실행 코드(158)는 상술한 Java 애플릿을 실행하기 위한 Native launcher이다. 더하여, 상기 보조 실행 코드(158)는 필요 시에만 로딩되어 실행될 수 있도록 DLL(Dynamic Link Library) 파일로 구현될 수 있다. The storage
그리고, 스터브 코드(153b)의 삽입과 더불어, 보조 실행 코드(158)의 로딩을 위하여 임포트 영역(idata section)(155)의 임포트 테이블(import table)에 보조 실행 코드(Native Launcher DLL)(155a)을 삽입한다. 상기 임포트 테이블에 대한 보조 실행 코드(158)의 삽입은, 호스트 단말(13)에서 분리 실행 기반 실행형 컨텐츠(15a)가 구동될 때, OS의 로더(loader)에 의하여 보조 실행 코드(158)가 로딩되도록 하기 위한 것이다.In addition to the insertion of the
이러한 방식을 통하여, 상기 분리 실행 기반 실행형 컨텐츠의 소스 코드의 큰 수정 없이, 분리 실행 대상 코드 블록과의 상호 작용이 가능해진다.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
더하여, 분리 실행 기반 실행형 컨텐츠(15a)에서 초기에 실행되는 초기 코드 블록을 선정하고, 선정된 초기 코드 블록을 특정 키로 암호화한 후, 상기 암호화된 초기 코드 블록(157a)을 추가 생성된 보안 영역(157)에 삽입하고, 상기 초기 코드 블록의 위치에는 상기 키를 획득하여 암호화된 초기 코드 블록(157a)을 복호화한 후 실행시키도록 보조 실행 코드(158)의 특정 함수를 호출하는 시동 스터브 코드(153a)를 삽입한다.In addition, an initial code block to be initially executed in the separation execution based
이때 암호화에 사용되는 키는 실행형 컨텐츠의 실행시에 복호화를 위하여 필요하므로, 권리 객체(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
도 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
보조 실행 코드(158)는, 인터페이스 기능부(158a)와, 패킹(packing) 기능부(158b)와, 언패킹(unpacking) 기능부(158c)와, 메모리 매핑 기능부(158d)와, OS API 매핑 기능부(158e)를 포함하고, 더하여, 코드 복호화 기능부(158f)를 더 포함할 수 있다.The
인터페이스 기능부(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
패킹 기능부(158b)는 스터브 코드(153b)로부터 스택과 레지스터의 정보를 전달받아 패킹하여, 인터페이스 기능부(158a)를 통해 저장 장치용 코드 블록(15b)으로 전달한다. 여기서, 스택 정보는, SP 레지스터에 의해 지정된 스택 포지션에서부터 시작하여 파라메터로 이용되는 스택 값들의 모임이고, 레지스터 정보는, 스터브 코드(153b)에서 저장 장치용 코드 블록(15b)를 호출할 때 전달되는 레지스터 정보이다.The
언패킹 기능부(158c)는, 인터페이스 기능부(158a)를 통해 실행된 저장 장치용 코드 블록(15b)으로부터 전달된 패킹 데이터를 언패킹하여, 상기 스터브 코드(153b)로 반환한다. 언패킹 기능부(158b)는, 저장 장치용 코드블록(15b)에서 반환되는 결과값이 Primitive Data Type인 경우에는 단순히 해당 레지스터의 값에 반환된 결과 값을 설정하고, 메모리 주소인 경우, 해당 주소에 해당하는 값들을 반환된 결과값에 따라서 변경한다.The unpacking
메모리 매핑 기능부(158d)는, 인터페이스 기능부(158a)를 통해 저장 장치용 코드블록(15b)에서 전달된 데이터를 호스트 단말(13)의 메모리에 기록하거나, 호스트 단말(13)의 메모리에서 데이터를 디스패치하여 저장 장치용 코드블록(15b)으로 전달한다. 이러한 메모리 매핑 기능부(158c)를 통해 저장 장치용 코드블록(15b)이 호스트 단말(13)의 메모리를 참조할 수 있다.The memory
OS API 매핑 기능부(158e)는, 인터페이스 기능부(158a)를 통해 저장 장치용 코드블록(15b)으로부터 API 명 및 파라메터 값을 전달받아, 호스트 단말(13)의 OS API를 호출하고, 그 결과를 반환받아 저장 장치용 코드블록(15b)으로 전달한다. 이에 의하여, 저장 장치(14)에 저장된 저장 장치용 코드블록(15b)이 호스트 단말(13)의 OS API를 호출하여 그 결과를 반환 받을 수 있다.The OS API
코드 복호화 기능부(158e)는, 저장 장치(15b)로부터 특정 키를 획득하여 보안 영역(157)에 적재된 암호화된 초기 코드 블록(157a)을 복호화한 후, 복호화된 초기 코드 블록을 실행시킨다. 더 구체적으로는, 복호화된 초기 코드 블록을 런타임 코드 실행자(Runtime code executioner)가 메모리 상에서 바로 실행시키는데, 상기 런타임 코드 실행자가 상기 복호화된 초기 코드 블록으로 인스트럭션 포인터(Instruction Pointer)를 매핑하여 점프시켜, 상기 복호화된 초기 코드 블록을 실행한다. 이에 의하면, 분리 실행 기반 실횅형 컨텐츠의 실행 시에만, 복호화된 초기 코드 블록이 메모리에 존재하고, 실행이 후에는 바로 소멸되며, 이를 통해 보안 효과를 더 높일 수 있다.The code
상기와 같이 구성된 보조 실행 코드(158)를 이용한 분리 실행은 다음과 같이 이루어진다.The separation execution using the
먼저, 분리 실행 기반 실행형 컨텐츠(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
이에 의하면, 분리 실행 기반 실행형 컨텐츠(15a) 및 저장 장치용 코드블록(15b)이 호스트 단말(13)과 저장 장치(14)의 연동을 통해 정상적으로 동작할 수 있게 된다.This makes it possible for the execution-based
상기에서 저장 장치용 코드 블록(15b)은 실행 속도의 향상을 위하여 내부에 저장 장치의 프로세서 명령어(예를 들어, ARM 바이너리)를 내장할 수 있다. 이에 반해, 저장 장치(14)로 이용될 수 있는 스마트 카드나 USIM의 오퍼레이팅 시스템은 인터프리트 언어(예를 들어, Java)로 구현될 수 있다.In this case, the
따라서, 분리 실행 속도의 향상을 위해서는, 인터프리트 언어 기반의 오퍼레이팅 시스템을 구비한 저장 장치(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
도 5는 본 발명에 따른 네이티브 실행 환경 구현 장치가 적용된 저장 장치(14)의 상세 구성을 보인 블록도이다. 도 5에서 본 발명에 의한 네이티브 실행 환경 구현 장치는, 소프트웨어 모듈 형태로 구현된다.FIG. 5 is a block diagram showing a detailed configuration of a
도 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
오퍼레이팅 시스템(140)은 저장 장치(14)의 하드웨어 요소(CPU, ROM, RAM, EEPROM, I/O 인터페이스 등)를 종합적으로 관리, 운영하기 위한 것으로서, 호스트 단말(13)과의 통신, 내부 메모리에 대한 데이터의 읽기 및 쓰기, 파일의 접근 제어, 사용자 인증, 응용 프로그램의 실행 등의 기능을 수행한다. 이러한 오퍼레이팅 시스템(140)은 제조사별로 서로 다른 형태로 구현되고 있는데, 이에 따른 문제점들을 해결하고자, JavaCard와 MULTOS와 같은 개방형 플랫폼이 주로 사용되고 있다.The
저장 장치용 DRM 에이전트(142)는, 분리 실행 기반 실행형 컨텐츠(15a)에 대한 RO(Right Object)의 설치 및 관리 기능을 수행하고, 저장 장치(14)의 인증서에 대한 관리 기능을 제공한다. 더하여, 저장 장치용 DRM 에이전트(142)는 인증서 및 RO가 인증되면, 호스트 단말(13)과 보안 채널을 연결하여 분리 실행을 위한 정보를 교환할 수 있도록 한다. 더 구체적으로, 저장 장치용 DRM 에이전트(142)는 호스트 단말(13)의 보조 실행 코드(158)로부터 저장 장치용 코드 블록(15b)에 대한 실행 요청을 전달받고, 상기 저장 장치용 코드 블록(15b)의 실행이 완료되면 그 결과값을 호스트 단말(13)로 반환한다.The
네이티브 실행 환경 구현 장치(100)는, 분리 실행 속도를 향상시키기 위한 것으로서, 저장 장치용 코드 블록(15b)에 내장된 프로세서 명령어들을 실행한다. 더 구체적으로, 네이티브 실행 환경 구현 장치(100)는 상기 저장 장치용 DRM 에이전트(142)로부터 저장 장치용 코드 블록(15b)을 전달받아 이를 실행시킨다. 이를 위하여, 상기 네이티브 실행 환경 구현 장치(100)는 오퍼레이팅 시스템(140)의 확장 모듈 형태로 존재하여, 전달된 저장 장치용 코드블록(15b)을 로드하여 고정되지 않은 참조변수(reference)를 모두 고정하고(이하, 링킹(Linking)이라고 함), 실행시킨다. 더하여, 네이티브 실행 환경 구현 장치(100)는 저장 장치용 코드 블록(15b)의 실행을 위한 호스트 단말(13)의 메모리 접근 및 OS API 호출을 검출하여 처리한다. The native execution
이러한 네이티브 실행 환경 구현 장치(100)는, 예를 들어, 상기 저장 장치(14)의 오퍼레이팅 시스템(140)이 Java Card로 구현된 경우, Javacard에서 지원하는 JNI(Java Native Interface)를 이용하여 구현될 수 있다. 또한, 저장 장치용 코드블록(15b)은 PIB(Position Independent Binary)로 구현된다. 따라서, 네이티브 실행 환경 구현 장치(100)는, JNI Call을 통해 활성화되며, 초기에는 전달된 PIB를 런타임 링킹한 후, IP 레지스터를 조작하여 시작번지로 점프시켜 코드를 구동시킨다.For example, when the
도 6은 본 발명에 따른 네이티브 실행 환경 구현 장치(100)의 상세 구성을 나타낸 블록도로서, 이를 참조하여 네이티브 실행 환경 구현 장치의 구성 및 작용을 더 구체적으로 설명한다.FIG. 6 is a block diagram illustrating a detailed configuration of an
도 6을 참조하면, 네이티브 실행 환경 구현 장치(100)는 로더(Loader)(110)와, 실행자(Executor)(120)와, 작업 관리자(Task manager)(130)와, 메모리 매퍼(Memory Mapper)(140)와, OS API 매퍼(Mapper)(150)와, 메모리 관리자(Memory Manager)(160)를 포함한다.6, the native execution
로더(110)는 메모리의 특정 영역에 저장된 저장 장치용 코드 블록(15b)을 런타임에 링킹하여, 메모리 상의 임의의 영역으로 로드한다. 상기 저장 장치용 코드 블록(15b)는 PIB(Position Independent Binary)이다. The
도 7은 로더(110)의 기능을 설명하기 위한 블록도이다. 도 7을 참조하면, 저장 장치용 코드블록(15b)은 파라메터 등의 데이터가 기록된 데이터 영역과 실행될 코드가 기록된 코드 영역과, 헤더와, 링킹을 위한 기준정보인 참조 정보로 이루어지며, 여기서, 코드 영역의 각 코드의 참조값은 고정되어 있지 않다. Fig. 7 is a block diagram for explaining the function of the
따라서, 로더(110)는 메모리의 특정 영역(OxOfO2)에 저장된 저장 장치용 코드블록(15b)을 메모리의 임의 영역(Oxee00,Oxee10)으로 로드하는데, 이때 참조 정보를 참조하여 고정되지 않은 참조값을 모두 고정시킨다. 예를 들어, 저장 장치용 코드블록(15b)의 데이터영역을 메모리 상의 Oxee10에 저장하고, 코드 영역을 Ox0e00에 저장하면서, 참조값이 고정되지 않은 코드 Loadr1의 참조값을 데이터 영역의 주소 Oxee10로 고정한다. Therefore, the
다시 도 6에서, 실행자(120)는 로더(110)에 의해 로드된 저장 장치용 코드 블록(15b)의 엔트리 포인트를 강제로 호출하여, 저장 장치용 코드블록(15b)을 실행한다.6, the
이러한 실행자(120)는 실제로 실행되는 코드 블록의 실체가 되는 것이며, Java Card 기반의 저장 장치에서는 JNI 함수 인터페이스도 실행자(120)에 놓인다.The
더하여, 실행자(120)는 초기에 호스트 단말(13)로부터 JNI를 통해 저장 장치용 코드 블록(15b)이 전달되면 로더(110)를 호출하여, 해당 저장 장치용 코드 블록(15b)이 로드되게 하고, 이후에는 상기 로드된 저장 장치용 코드 블록(15b)의 실행을 담당한다.In addition, when the
또한, 실행자(120)는 상기 메모리 매퍼(140)와 OS API 매퍼(150)를 통해 호스트 단말(13)의 응답을 기다려야 하는 상황인 경우, 현재 실행중이던 인스트런션 포인트(Instruction point) 및 레지스터 값을 컨텍스트(context) 형태로 저장하고 있다가, 호스트 단말(13)의 응답이 도착하면 상기 저장된 값을 참조하여 해당 인스트럭션 포인트부터 재구동시킨다.If the
더하여, 실행자(120)의 일부는 호스트 단말(13)과의 통신을 수행한다. 더 구체적으로 설명하면, 오퍼레이팅 시스템(140)을 통해 호스트 단말(13)로부터 특정 헤더의 값이 오면, 그 헤더를 제외한 데이터와 길이(Length)를 실행자(120)의 다른 부분으로 전달하고, 실행자(120)의 다른 부분에서 데이터를 파싱하여 해당 내용을 실행하면, 그 결과를 호스트 단말(13)로 전달한다. 이에 대한 프로토콜은 호스트 단말(13)의 보조 실행 코드(158)와, 네이티브 실행 환경 구현 장치(100) 사이에 규격화시켜서 처리할 수 있도록 한다.In addition, a part of the
작업 관리자(130)는 복수의 저장 장치용 코드 블록(15b)의 TCB(Task Control Block)을 관리하고, 호스트 단말(13)의 보조 실행 코드(158)로부터 전달된 데이터를 각각의 TCB에 매핑된 실행자(110)로 전달하고, 그 실행 결과를 호스트 단말(13)의 해당 보조 실행 코드(158)로 전달한다. 이에 의하여, 복수의 저장 장치용 코드 블록(15b)이 호스트 단말(13)의 대응하는 보조 실행 코드(158)와 매칭되어 실행될 수 있다. The
호스트 단말(13)에서는 사용자의 선택에 따라서 복수의 분리 실행 기반 실행형 컨텐츠(15a)가 실행될 수 있으며, 각 실행형 컨텐츠별로 보조 실행 코드(158)가 생성되어 동작한다. 따라서, 저장 장치(14) 측에서도 복수의 보조 실행 코드(158)에 대응하는 복수의 저장 장치용 코드 블록(15b)이 저장되어 실행될 수 있다. 이를 위하여, 호스트 단말(13)의 복수의 보조 실행 코드(158)에 1:1로 매칭되는 복수의 태스크가 필요하다. In the
따라서, 작업 관리자(130)는 호스트 단말(13)의 복수의 보조 실행 코드(158)에 1:1로 매핑하는 복수의 TCB(Task Control Block)를 생성하여 관리하고, 상기 복수의 TCB를 통해 각 저장 장치용 코드 블록(15b)이 대응하는 보조 실행 코드(158)와 연동하여 실행될 수 있도록 한다. Accordingly, the
도 8은 본 발명에 따른 네이티브 실행 환경 구현 장치에서의 TCB와 호스트 단말(13)의 관계를 나타낸 도면이다. 도시된 바와 같이, 네이티브 실행 환경 구현 장치(100)의 작업 관리자(130)에 의해 생성되는 복수의 TCB(131)는 각각 호스트 단말(13)에서 실행되는 복수의 실행형 컨텐츠(15a)에 추가 생성된 복수의 보조 실행 코드(158)와 1:1로 매핑되어 동작한다.8 is a diagram showing the relationship between the TCB and the
더하여, 이러한 TCB(131)는 대응하는 보조 실행 코드(158)가 실행되기 전에 미리 실행되어야 한다. 이를 위해서는, 각 실행형 컨텐츠(15a)의 실행시, 보조 실행 코드(158)가 실행되기 전에, RO의 여부에 따라서 TCB(131)를 미리 생성하여야 한다.In addition, this TCB 131 must be executed before the corresponding
도 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
상기에 의하면, 호스트 단말(13)에서 RO의 체크 시에 TCB가 생성됨으로써, 보조 실행 코드(158)가 실행되기 전에, 대응하는 TCB가 마련될 수 있다.According to the above description, the TCB is generated at the time of checking the RO in the
이와 같이 생성된 TCB는 호스트 단말(13)에서 해당하는 실행형 컨텐츠가 종료되거나, 저장 장치(14)의 전원이 오프되는 경우에 제거된다.The generated TCB is removed when the corresponding executive content is terminated in the
도 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
다시 도 6을 참조하면, 메모리 매퍼(140)는, 실행자(120)에 의해 저장 장치용 코드 블록(15b)의 실행 중에, 호스트 단말(13)의 메모리 참조가 필요한 경우, 상기 호스트 단말(13)의 보조 실행 코드(158)을 통해 호스트 단말(13)를 참조할 수 있도록 한다. 더 구체적으로 설명하면, 상기 로더(110)는 링킹 과정 중에, 저장 장치용 코드 블록(15b)에 호스트 단말(13)의 메모리를 참조하는 코드가 있는 경우, 메모리 매퍼(140)를 호출하도록 링킹한다. 이에 따라서, 실행중인 저장 장치용 코드 블록(15b)에서 메모리 매퍼(140)를 호출하면, 이 호출을 패키징하여 호스트 단말(13)의 보조 실행 코드(158)로 전달하며, 상기 보조 실행 코드(158)에 의해 처리 결과를 전달받아 이를 해석하여 실행자(120)에게 전달한다.Referring again to FIG. 6, the
그리고, 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
마지막으로, 메모리 관리자(160)는, 분리 실행을 위하여 오퍼레이팅 시스템(140)으로부터 메모리를 할당받아, 상기 네이티브 실행 환경 구현 장치(100)의 로더(110)와, 실행자(120)와, 작업 관리자(130)와, 메모리 매퍼(140)와, OS API 매퍼(150)에서 사용할 수 있도록 관리한다. Finally, the
일반적으로 임베디드 환경에서의 메모리 관리는 플랫폼의 개발 및 포팅을 하면서 최적화된 기술을 가지고 있어서, 네이티브 실행 환경 구현 장치(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
이에, 상기 메모리 관리자(160)는, 네이티브 실행 환경 구현 장치(100)의 초기 실행시, 오퍼레이팅 시스템(140)으로부터 메모리를 할당받아, 로더(110)와, 실행자(120)와, 작업 관리자(130)와, 메모리 매퍼(140)와, OS API 매퍼(150)에서 사용하기 적합하도록 관리한다. When the native execution
더 구체적으로 설명하면, 오퍼레이팅 시스템(140)은 네이티브 실행 환경 구현 장치(100)를 위하여 메모리를 할당하는데, 이때 할당한 Heap의 시작번지와 사용 가능한 사이즈를 메모리 관리자(160)에게 제공한다. 이때, 네이티브 실행 환경 구현 장치(100)를 위해 할당된 메모리는 고정되어 있어야 하며, 네이티브 실행 환경 구현 장치(100)를 제외한 다른 장치에서 사용해서는 안 된다. 또한, Heap의 시작 주소는 4의 배수이어야 한다. 메모리 관리자(160)는 이렇게 할당된 Heap에 대해 malloc, free 등의 함수를 구현하여, 로더(110)와, 실행자(120)와, 작업 관리자(130)와, 메모리 매퍼(140)와, OS API 매퍼(150)에서 사용할 수 있게 한다.More specifically, the
특히 메모리 관리자(160)는, 네이티브 실행 환경 구현 장치(100)를 위하여, 4 바이트 Alignment로 동적 메모리를 할당받고, 할당받은 동적 메모리를 10개의 군(Size-Class)로 나누어 관리하며, 부분적인 메모리 컴팩션을 지원한다. 더 구체적으로, 물리적으로 인접한 Free 메모리 블록을 병합하고, 메모리 단편화를 최소화한다.In particular, the
도 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
상기와 같은 구조의 헤더(161)를 통하여 동적 할당 메모리 블록을 관리한다.The dynamic allocation memory block is managed through the
한편, 스마트 카드와 같은 저장 장치의 경우, 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
기존의 플래쉬 메모리로 구성되는 파일 시스템을 이용한 캐쉬의 구현은, 저장 장치(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
본 발명에 따른 네이티브 실행 환경 구현 장치는 다양한 컴퓨터 수단을 통하여 판독 가능한 소프트웨어 형태로 구현되어 컴퓨터로 판독 가능한 기록매체에 기록될 수 있다. 여기서, 기록매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 기록매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 예컨대 기록매체는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(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
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.
상기 실행형 컨텐츠의 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.
상기 코드 블록의 실행 중에, 상기 호스트 단말의 메모리 참조가 필요한 경우, 상기 호스트 단말로 메모리 참조 요청을 전달하고, 그에 대한 결과를 상기 호스트 단말로부터 반환받아 상기 실행자로 전달하는 메모리 매퍼를 더 포함하는 것을 특징으로 하는 네이티브 실행 환경 구현 장치.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.
상기 코드 블록의 실행 중에, 상기 호스트 단말과 연동하여, 상기 호스트 단말의 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. .
상기 코드 블록의 실행을 위하여 사용될 메모리를 상기 저장 장치의 오퍼레이팅 시스템으로부터 할당받아 관리하는 메모리 관리자를 더 포함하는 것을 특징으로 하는 네이티브 실행 환경 구현 장치.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.
상기 호스트 단말로부터 상기 코드 블록이 전달되면 상기 로더를 호출하는 기능을 더 수행하는 것을 특징으로 하는 네이티브 실행 환경 구현 장치.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.
상기 코드 블록의 실행 중에, 상기 호스트 단말의 응답을 기다려야 하는 경우, 현재 실행중이던 인스트럭션 포인트(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.
상기 호스트 단말에서 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.
상기 로더는 링킹 과정 중에, 상기 코드 블록에 상기 호스트 단말의 메모리를 참조하는 코드가 있는 경우, 상기 메모리 매퍼를 호출하도록 링킹하고,
상기 메모리 매퍼는 상기 코드블록의 실행 중에 호출되면, 상기 호출을 패키징하여 상기 호스트 단말로 전달하고, 상기 호스트 단말로부터 처리 결과를 전달받아 이를 해석하여 상기 실행자에게 전달하는 것을 특징으로 하는 네이티브 실행 환경 구현 장치.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.
상기 로더는 링킹 과정 중에, 상기 코드 블록에 있어서 상기 호스트 단말의 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. .
상기 오퍼레이팅 시스템으로부터 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:
실제 데이터(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.
상기 저장 장치의 프로세서 명령어를 내장하는 코드인 것을 특징으로 하는 네이티브 실행 환경 구현 장치.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.
시작점(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.
상기 베이식 블록은 단일 입력(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.
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)
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)
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)
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 |
-
2010
- 2010-04-01 KR KR20100029978A patent/KR101487176B1/en not_active IP Right Cessation
- 2010-04-01 KR KR1020100029969A patent/KR101432989B1/en active IP Right Grant
- 2010-04-02 KR KR20100030188A patent/KR101487175B1/en active IP Right Grant
- 2010-04-02 KR KR1020100030189A patent/KR101504087B1/en active IP Right Grant
- 2010-04-02 KR KR1020100030172A patent/KR20110013187A/en active Search and Examination
- 2010-04-05 KR KR1020100030784A patent/KR101525402B1/en active IP Right Grant
- 2010-04-05 KR KR1020100031065A patent/KR101544731B1/en active IP Right Grant
- 2010-04-05 KR KR1020100031120A patent/KR101374159B1/en active IP Right Grant
Patent Citations (1)
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 |