KR20110013197A - Method for communicating based on ums, host terminal, and medium recorded program thereof - Google Patents

Method for communicating based on ums, host terminal, and medium recorded program thereof Download PDF

Info

Publication number
KR20110013197A
KR20110013197A KR1020100032361A KR20100032361A KR20110013197A KR 20110013197 A KR20110013197 A KR 20110013197A KR 1020100032361 A KR1020100032361 A KR 1020100032361A KR 20100032361 A KR20100032361 A KR 20100032361A KR 20110013197 A KR20110013197 A KR 20110013197A
Authority
KR
South Korea
Prior art keywords
data
ums
file
storage device
host terminal
Prior art date
Application number
KR1020100032361A
Other languages
Korean (ko)
Other versions
KR101366669B1 (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 KR20110013197A publication Critical patent/KR20110013197A/en
Application granted granted Critical
Publication of KR101366669B1 publication Critical patent/KR101366669B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/453Help systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/454Multi-language systems; Localisation; Internationalisation

Abstract

PURPOSE: A USB-based communication method, a host terminal, and a recording medium which records a program for the same are provided to use a storing device as a UMS type and use a file operation through UMS, thereby enabling a PC to communicate with a storing device without a separate device. CONSTITUTION: An interface unit communicate with a storing device(60). An API wrapper(520) provides an API for exchanging an APDU(Application Protocol Data Unit) message with a storing device. If a host program calls the API, the API wrapper receives data for performing calculation about a file in a storing device from the host program. If the data is received from the API wrapper, an APDU agent(530) generates thread using the received data.

Description

UMS 기반 통신 방법, 호스트 단말, 이를 위한 프로그램을 기록한 기록매체{Method for communicating based on UMS, host terminal, and medium recorded program thereof}WMS-based communication method, host terminal, recording medium recording a program therefor {Method for communicating based on UMS, host terminal, and medium recorded program approximately}

본 발명은 UMS(USB Mass Storage) 기반 통신 방법에 관한 것으로, 특히 저장장치를 UMS 형태로 이용하여 별도의 드라이버 없이 통신이 가능한 UMS 기반 통신 방법, 호스트 단말, 이를 위한 프로그램을 기록한 기록매체에 관한 것이다. The present invention relates to a UMS (USB Mass Storage) based communication method, and more particularly, to a UMS-based communication method, a host terminal, and a recording medium for recording a program therefor, which can communicate without a separate driver using a storage device in the form of a UMS. .

기존의 PC와 스마트 카드와 같은 저장장치의 통신은 리더기를 통해 APDU(Application Protocol Data Unit) 프로토콜을 이용하여 통신한다. 하지만 통신 속도 측면에서 많이 느린 단점이 있기 때문에 USB(Universal Serial Bus)를 이용하여 통신 속도를 보완한다. Conventional PCs and storage devices, such as smart cards, communicate using the APDU (Application Protocol Data Unit) protocol through a reader. However, there is a disadvantage in that it is much slower in terms of communication speed. Therefore, the communication speed is complemented by using a universal serial bus (USB).

하지만, USB 형태의 저장장치를 호스트 PC에서 사용하기 위해서는 별도의 장치 드라이버를 호스트 설치해야 하여 불편한 단점이 있다. However, in order to use the USB type storage device in the host PC, a separate device driver must be installed in the host, which is inconvenient.

또한, 윈도우 운영체제는 보안적인 메커니즘으로 인해 UMS 장치를 직접 열기 위해서는 관리자(Administrator) 권한이 필요하지만, 단순히 UMS 장치의 파일에 접근 할 경우에는 관리자 권한이 아닌 경우에도 파일에 접근이 가능하여, 어떠한 권한 없이 이러한 파일에 대한 연산을 통해 저장장치와 통신을 수행할 수 있는 반면 사용자의 실수나 임의로 파일을 삭제할 수 있다는 문제점이 있다. In addition, the Windows operating system requires administrator privileges to directly open UMS devices due to its security mechanism.However, if a user simply accesses a file on a UMS device, the file can be accessed even if it is not an administrator. There is a problem in that communication with the storage device can be performed through operations on such a file without a user mistake or a file can be deleted arbitrarily.

본 발명은 상술한 종래의 문제점을 해결하기 위해 제안된 것으로서, PC에서 저장장치와 통신을 위해 저장장치를 UMS(USB Mass Storage) 형태로 이용하여 별도의 드라이버 설치 없이 통신이 가능하게 하고, 모든 사용자가 권한에 관계 없이 저장장치를 사용하도록 하는 UMS 기반 통신 방법, 호스트 단말, 이를 위한 프로그램을 기록한 기록매체를 제공하는데 그 목적이 있다.The present invention has been proposed to solve the above-mentioned conventional problems, by using a storage device in the form of UMS (USB Mass Storage) for communication with the storage device in a PC to enable communication without installing a separate driver, all users It is an object of the present invention to provide a UMS-based communication method, a host terminal, and a recording medium recording a program therefor, which allows a user to use a storage device regardless of authority.

상술한 목적을 달성하기 위한 본 발명의 UMS(USB Mass Storage) 기반 통신을 위한 호스트 단말은, 저장장치와 통신을 위한 인터페이스부, 저장장치와 APDU(Application Protocol Data Unit) 메시지 교환을 위한 API(Application Protocol Interface)를 제공하며, 호스트 프로그램이 API를 호출하면, 저장장치 내 파일에 대한 연산을 수행하기 위한 데이터를 호스트 프로그램으로부터 수신하여 전달하는 API 래퍼(wrapper) 및 API 래퍼로부터 데이터를 수신하면, 수신한 데이터를 이용하여 쓰레드(thread)를 생성하여 인터페이스를 통해 저장장치 내 파일에 대한 연산을 수행하고, 연산을 완료하면 수신한 데이터를 API 래퍼로 반환하며, 데이터 처리는 FIFO 큐(queue)를 이용하는 APDU 에이전트를 포함한다.The host terminal for UMS (USB Mass Storage) based communication of the present invention for achieving the above object, the interface unit for communication with the storage device, the API (Application) for exchanging storage device and APDU (Application Protocol Data Unit) messages Protocol Interface), and when a host program calls an API, it receives the data from an API wrapper and an API wrapper that receives and delivers data for performing an operation on a file in a storage device. A thread is created using one data to perform an operation on a file in a storage device through an interface, and when the operation is completed, the received data is returned to the API wrapper, and data processing uses a FIFO queue. Contains an APDU agent.

본 발명의 UMS 기반 통신을 위한 호스트 단말에 있어서, API 래퍼와 APDU 에이전트는 UDP 소켓(User Datagram Protocol Socket)을 이용하여 데이터를 송수신하는 것을 특징으로 한다.In the host terminal for UMS-based communication of the present invention, the API wrapper and the APDU agent transmit and receive data using a UDP socket (User Datagram Protocol Socket).

본 발명의 UMS 기반 통신을 위한 호스트 단말에 있어서, UDP 소켓은 비동기 방식인 것을 특징으로 한다.In the host terminal for the UMS-based communication of the present invention, the UDP socket is characterized in that the asynchronous method.

본 발명의 UMS기반 통신을 위한 호스트 단말에 있어서, API 래퍼는, 데이터를 암호화하여 전송하는 것을 특징으로 한다.In the host terminal for UMS-based communication of the present invention, the API wrapper is characterized by transmitting the data encrypted.

본 발명의 UMS 기반 통신을 위한 호스트 단말에 있어서, API 래퍼는, 데이터를 XOR 연산을 이용하여 암호화하는 것을 특징으로 한다. In the host terminal for UMS-based communication of the present invention, the API wrapper is characterized in that the data is encrypted using an XOR operation.

본 발명의 UMS 기반 통신을 위한 호스트 단말에 있어서, FIFO 큐는 원형 큐인 것을 특징으로 한다.In the host terminal for the UMS-based communication of the present invention, the FIFO queue is characterized in that the circular queue.

본 발명의 UMS 기반 통신을 위한 호스트 단말에 있어서, APDU 에이전트는, API 래퍼로부터 수신하는 FIFO 큐에 데이터를 삽입 또는 삭제하는 경우, 뮤텍스(Mutex) 알고리즘을 이용하는 것을 특징으로 한다.In the host terminal for the UMS-based communication of the present invention, the APDU agent, when inserting or deleting data in the FIFO queue received from the API wrapper, it characterized in that it uses a mutex (Mutex) algorithm.

본 발명의 UMS 기반 통신을 위한 호스트 단말에 있어서, APDU 에이전트는, 저장장치 내 파일을 생성하는 경우 숨긴 파일 형태로 생성하는 것을 특징으로 한다.In the host terminal for the UMS-based communication of the present invention, the APDU agent is characterized in that when generating a file in the storage device to create a hidden file form.

본 발명의 UMS 기반 통신을 위한 호스트 단말에 있어서, APDU 에이전트는, 저장장치 내 생성한 파일이 삭제된 경우, 생성한 파일을 재 생성한 후, 재 성성한 파일에 대해 읽기 또는 쓰기 연산을 수행하는 것을 특징으로 한다.In the host terminal for the UMS-based communication of the present invention, the APDU agent, if the file generated in the storage device is deleted, regenerates the generated file, and then performs a read or write operation on the regenerated file. It features.

본 발명의 UMS 기반 통신을 위한 호스트 단말에 있어서, 저장장치 내 파일은 분리 실행 대상 코드 블록을 포함하는 것을 특징으로 한다.In the host terminal for the UMS-based communication of the present invention, the file in the storage device is characterized in that it comprises a separate execution target code block.

본 발명의 UMS 기반 통신을 위한 호스트 단말에 있어서, 호스트 프로그램은 분리 실행 기반 컨텐츠인 것을 특징으로 한다.In the host terminal for the UMS-based communication of the present invention, the host program is characterized in that the separation execution based content.

본 발명의 UMS 기반 통신을 위한 호스트 단말에 있어서, 데이터는 패킹된 스택 정보 및 레지스터 정보를 포함하는 것을 특징으로 한다.In the host terminal for the UMS-based communication of the present invention, the data is characterized in that it comprises packed stack information and register information.

상술한 목적을 달성하기 위한 본 발명의 UMS 기반 통신 방법은, 호스트 단말이, 호스트 프로그램이 APDU 메시지 교환을 위한 API를 호출하면, 호스트 프로그램으로부터 저장장치 내 파일에 대한 연산을 수행하기 위한 데이터를 수신하는 수신단계, 호스트 단말이 수신한 데이터를 FIFO 큐에 삽입하는 삽입단계, 호스트 단말이 FIFO 큐에 삽입된 데이터를 읽어 저장장치 내 파일에 대한 연산을 수행하는 연산수행단계 및 호스트 단말이 저장장치 내 파일에 대한 연산을 완료하면, 삽입된 데이터를 추출하여 호스트 프로그램으로 반환하는 반환단계를 포함한다. In the UMS-based communication method of the present invention for achieving the above object, when the host terminal calls an API for exchanging APDU messages, the host terminal receives data for performing operations on files in the storage device from the host program A receiving step, an inserting step of inserting the data received by the host terminal into the FIFO queue, an operation performing step of reading the data inserted into the FIFO queue by the host terminal to perform an operation on a file in the storage device, and the host terminal in the storage device. Upon completion of the operation on the file, it includes a return step of extracting the inserted data and returning it to the host program.

본 발명의 UMS 기반 통신 방법에 있어서, 데이터는 암호화한 것임을 특징으로 한다.In the UMS-based communication method of the present invention, the data is characterized by being encrypted.

본 발명의 UMS 기반 통신 방법에 있어서, 데이터는 XOR 연산을 이용하여 암호화한 것임을 특징으로 한다.In the UMS-based communication method of the present invention, data is encrypted using an XOR operation.

본 발명의 UMS 기반 통신 방법에 있어서, FIFO 큐는 원형 큐인 것을 특징으로 한다.In the UMS-based communication method of the present invention, the FIFO queue is a circular queue.

본 발명의 UMS 기반 통신 방법에 있어서, FIFO 큐에 데이터를 삽입 또는 삭제하는 경우, 뮤텍스(Mutex) 알고리즘을 이용하는 것을 특징으로 한다.In the UMS-based communication method of the present invention, when inserting or deleting data in a FIFO queue, a mutex algorithm is used.

본 발명의 UMS 기반 통신 방법에 있어서, 연산수행단계는, 호스트 단말이 저장장치 내 파일을 생성하는 연산을 수행하는 경우 숨긴 파일 형태로 생성하는 것을 특징으로 한다.In the UMS-based communication method of the present invention, the operation performing step is characterized in that when the host terminal performs an operation for generating a file in the storage device, it generates a hidden file.

본 발명의 UMS 기반 통신 방법에 있어서, 연산수행단계는, 호스트 단말이 저장장치 내 생성한 파일이 삭제된 경우, 생성한 파일을 재 생성한 후, 재 성성한 파일에 대해 읽기 또는 쓰기 연산을 수행하는 것을 특징으로 한다.In the UMS-based communication method of the present invention, in the operation performing step, when the file generated in the storage device is deleted, the host terminal regenerates the generated file and then reads or writes the regenerated file. It is characterized by.

본 발명의 UMS 기반 통신 방법에 있어서, 저장장치 내 파일은 분리 실행 대상 코드 블록을 포함하는 것을 특징으로 한다.In the UMS-based communication method of the present invention, the file in the storage device is characterized in that it comprises a separate execution target code block.

본 발명의 UMS 기반 통신 방법에 있어서, 호스트 프로그램은 분리 실행 기반 컨텐츠인 것을 특징으로 한다.In the UMS-based communication method of the present invention, the host program is separated execution based content.

본 발명의 UMS 기반 통신 방법에 있어서, 데이터는 패킹된 스택 정보 및 레지스터 정보를 포함하는 것을 특징으로 한다.In the UMS-based communication method of the present invention, the data includes packed stack information and register information.

본 발명의 UMS 기반 통신 방법에 있어서, 분리 실행 대상 코드 블록은, 실행형 컨텐츠의 코드 영역에 존재하는 복수의 베이식 블록으로 이루어진 복수의 베이식 블록 그룹 중에서 실행형 컨텐츠의 중요 경로(critical path) 상에 있는 베이식 블록 그룹인 것을 특징으로 한다.In the UMS-based communication method of the present invention, the separated execution target code block is located on a critical path of the executable content among a plurality of basic block groups composed of a plurality of basic blocks existing in the code area of the executable content. It is characterized in that the basic block group.

본 발명의 UMS 기반 통신 방법에 있어서, 베이식 블록 그룹은, 시작점(entry point)을 통한 제어 신호의 진입 및 복수의 베이식 블록 간의 제어 신호의 이동은 허용하고, 시작점을 제외한 복수의 베이식 블록 내부로의 제어 신호의 진입이 없는 서로 관련된 복수의 베이식 블록의 모임인 것을 특징으로 한다.In the UMS-based communication method of the present invention, a basic block group allows entry of a control signal through an entry point and movement of a control signal between a plurality of basic blocks, and into a plurality of basic blocks except for a starting point. It is characterized in that the collection of a plurality of basic blocks associated with each other without the entry of the control signal.

본 발명의 UMS 기반 통신 방법에 있어서, 베이식 블록은, 단일 입력(single input) 및 단일 출력(single output)의 속성과, 외부에서 내부로의 제어 신호의 진입을 허용하지 않는 속성을 갖는 코드 블록인 것을 특징으로 한다. In the UMS-based communication method of the present invention, a basic block is a code block having a property of a single input and a single output and a property of not allowing entry of a control signal from the outside to the inside. It is characterized by.

본 발명은 또한, 전술된 UMS 기반 통신 방법을 구현하는 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체를 제공한다.The present invention also provides a computer readable recording medium having recorded thereon a program implementing the above-described UMS based communication method.

본 발명에 의하면, 저장장치를 UMS 형태로 이용함으로써, PC에서 별도의 드라이버 설치 없이 저장장치와 통신이 가능하다.According to the present invention, by using the storage device in the form of UMS, it is possible to communicate with the storage device without installing a separate driver in the PC.

또한, UMS를 통한 파일 연산을 이용함으로써, 기존의 통신 속도 문제를 개선할 수 있으며, 모든 사용자가 권한에 관계 없이 저장장치를 사용하도록 할 수 있는 이점이 있다.In addition, by using the file operation through the UMS, it is possible to improve the existing communication speed problem, there is an advantage that all users can use the storage device regardless of permissions.

또한, 기존의 PC와 저장장치 간 메시지 교환을 위한 API를 제공하기 위해 동일한 인터페이스를 제공함으로써, 기존의 프로그램과 호환성을 유지할 수 있다.In addition, by providing the same interface to provide an API for exchanging messages between the existing PC and the storage device, it is possible to maintain compatibility with existing programs.

도 1은 본 발명이 적용되는 디지털 저작권 관리 시스템의 구성도이다.
도 2는 본 발명이 적용되는 디지털 저작권 관리 시스템에서 실행형 컨텐츠의 데이터 구조를 보여주는 구성도이다.
도 3은 본 발명이 적용되는 디지털 저작권 관리 시스템에서 분리 실행 기반 컨텐츠의 구조를 나타내는 구성도이다.
도 4는 본 발명이 적용되는 디지털 저작권 관리 시스템에서 분리 실행 기반 컨텐츠 구성 모듈을 나타내는 구성도이다.
도 5는 본 발명이 적용되는 디지털 저작권 관리 시스템에서 실행형 컨텐츠에 삽입될 스터브 코드를 예시한 도면이다.
도 6은 본 발명이 적용되는 디지털 저작권 관리 시스템의 분리 실행 기반 컨텐츠에서 보조 실행 기능부의 구성 및 이를 통한 분리 실행 과정을 나타낸 도면이다.
도 7은 본 발명이 적용되는 디지털 저작권 관리 시스템에서 코드 복호화 기능부의 동작 흐름도이다.
도 8은 본 발명이 적용되는 디지털 저작권 관리 시스템의 저장 장치에서의 보조 실행 모듈의 구조를 나타낸 구성도이다.
도 9는 본 발명의 일 실시예에 따른 UMS 기반 통신을 위한 호스트 단말을 나타내는 구성도이다.
도 10은 본 발명의 일 실시예에 따른 UMS 기반 통신 방법을 나타내는 도면이다.
1 is a block diagram of a digital rights management system to which the present invention is applied.
2 is a block diagram showing a data structure of executable content in a digital rights management system to which the present invention is applied.
3 is a block diagram showing the structure of the separated execution based content in the digital rights management system to which the present invention is applied.
4 is a block diagram illustrating a separation execution based content composition module in a digital rights management system to which the present invention is applied.
5 is a diagram illustrating a stub code to be inserted into the executable content in the digital rights management system to which the present invention is applied.
FIG. 6 is a diagram illustrating a configuration of an auxiliary execution function unit in a separation execution based content of a digital rights management system to which the present invention is applied and a separation execution process through the same.
7 is an operation flowchart of a code decoding function unit in a digital rights management system to which the present invention is applied.
8 is a block diagram showing the structure of an auxiliary execution module in a storage device of a digital rights management system to which the present invention is applied.
9 is a block diagram showing a host terminal for UMS-based communication according to an embodiment of the present invention.
10 is a diagram showing a UMS-based communication method according to an embodiment of the present invention.

이하, 첨부된 도면을 참조하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있는 바람직한 실시예를 상세히 설명한다. 다만, 본 발명의 바람직한 실시예에 대한 동작 원리를 상세하게 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략한다. 또한, 도면 전체에 걸쳐 유사한 기능 및 작용을 하는 부분에 대해서는 동일한 도면 부호를 사용한다.Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings so that those skilled in the art may easily implement the present invention. However, in describing in detail the operating principle of the preferred embodiment of the present invention, if it is determined that the detailed description of the related known functions or configurations may unnecessarily obscure the subject matter of the present invention, the detailed description thereof will be omitted. In addition, the same reference numerals are used for parts having similar functions and functions throughout the drawings.

본 명세서에 있어서 어느 하나의 구성요소가 다른 구성요소로 데이터 또는 신호를 '전송'하는 경우에는, 직접 데이터 또는 신호를 전송할 수 있으며 적어도 하나의 또 다른 구성요소를 통하여 데이터 또는 신호를 전송할 수 있음을 의미한다.In the present specification, when one component 'transmits' data or a signal to another component, it may directly transmit data or a signal, and may transmit data or a signal through at least one other component. it means.

도 1은 본 발명이 적용되는 디지털 저작권 관리 시스템의 구성도이다. 1 is a block diagram of a digital rights management system to which the present invention is applied.

도 1을 참조하면, 본 발명의 적용되는 디지털 저작권 관리 시스템은 컨텐츠 제공 단말(10), 컨텐츠 등록 서버(30), DRM(Digital Rights Management) 서버(40), 호스트 단말(50) 및 호스트 단말(50)에 유무선 인터페이스를 매개로 연결된 저장장치(60)를 포함하여 구성된다. 본 발명의 UMS(USB Mass Storage) 기반 통신 방법은 호스트 단말(50)과 저장장치(60) 간의 통신에 적용된다.Referring to FIG. 1, the digital rights management system to which the present invention is applied includes a content providing terminal 10, a content registration server 30, a digital rights management server 40, a host terminal 50, and a host terminal ( 50) is configured to include a storage device 60 connected via a wired or wireless interface. The UMS (USB Mass Storage) based communication method of the present invention is applied to communication between the host terminal 50 and the storage device 60.

본 발명에 있어서, 실행형 컨텐츠(11)는 디지털 형태로 저장되고 유통되는 디지털 저작물로서, 실행되는 장치로 하여금 어떠한 기능을 할 수 있도록 복수의 명령어들을 포함하는 응용프로그램, 게임 프로그램, 각종 소프트웨어를 포함할 수 있다. In the present invention, the executable content 11 is a digital work that is stored and distributed in a digital form, and includes an application program, a game program, and a variety of software including a plurality of instructions to enable the executed device to perform any function. can do.

또한, '분리 실행'은 실행형 컨텐츠(11)가 두 개의 서로 다른 장치, 더 구체적으로는 호스트 단말(50)과 저장장치(60)의 연동을 통해 실행되는 것을 의미한다. 이러한 분리 실행을 구현하기 위해서, 호스트 단말(50)에는 코드 영역에서 선택된 코드 블록(이하 분리 실행 대상 코드 블록이라 함)이 제거된 분리 실행 기반 컨텐츠(37)가 저장되고, 저장장치(60)에는 실행형 컨텐츠(11)에서 제거되어 저장장치(60)에서 실행 가능하도록 변환한 분리 실행 대상 코드 블록(35)이 저장된 상태에서 호스트 단말(50)이 분리 실행 기반 컨텐츠(37)에서 제거된 부분(분리 실행 대상 코드 블록)에 대한 결과값을 저장장치(60)에 요청하여 반환 받는 형태로 이루어진다.In addition, "separate execution" means that the executable content 11 is executed through the interworking of two different devices, more specifically, the host terminal 50 and the storage device 60. In order to implement such separation execution, the host terminal 50 stores the separation execution base content 37 from which a selected code block (hereinafter referred to as a separation execution target code block) in the code area is removed, and the storage device 60 stores the separation execution base content 37. A portion of the host terminal 50 removed from the separated execution based content 37 in a state in which the separated execution target code block 35 removed from the executable content 11 and converted into executable in the storage device 60 is stored ( Request to the storage device 60 a result value for the separation execution target code block).

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

컨텐츠 제공 단말(10)은 컨텐츠 제공자가 운용하는 단말로서, 네트워크(70)를 통하여 컨텐츠 등록 서버(30)와 통신을 수행하고, 컨텐츠 제공자가 개발한 실행형 컨텐츠(11)를 저장하고 있으며, 컨텐츠 등록 서버(30)로 실행형 컨텐츠(11)를 전송한다.The content providing terminal 10 is a terminal operated by a content provider. The content providing terminal 10 communicates with the content registration server 30 through the network 70 and stores the executable content 11 developed by the content provider. The executable content 11 is transmitted to the registration server 30.

컨텐츠 제공 단말(10)은 컨텐츠 등록 서버(30)로부터 내려 받은 프로파일링 및 분석 툴(33)을 실행하여 등록할 실행형 컨텐츠(11))에 대해 동적 프로파일링(dynamic profiling) 및 정적 분석(static analysis)(이하, '프로파일링 및 분석'이라 함)을 통하여 분리 실행 될 실행형 컨텐츠(11)에서 프로파일 데이터(Profile Data)를 생성하고, 코드 블록 선택 규칙을 입력 받으며, 생성한 프로파일 데이터, 입력 받은 코드 블록 선택 규칙 및 분리 실행 될 실행형 컨텐츠(11)를 컨텐츠 등록 서버(30)로 전송한다. The content providing terminal 10 executes the profiling and analysis tool 33 downloaded from the content registration server 30 to perform dynamic profiling and static analysis on the executable content 11 to be registered. Profile data is generated from the executable content 11 to be separated and executed through analysis (hereinafter, referred to as 'profiling and analysis'), the code block selection rule is input, and the generated profile data and input are executed. The received code block selection rule and the executable content 11 to be separated are transmitted to the content registration server 30.

더 구체적으로, 프로파일링 및 분석 툴(33)은 사용자 우선 (User Preference) 정보를 읽어와 어떠한 부분을 중심으로 프로파일링할 지를 결정한 후, 해당하는 PIN 툴을 로드한다. 그 후, 대상 실행형 컨텐츠(11)를 메모리에 로드하고, PIN 툴을 삽입하여 실행시키고, 그 결과(프로파일 데이터)를 저장한다. More specifically, the profiling and analysis tool 33 reads user preference information, determines which part to profile, and loads the corresponding PIN tool. Thereafter, the target executable content 11 is loaded into the memory, the PIN tool is inserted and executed, and the result (profile data) is stored.

프로파일 데이터는, 필수적으로, 코드 블록 시작 주소, 코드 블록 종료 주소, 코드 블록 호출 회수(프로파일 중에 호출되는 횟수임), 코드 블록 크기, 및 플로팅 포인트 연산 유무를 포함한다. 이외에, 선택적으로, 코드 블록의 호스트 메모리 참조 회수, 코드 블록의 OS API를 호출하는 회수, 코드 블록의 실행 시간, 코드 블록에서 수행되는 전체 명령어(instruction) 개수, 코드 블록의 실행을 위해 전달되는 파라미터 개수 및 타입, 코드 블록의 실행 후에 반환되는 값의 종류가 포함될 수 있다.Profile data essentially includes a code block start address, a code block end address, a code block call count (which is the number of times called during a profile), a code block size, and the presence or absence of a floating point operation. In addition, optionally, the number of host memory references of a code block, the number of calls to an OS API of the code block, the execution time of the code block, the total number of instructions performed on the code block, the parameters passed for the execution of the code block. The number and type, and the type of the value returned after execution of the code block may be included.

코드 블록 선택 규칙은, 프로파일 데이터의 각 항목에 대해 부여되는 가중치를 설정하기 위한 것으로서, 가중치를 설정할 수 있는 사용자 우선 정보로는, 프로파일링에 의해 선택될 분리 실행 대상 코드 블록(35)에 대한 호출 빈도, 호출 위치, 호스트 메모리 참조 빈도, 및 OS API 참조 빈도 및 분리 실행 대상 코드 블록(35)이 저장될 저장장치(60)의 하드웨어 요소를 포함한다. The code block selection rule is for setting weights to be given for each item of profile data. The user priority information for which weights can be set is a call to the separated execution target code block 35 to be selected by profiling. Frequency, call location, host memory reference frequency, and OS API reference frequency, and the hardware element of storage 60 in which the separate execution target code block 35 is to be stored.

여기서, 호출 빈도는 실행형 컨텐츠(11)의 실행 중에서 분리 실행 대상 코드 블록(35)이 선정될 코드 블록의 호출 빈도 정도를 나타내는 것으로서, 보통 호출 빈도가 높을 수록 보안 효과를 높일 수 있는 반면에 저장 장치(60)의 부하가 증가하여 실행형 컨텐츠(11)의 전체 실행 속도를 저하시킬 수 있다. 따라서, 실행형 컨텐츠(11)의 특성에 맞추어 적절한 호출 빈도를 설정하는 것이 바람직하다. 호출 위치는 분리 실행 대상 코드 블록(35)의 선택에 있어서 실행 초기에 호출되는 코드 블록을 선택할 것인지, 특정 기능 설정 시에 호출되는 코드 블록을 선택할 것인지를 나타낸다. 호스트 메모리 참조 빈도는 분리 실행 대상 코드 블록(35)으로 선택될 코드 블록이 호스트 단말(50)의 메모리를 참조하는 횟수를 나타내며, OS API 참조 빈도는 코드 블록에서 호스트 단말(50)의 OS API 참조 빈도를 나타낸다. 일반적으로, 메모리 참조 빈도 및 OS API 참조 빈도가 높을수록 호스트 단말(50)에 대한 의존성이 높다는 것을 의미하며, 메모리 참조 빈도 및 OS API 참조 빈도가 높은 코드 블록을 분리 실행 대상 코드 블록(35)으로 선정할 경우 보안 효율이 높아지지만, 그 반대로, 실행 속도는 저하되기 때문에, 원하는 보안 레벨에 따라서 메모리 참조 빈도 및 OS API 참조 빈도를 적절하게 설정하여야 한다. 저장장치(60)의 하드웨어 요소는, 예를 들어, 분리 실행 대상 코드 블록(35)이 저장되고 실행될, 저장장치(60)의 DRAM 양이나 NAND 플래쉬 크기, CPU 속도 등을 포함한다.Here, the call frequency indicates the degree of the call frequency of the code block to which the separate execution target code block 35 is selected among the executions of the executable content 11. In general, the higher the call frequency, the higher the security effect. The load on the device 60 may increase to reduce the overall execution speed of the executable content 11. Therefore, it is desirable to set an appropriate call frequency in accordance with the characteristics of the executable content 11. The call position indicates whether to select a code block to be called at the beginning of execution or to select a code block to be called at the time of setting a specific function in the selection of the separate execution target code block 35. The host memory reference frequency indicates the number of times the code block to be selected as the separated execution target code block 35 refers to the memory of the host terminal 50, and the OS API reference frequency refers to the OS API reference of the host terminal 50 in the code block. Frequency. In general, the higher the memory reference frequency and the OS API reference frequency, the higher the dependency on the host terminal 50. The code block having the high memory reference frequency and the OS API reference frequency is referred to as the separated execution code block 35. When selected, the security efficiency increases, but on the contrary, the execution speed decreases. Therefore, the memory reference frequency and the OS API reference frequency should be appropriately set according to the desired security level. The hardware elements of storage 60 include, for example, the amount of DRAM, NAND flash size, CPU speed, etc. of storage 60 in which separate execution target code block 35 is stored and executed.

이상과 같은 코드 블록 선택 규칙에 따라서 프로파일 데이터의 각 항목에 가중치를 달리 부여함으로써, 추출되는 분리 실행 대상 코드 블록(35)이 달라지며, 그에 따라서 보안 레벨이 달라진다. By differently weighting each item of the profile data according to the above code block selection rule, the extracted execution target code block 35 is different, and thus the security level is changed.

한편, 코드 블록 선택 규칙은 실행형 컨텐츠(11)의 성격에 따라서 설정할 수 있다. 예를 들어, 실행형 컨텐츠(11)가 게임 프로그램인 경우 실행 속도가 중요하므로, 호스트 메모리 참조 빈도 및 OS API 참조 빈도를 최소로 낮추는 것이 바람직하며, 이 경우, 호스트 메모리 및 OS API를 최소로 참조하는 베이식 코드 블록을 분리 실행 대상 코드 블록(35)으로 선택함으로써, 실행형 컨텐츠(11)의 실행 속도 저하를 최소화시킬 수 있다. 또한, 분리 실행 기반 컨텐츠(37)의 판매에 있어서, 저장장치(60)의 가격을 최대한 낮추고 싶은 경우, 저장장치(60)의 하드웨어 요소에 대한 가중치를 낮게 지정하면 된다. 이에 의하면, 저장장치(60)의 가격은 낮출 수 있는 반면, 실행 속도가 다소 낮아질 수 있음을 감안하여야 한다.Meanwhile, the code block selection rule may be set according to the nature of the executable content 11. For example, if the executable content 11 is a game program, execution speed is important, so it is desirable to reduce the host memory reference frequency and the OS API reference frequency to a minimum, in which case, the host memory and the OS API are referred to as a minimum. By selecting the basic code block to be the separated execution target code block 35, the execution speed of the executable content 11 can be minimized. In addition, in the sale of the separated execution based content 37, if the price of the storage device 60 is to be lowered as much as possible, the weight of the hardware element of the storage device 60 may be specified as low. According to this, while the price of the storage device 60 can be lowered, it should be taken into account that the execution speed can be somewhat lowered.

상술한 코드 블록 선택 규칙은, 그 설정 가능한 항목을 더 다양화시킬 수 있음은 물론이다.Of course, the above-described code block selection rules can further diversify the settable items.

컨텐츠 등록 서버(30)는 컨텐츠 제공 단말(10)로부터 수신한 실행형 컨텐츠(11) 정보를 웹페이지를 통해 호스트 단말(50)로 제공하고, 분리 실행 기반 컨텐츠(37) 및 분리 실행 대상 코드 블록(35)을 생성하여 DRM서버(40)로 전송한다. 이때, 분리 실행 대상 코드 블록(35)은 애플릿(applet)과 같은 저장장치(60)용 프로그램에 포함되어 저장장치(60)로 제공될 수도 있다.The content registration server 30 provides the executable content 11 information received from the content providing terminal 10 to the host terminal 50 through a web page, and the separated execution based content 37 and the separated execution target code block. Create 35 and transmit it to the DRM server 40. In this case, the separated execution target code block 35 may be included in a program for the storage device 60 such as an applet and provided to the storage device 60.

한편, 실행형 컨텐츠(11)는 분리 실행 기반 컨텐츠(37)로 변환되며, 후술하는 DRM서버(40)는 분리 실행 기반 컨텐츠(37)를 암호화된 컨텐츠(41)로 패키징하여 호스트 단말(50)로 제공하므로, 사용자에게 제공되는 객체는 암호화된 컨텐츠(41)가 될 수 있으나, 이하 설명의 편의를 위해 사용자가 웹페이지를 통해 확인하고 구매 등을 결정하는 객체는 실행형 컨텐츠(11)라 한다.Meanwhile, the executable content 11 is converted into the separated execution based content 37, and the DRM server 40, which will be described later, packages the separated execution based content 37 into the encrypted content 41 and the host terminal 50. Since the object provided to the user may be the encrypted content 41, an object that the user checks through a web page and decides to purchase is referred to as the executable content 11 for convenience of description below. .

컨텐츠 등록 서버(30)는 분리 실행 기반 컨텐츠 구성 모듈(31)을 통해, 실행형 컨텐츠(11) 기반으로 분리 실행 기반 컨텐츠(37)와 분리 실행 대상 코드 블록(35)을 생성하며 상세한 과정은 후술한다. The content registration server 30 generates the separation execution base content 37 and the separation execution target code block 35 based on the execution content 11 through the separation execution base content configuration module 31, and a detailed process will be described later. do.

컨텐츠 등록 서버(30)는 사용자가 웹페이지를 통해 실행형 컨텐츠(11)를 구매할 수 있도록 실행형 컨텐츠(11) 리스트와 해당 실행형 컨텐츠(11)에 대한 상세 정보를 제공한다. The content registration server 30 provides a list of the executable content 11 and detailed information about the corresponding executable content 11 so that a user can purchase the executable content 11 through a web page.

구체적으로, 호스트 단말(50)로부터 웹페이지 상에 나타난 실행형 컨텐츠(11)의 다운로드를 요청신호를 수신하면, 컨텐츠 등록 서버(30)는 해당 실행형 컨텐츠(11)의 DD(Download Descriptor)정보를 호스트 단말(50)로 전송한다. Specifically, upon receiving a request signal for downloading the executable content 11 displayed on the web page from the host terminal 50, the content registration server 30 downloads DD (Download Descriptor) information of the corresponding executable content 11. To the host terminal 50.

DD정보는 실행형 컨텐츠(11) 또는 권리객체(43)에 대한 간략 정보 예컨대 파일명, 파일사이즈, 파일제공업체, 해당 실행형 컨텐츠(11) 또는 권리객체(43)의 URL정보 등을 말하며, 실행형 컨텐츠(11) 또는 권리객체(43)의 다운로드 이전에 수신하여 버퍼에 임시 저장되고, 해당 실행형 컨텐츠(11) 또는 권리객체(43) 다운로드 완료 시 자동으로 삭제된다. The DD information refers to brief information about the executable content 11 or the rights object 43 such as a file name, file size, file provider, URL information of the corresponding executable content 11 or the rights object 43, and the like. It is received before downloading the type content 11 or the rights object 43 and temporarily stored in a buffer, and is automatically deleted when the execution type content 11 or the rights object 43 is downloaded.

또한, 컨텐츠 등록 서버(30)는 호스트 단말(50)로부터 선택한 실행형 컨텐츠(11)에 대한 권리객체(43)의 구매, 재구매 요청신호를 수신하면, DRM서버(40)로 구매 또는 재구매 트리거(Trigger)를 요청하고, DRM서버(40)로부터 해당 권리객체(43)에 대한 트리거 및 DD정보를 수신하면 호스트 단말(50)로 전송한다. 또한, 컨텐츠 등록 서버(30)는 호스트 단말(50)로부터 선택한 실행형 컨텐츠(11)에 대한 권리객체(43)의 환불 또는 양도 요청신호를 수신하면, DRM서버(40)로 환불 또는 양도 트리거를 요청하고 DRM서버(40)로부터 해당 트리거를 수신하면 호스트 단말(50)로 전송한다.In addition, when the content registration server 30 receives a purchase and repurchase request signal of the rights object 43 for the selected executable content 11 from the host terminal 50, the content registration server 30 triggers a purchase or repurchase to the DRM server 40 ( Trigger and, upon receiving the trigger and DD information for the rights object 43 from the DRM server 40, transmits to the host terminal 50. In addition, when the content registration server 30 receives a refund or transfer request signal of the rights object 43 for the selected executable content 11 from the host terminal 50, the content registration server 30 triggers a refund or transfer trigger to the DRM server 40. When the request is received and the corresponding trigger is received from the DRM server 40, the host device 50 transmits the trigger.

트리거(Trigger)는 DRM서버(40)와 호스트 단말(50) 간의 권리객체(43)의 구매 또는 재구매, 환불 또는 양도, 저장장치(60)의 등록 등을 위한 프로토콜 수행을 시작 시키는 메시지이다. The trigger is a message for starting the protocol execution for the purchase or repurchase, refund or transfer of the rights object 43 between the DRM server 40 and the host terminal 50, and the registration of the storage device 60.

DRM서버(40)는 컨텐츠 등록 서버(30)로부터 수신한 분리 실행 기반 컨텐츠(37)를 패키징하며, 권리객체(43)를 생성, 관리, 발행하고 발행한 권리객체(43)에 대한 내역을 저장하는 서버이다. The DRM server 40 packages the separated execution based content 37 received from the content registration server 30, and stores the details of the rights object 43 that created, managed, issued and issued the rights object 43. Server.

여기서, 권리객체(43)는 사용자가 구매한 실행형 컨텐츠(11)에 대해 실행형 컨텐츠(11)와 사용자 사이 구매 관계 및 사용 권한을 명시하고 있다. Here, the rights object 43 specifies a purchase relation and usage rights between the executable content 11 and the user with respect to the executable content 11 purchased by the user.

구체적으로, DRM서버(40)는 CEK(Contents Encryption key)를 생성하고, 컨텐츠 등록 서버(30)로부터 수신한 분리 실행 기반 컨텐츠(37)를 OMA(Open Mobile Alliance), DMP(Digital Media Project), MPEG(Moving Picture Experts Group)-21, ISMA(Internet Streaming Media Alliance) 등 DRM 표준화 단체에서 제시된 기술규격에 따라 암호화된 컨텐츠(41)로 패키징한다. 이때, DRM서버(40)는 패키징 시 사용되는 CEK와 같이 암호화된 컨텐츠(41)를 복호화할 수 있는 복호화키를 권리객체(43)에 포함시켜 생성한다. 이때, 컨텐츠 등록 서버(30)로부터 수신한 분리 실행 대상 코드 블록(35)을 권리객체(43)에 포함시켜 생성할 수 있다. Specifically, the DRM server 40 generates a Contents Encryption Key (CEK), and separates execution based content 37 received from the content registration server 30 from an Open Mobile Alliance (OMA), a Digital Media Project (DMP), The package is packaged into encrypted content 41 according to technical standards set forth by DRM standardization organizations such as Moving Picture Experts Group (MPEG) -21 and Internet Streaming Media Alliance (ISMA). At this time, the DRM server 40 generates the decryption key included in the rights object 43 for decrypting the encrypted content 41, such as CEK used during packaging. In this case, the separation execution target code block 35 received from the content registration server 30 may be included in the rights object 43 and generated.

즉, 암호화된 컨텐츠(41)는 실행형 컨텐츠(11)에서 분리 실행 대상 코드 블록(35)을 스터브 코드로 대체한 분리 실행 기반 컨텐츠(37)를 패키징한 결과물이다. That is, the encrypted content 41 is a result of packaging the separated execution based content 37 in which the separated execution target code block 35 is replaced with the stub code in the executable content 11.

여기서, CEK를 생성하며 암호화된 컨텐츠(41)로 패키징할 때, AES(Advanced Encryption Standard), RSA(Rivest-Shamir-Adelman), ECC(Elliptic Curve Cryptosystem), 시드(SEED) 블록 암호 알고리즘, DES(Data Encryption Standard) 등 암호화 알고리즘이 사용될 수 있으나, 이에 한정되는 것은 아니다. Here, when generating a CEK and packaging it with encrypted content 41, Advanced Encryption Standard (AES), Rivet-Shamir-Adelman (RSA), Elliptic Curve Cryptosystem (ECC), SEED block encryption algorithm, and DES (DES) Encryption algorithms such as Data Encryption Standard) may be used, but are not limited thereto.

또한, DRM서버(40)는 컨텐츠 등록 서버(30)로부터 사용자가 구매, 재구매 하고자 하는 권리객체(43)에 대한 구매 또는 트리거를 요청 받으면, 해당 권리객체(43)에 대한 트리거 및 DD정보를 생성하여 컨텐츠 등록 서버(30)로 전송하고, 컨텐츠 등록 서버(30)로부터 사용자가 환불 또는 양도 하고자 하는 권리객체(43)에 대한 환불 또는 양도 트리거를 요청 받으면, 해당 권리객체(43)에 대한 트리거를 생성하여 컨텐츠 등록 서버(30)로 전송한다.In addition, the DRM server 40 generates a trigger and DD information for the rights object 43 when the user requests a purchase or trigger for the rights object 43 to be purchased or repurchased from the content registration server 30. When a request is made to the content registration server 30 and a refund or transfer trigger for the rights object 43 to be refunded or transferred from the content registration server 30 is requested, the trigger for the rights object 43 is triggered. It generates and transmits to the content registration server 30.

이어, 호스트 단말(50)로부터 컨텐츠 다운로드를 요청 받으면 해당 암호화된 컨텐츠(41)를 전송하고, 권리객체(43)의 구매 또는 재구매 요청을 받으면 해당 권리객체(43)를 전송하며, 권리객체(43)의 환불 또는 양도 요청을 받으면 저장장치(60)에 저장된 권리객체(43)의 삭제를 요청한다. Subsequently, when the content download request is received from the host terminal 50, the corresponding encrypted content 41 is transmitted. When the request for purchase or repurchase of the rights object 43 is received, the rights object 43 is transmitted, and the rights object 43 is transmitted. When request for a refund or transfer of) is requested to delete the rights object 43 stored in the storage device (60).

호스트 단말(50)은 실행형 컨텐츠(11)의 실행이 가능한 독립된 CPU(Central Processing Unit)를 가진 컴퓨팅 장치, 예컨대 PC, 노트북, 워크스테이션, 키오스크(Kiosk), ATM(Automated Teller Machine), PDA(Personal Digital Assistants) 등을 통칭하며, 다수의 사용자들에 의해 접근이 자유로운 공용 컴퓨터를 포함한다. 호스트 단말(50)은 네트워크(70)를 통하여 컨텐츠 등록 서버(30) 및 DRM서버(40)와 통신을 수행하고, 유무선 인터페이스를 매개로 연결된 저장장치(60)와 통신을 수행한다. The host terminal 50 may be a computing device having an independent central processing unit (CPU) capable of executing the executable content 11, such as a PC, a laptop, a workstation, a kiosk, an automated teller machine, an PDA, and a PDA. Personal Digital Assistants) and the like, and include a public computer that is accessible by a large number of users. The host terminal 50 communicates with the content registration server 30 and the DRM server 40 through the network 70, and communicates with the storage device 60 connected via a wired or wireless interface.

여기서 유무선 인터페이스는 USB, USB2, Serial/Parallel Port, Ethernet, TCP/IP, 통신 케이블 등을 이용한 유선 통신 방식과 블루투스(Bluetooth), 지그비(zigbee), 루비(Rubee), 적외선데이터통신(IrDA; Infrared Data Association), 초광대역방식(UWB; Ultra Wide Broadband), NFC(Near Field Communication), 와이브로(Wibro) 등을 이용한 근거리 무선통신 방식이 사용될 수 있다.Here, the wired / wireless interface is a wired communication method using USB, USB2, Serial / Parallel Port, Ethernet, TCP / IP, communication cable, Bluetooth, Zigbee, Rubee, Infrared; A short range wireless communication method using Data Association, Ultra Wide Broadband (UWB), Near Field Communication (NFC), Wibro, or the like may be used.

구체적으로, 호스트 단말(50)은 컨텐츠 등록 서버(30)가 제공하는 웹페이지에 접속하여, 웹페이지 상에 나타난 실행형 컨텐츠(11)를 선택하고 컨텐츠 등록 서버(30)로 다운로드를 요청한다. 이어, 컨텐츠 등록 서버(30)로부터 해당 실행형 컨텐츠(11)의 DD정보를 수신하면, 이를 이용하여 DRM서버(40)에 접속하여 해당 실행형 컨텐츠(11)에 대한 암호화된 컨텐츠(41)를 수신한다.Specifically, the host terminal 50 accesses a web page provided by the content registration server 30, selects the executable content 11 displayed on the web page, and requests a download from the content registration server 30. Subsequently, when the DD information of the executable content 11 is received from the content registration server 30, the encrypted content 41 for the executable content 11 is obtained by accessing the DRM server 40 using the DD information. Receive.

또한, 사용자가 권리객체(43)를 구매, 재구매 하고자 할 때, 호스트 단말(50)은 컨텐츠 등록 서버(30)로 실행형 컨텐츠(11)에 대한 권리객체(43)의 구매 또는 재구매 요청신호를 전송한다. 이어서, 컨텐츠 등록 서버(30)로부터 해당 권리객체(43)에 대한 트리거(Trigger) 및 DD정보를 수신하면, 이를 이용하여 DRM서버(40)에 접속하여 해당 권리객체(43)를 요청한다. 이후, 수신한 권리객체(43)를 유무선 인터페이스를 매개로 연결된 저장장치(60)로 전달한다. 덧붙여, 사용자가 권리객체(43)를 구매, 재구매 하고자 할 때, 호스트 단말(50)은 컨텐츠 등록 서버(30)로 권리객체(43)에 대한 환불 또는 양도 요청신호를 전송한다. 이어서, 컨텐츠 등록 서버(30)로부터 해당 권리객체(43)에 대한 트리거(Trigger)를 수신하면, 이를 이용하여 DRM서버(40)에 접속하여 환불 또는 양도를 요청한다. In addition, when the user wants to purchase and repurchase the rights object 43, the host terminal 50 transmits a request for purchase or repurchase of the rights object 43 to the executable content 11 to the content registration server 30. send. Subsequently, when the trigger and DD information for the rights object 43 are received from the content registration server 30, the rights object 43 is requested by accessing the DRM server 40 using the trigger. Thereafter, the received right object 43 is transmitted to the storage device 60 connected through the wired / wireless interface. In addition, when the user wants to purchase and repurchase the rights object 43, the host terminal 50 transmits a refund or transfer request signal for the rights object 43 to the content registration server 30. Subsequently, when a trigger for the rights object 43 is received from the content registration server 30, the trigger is connected to the DRM server 40 to request a refund or transfer.

예를 들어, 호스트 단말(50)의 사용자는 사용하고자 하는 실행형 컨텐츠(11)에 대한 권리객체(43)를 이미 보유하고 있어 해당 실행형 컨텐츠(11)에 대한 암호화된 컨텐츠(41)만을 필요로 할 수 있으며, 처음 실행형 컨텐츠(11)를 구매하는 경우나 권리객체(43)가 만료되어 재구매하는 경우와 같이 해당 실행형 컨텐츠(11)에 대한 권리객체(43)만을 필요로 할 수 있고, 또한 암호화된 컨텐츠(41) 및 권리객체(43) 모두를 필요로 할 수 있다.For example, the user of the host terminal 50 already has the rights object 43 for the executable content 11 to be used, so only the encrypted content 41 for the executable content 11 is needed. It may be necessary, such as when purchasing the first executable content (11) or when the right object 43 expires and repurchases, only the rights object 43 for the executable content (11) may be needed. It may also require both encrypted content 41 and rights object 43.

또한, 호스트 단말(50)은 암호화된 컨텐츠(41) 실행을 시작하면, 저장장치(60)에 권리객체(43)의 저장 여부를 확인한다. 저장장치(60)에 권리객체(43)가 저장되어 있는 경우, 저장장치(60)로부터 권리객체(43)에 포함된 복호화키를 요청하여 암호화된 컨텐츠(41)를 복호화하게 된다. 반면, 저장장치(60)에 권리객체(43)가 저장되어 있지 않은 경우 컨텐츠 등록 서버(30)로 구매 또는 재구매 요청신호를 전송할 수 있다. 또한, 저장장치(60)에 분리 실행 대상 코드 블록(35)이 저장되어 있는 경우, 호스트 단말(50)은 복호화키를 이용하여 암호화된 컨텐츠(41)를 분리 실행 기반 컨텐츠(37)로 복호화한 후, 유무선 인터페이스를 통해 연결된 저장 장치(60)와 연동하여 암호화된 컨텐츠(41)에 대한 분리 실행을 수행할 수 있다. In addition, when the host terminal 50 starts to execute the encrypted content 41, the host terminal 50 checks whether the right object 43 is stored in the storage device 60. When the rights object 43 is stored in the storage device 60, the decryption key included in the rights object 43 is requested from the storage device 60 to decrypt the encrypted content 41. On the other hand, if the rights object 43 is not stored in the storage device 60, the content registration server 30 may transmit a purchase or repurchase request signal. In addition, when the separation execution target code block 35 is stored in the storage device 60, the host terminal 50 decrypts the encrypted content 41 using the decryption key as the separation execution based content 37. Thereafter, in association with the storage device 60 connected through the wired / wireless interface, separation of the encrypted content 41 may be performed.

저장장치(60)는 프로세서를 내장하고 있는 각종 휴대식 장치, 예컨대 USB 메모리, 플래시 메모리 카드, 이에 상응하는 각종 이동식, 휴대식 저장매체(예컨대, SD(Secure Digital) 메모리 카드, microSD 메모리 카드, ISO 7816 표준의 휴대형 저장장치 등)를 통칭한다. 저장장치(60)는 유무선 인터페이스를 매개로 호스트 단말(50)과 연결되며, 호스트 단말(50)에 설치된 암호화된 컨텐츠(41)에 대한 권리객체(43)를 저장한다. The storage device 60 may be any of a variety of portable devices incorporating a processor, such as a USB memory, a flash memory card, and various portable and portable storage media (e.g., a Secure Digital (SD) memory card, a microSD memory card, an ISO 7816 standard). Portable storage devices). The storage device 60 is connected to the host terminal 50 through a wired or wireless interface, and stores the rights object 43 for the encrypted content 41 installed in the host terminal 50.

상술한 바와 같이, 권리객체(43)에는 암호화된 컨텐츠(41)를 복호화 할 수 있는 복호화키를 포함하며, 이때 분리 실행 기반 컨텐츠(37)에 대한 분리 실행 대상 코드 블록(35)을 포함할 수 있다. 이때, 저장장치(60)는 호스트 단말(50)의 요청에 따라 분리 실행 대상 코드 블록(35)에 대한 연산을 수행하여 결과값을 호스트 단말(50)로 반환한다.As described above, the rights object 43 may include a decryption key for decrypting the encrypted content 41, and may include a separate execution target code block 35 for the separated execution based content 37. have. At this time, the storage device 60 performs an operation on the separation execution target code block 35 at the request of the host terminal 50 and returns a result value to the host terminal 50.

상술한 분리 실행 기반 컨텐츠(37)에 대한 기본 개념을 도 2 및 도 3을 참조하여 설명한다.The basic concept of the above-described separation execution based content 37 will be described with reference to FIGS. 2 and 3.

도 2는 본 발명이 적용되는 디지털 저작권 관리 시스템에서 실행형 컨텐츠의 데이터 구조를 보여주는 구성도이다. 2 is a block diagram showing a data structure of executable content in a digital rights management system to which the present invention is applied.

도 2을 참조하면, 본 발명이 적용되는 실행형 컨텐츠(11)는 복수 개의 파일, 예컨대 운영체제에서 제공하는 API(application program interface), 개발사에서 제공하는 API 또는 DLL(dynamic linking library)과 같은 파일을 포함한다. 이와 같은 복수의 파일을 포함하는 실행형 컨텐츠(11)는 코드 영역(21)과 데이터 영역(23)으로 나눌 수 있으며, 실제 실행형 컨텐츠(11)는 코드 영역(21)과 데이터 영역(23)이 서로 섞여 있다. 코드 영역(21)은 복수의 베이식 블록(25; basic block)을 포함하며, 분리 실행 대상 코드 블록(35)의 추출을 위하여 선정되는 복수의 베이식 블록 그룹(27)을 포함한다.Referring to FIG. 2, the executable content 11 to which the present invention is applied may include a plurality of files, for example, a file such as an API provided by an operating system, an API provided by a developer, or a dynamic linking library (DLL). Include. The executable content 11 including the plurality of files may be divided into a code region 21 and a data region 23, and the actual executable content 11 may include a code region 21 and a data region 23. Are mixed with each other. The code area 21 includes a plurality of basic blocks 25, and includes a plurality of basic block groups 27 selected for extraction of the separated execution target code block 35.

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

도 3은 본 발명이 적용되는 디지털 저작권 관리 시스템에서 분리 실행 기반 컨텐츠의 구조를 나타내는 구성도이다. 3 is a block diagram showing the structure of the separated execution based content in the digital rights management system to which the present invention is applied.

도 1 및 도 3을 참조하면, 본 발명이 적용되는 분리 실행 기반 컨텐츠(37)는 하나 이상의 분리 실행 대상 코드 블록(35)을 대신하여 스터브 코드(26; stub code)가 삽입된 코드 영역(21a)과, 데이터 영역(23)을 포함한다. 이때 스터브 코드(26)는 분리 실행을 위해 추출된 분리 실행 대상 코드 블록(35)을 대신하여 삽입된 코드로서, 분리 실행 기반 컨텐츠(37)와 분리 실행 대상 코드 블록(35)을 연결한다. 구체적으로 스터브 코드(26)는 실행형 컨텐츠(11)에 대한 분리 실행을 수행할 때, 분리 실행 대상 코드 블록(37)을 호출하고, 분리 실행 대상 코드 블록(37)에 대한 연산을 수행하여 산출된 결과값을 반환 받는다. 1 and 3, the detached execution based content 37 to which the present invention is applied includes a code region 21a in which stub codes are inserted in place of one or more detached execution target code blocks 35. ) And a data area 23. In this case, the stub code 26 is inserted in place of the separated execution target code block 35 extracted for the separation execution and connects the separation execution based content 37 and the separation execution target code block 35. Specifically, when the stub code 26 performs a separate execution on the executable content 11, the stub code 26 calls the separate execution target code block 37 and calculates by performing an operation on the separated execution target code block 37. Return the result.

분리 실행 대상 코드 블록(35)은 실행형 컨텐츠(11)에 대한 프로파일링 및 분석을 통하여 실행형 컨텐츠(11)의 코드 영역(21)에서 추출된 복수의 베이식 블록 그룹(27)을 포함한다. 바람직하게, 분리 실행 대상 코드 블록(35)은 분리 실행 대상 코드 블록(35)의 시작점(entry point)을 통한 제어 신호의 진입 및 베이식 블록(25) 간의 제어 신호의 이동은 허용하지만, 분리 실행 대상 코드 블록(35)의 시작점을 제외한 베이식 블록(25)으로의 제어 신호의 진입이 없는 서로 관련된 복수의 베이식 블록(25)을 포함하는 베이식 블록 그룹(27)이다. The separated execution target code block 35 includes a plurality of basic block groups 27 extracted from the code area 21 of the executable content 11 through profiling and analysis of the executable content 11. Preferably, the separate execution target code block 35 allows the entry of the control signal through the entry point of the separation execution target code block 35 and the movement of the control signal between the basic block 25, but the separation execution target. The basic block group 27 includes a plurality of basic blocks 25 associated with each other without entry of a control signal to the basic block 25 except for the start point of the code block 35.

이와 달리 시작점을 제외한 베이식 블록(25)으로의 제어 신호의 진입이 있는 베이식 블록 그룹(27)을 분리 실행 대상 코드 블록(35)으로 선정할 경우, 해당 분리 실행 대상 코드 블록(35)을 추출한 후 삽입되는 스터브 코드(26)에 시작 부분이 아닌 중간으로 제어 신호가 진입할 수 있으며, 이 경우 스터브 코드(26)는 해당 제어 신호에 대한 처리를 수행하지 못하여 결국 실행형 컨텐츠(11)의 실행이 중지되거나 에러가 발생될 수 있다. On the contrary, when the basic block group 27 in which the control signal enters the basic block 25 except for the starting point is selected as the separate execution target code block 35, the corresponding separation execution code block 35 is extracted. The control signal may enter the middle of the inserted stub code 26, not at the beginning. In this case, the stub code 26 may not process the control signal, and thus execution of the executable content 11 may not be performed. It may be stopped or an error may occur.

상술한 분리 실행 대상 코드 블록은 다음과 같이 추출될 수 있다.The above-described separated execution target code block may be extracted as follows.

먼저, 분리 실행할 실행형 컨텐츠(11)의 코드 영역(21)에 대한 동적 프로파일링 및 정적 분석을 통하여 복수의 베이식 블록 그룹(27)을 선정한다. 복수의 베이식 블록 그룹(27)의 선정은, 분리 실행할 실행형 컨텐츠(11)의 실행을 시작하여, 런-타임 동안 코드 영역(21)에 대한 기초 정보를 수집하고, 수집한 기초 정보를 이용하여 분석 범위를 확장한 동적 프로파일링을 통해 코드 영역(21)에 대한 정적 분석을 수행함에 의해 이루어진다. 기초 정보는, 브랜치 어드레스, 점프 어드레스, 콜 어드레스 및 RET의 간접 주소 중에 적어도 하나의 간접 주소이다. 이러한 기초 정보 중에서 실행형 컨텐츠(11)의 공개된 API와 관련된 기초 정보를 제거하고, 공개된 API와 관련된 기초 정보가 제거된 기초 정보를 기반으로 실행형 컨텐츠(11)의 코드 영역(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 11 to be separated. The selection of the plurality of basic block groups 27 starts execution of the executable content 11 to be separated, collects basic information about the code area 21 during run-time, and uses the collected basic information. This is accomplished by performing a static analysis of the code region 21 through dynamic profiling that extends the scope of analysis. The basic information is at least one indirect address among a branch address, a jump address, a call address, and an indirect address of the RET. From the basic information, the basic information related to the published API of the executable content 11 is removed, and based on the basic information from which the basic information related to the published API is removed, the code region 21 of the executable content 11 is removed. By performing a static analysis of the analysis, the scope of analysis can be extended. By substituting indirect addresses from among the collected basic information on the control flow, more basic block groups 27 can be selected as compared to performing dynamic profiling or static analysis by extending the analysis range alone.

더하여, 선정된 복수의 베이식 블록 그룹(27) 중에서, 베이식 블록 그룹(27)의 내부로 진입하는 제어 신호가 발생하면, 제어 신호의 명령어 주소를 기준으로 해당 베이식 블록 그룹(27)을 분할하여 재정의한다. 이때 재정의 대상이 되는 베이식 블록 그룹(27)은 제어 신호의 명령어 주소를 기준으로 이전의 제1 베이식 블록 그룹과, 제어 신호의 명령어 주소를 포함하는 이후의 제2 베이식 블록 그룹으로 재정의한다.In addition, when a control signal entering the basic block group 27 is generated among the plurality of selected basic block groups 27, the basic block group 27 is divided and redefined based on the instruction address of the control signal. do. At this time, the basic block group 27 to be redefined is redefined as a first basic block group before and a second basic block group after 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 properties of a single input and a single output and an attribute which does not allow entry from outside to inside is finally obtained. define.

이어서 복수의 베이식 블록 그룹(27) 중에서 분리 실행 대상 코드 블록(35)을 선정하여, 분리 실행 대상 코드 블록(35)을 코드 영역(21)에서 분리하고, 분리 실행 대상 코드 블록(35) 대신에 스터브 코드(26)를 삽입한다. Subsequently, the separation execution target code block 35 is selected from the plurality of basic block groups 27, and the separation execution target code block 35 is separated from the code area 21, instead of the separation execution target code block 35. Insert the stub cord 26.

이때 분리 실행 대상 코드 블록(35)은 복수의 베이식 블록 그룹(27) 중에서 실행형 컨텐츠(11)의 중요 경로(Critical path) 상에 있는 베이식 블록 그룹(27)을 선택하는 것이 바람직하다. 또한, 복수의 베이식 블록 그룹(27) 중에서 콜 횟수, 크기 및 실행 시간을 함께 고려하여 분리 실행 대상 코드 블록(35)을 선출할 수 있다. 예컨대 콜 횟수가 많고, 크기가 작고, 실행 시간이 짧은 베이식 블록 그룹(27)을 분리 실행 대상 코드 블록(35)으로 선출한다.In this case, the separate execution target code block 35 may select a basic block group 27 on a critical path of the executable content 11 among the plurality of basic block groups 27. In addition, the separate execution target code block 35 may be selected from the plurality of basic block groups 27 in consideration of the number of calls, the size, and the execution time. For example, a basic block group 27 having a large number of calls, a small size, and a short execution time is selected as the separate execution target code block 35.

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

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

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

도 4는 본 발명이 적용되는 디지털 저작권 관리 시스템에서 분리 실행 기반 컨텐츠 구성 모듈을 나타내는 블록 구성도이다. 도 5는 본 발명이 적용되는 디지털 저작권 관리 시스템에서 실행형 컨텐츠에 삽입될 스터브 코드를 예시한 도면이다. 4 is a block diagram illustrating a separation execution based content composition module in a digital rights management system to which the present invention is applied. 5 is a diagram illustrating a stub code to be inserted into the executable content in the digital rights management system to which the present invention is applied.

이하에서 설명할 분리 실행 기반 컨텐츠 구성 모듈(31)는, 도 1에 보인 DRM 시스템에 있어서, 호스트 단말(50)과 저장 장치(50)에 각각 저장될 분리 실행 기반 컨텐츠(37)와 분리 실행 대상 코드 블록(35)를 생성하기 위한 모듈이다. In the DRM system illustrated in FIG. 1, the separation execution based content configuration module 31 to be described below includes a separation execution based content 37 and a separation execution target to be stored in the host terminal 50 and the storage device 50, respectively. The module for generating the code block 35.

도 1, 도 4 및 도 5를 참조하면, 분리 실행 기반 컨텐츠 구성 모듈(31)은, 모듈 제어부(311)와, 코드 분석부(313)와, 코드 조작부(315)와, 코드 변환부(317) 및 코드 암호화부(319)를 포함한다. 1, 4, and 5, the separation execution based content composition module 31 includes a module control unit 311, a code analysis unit 313, a code operation unit 315, and a code conversion unit 317. And a code encryption unit 319.

모듈 제어부(311)는 분리 실행 기반 컨텐츠(37)의 생성을 위한 전체적인 과정을 제어한다. 즉, 입력된 분리 실행될 실행형 컨텐츠(11)에서 분리 실행 대상 코드 블록(35)을 선택하여, 선택한 분리 실행 대상 코드 블록(35)을 실행형 컨텐츠(11)에서 분리하고, 분리 실행 대상 코드 블록(35)의 분리 실행이 가능하도록 실행형 컨텐츠(11)를 변환하며, 분리된 분리 실행 대상 코드 블록(35)을 저장장치(60)에서 처리 가능한 형태로 변환하고, 실행형 컨텐츠(11)의 코드 영역에서 초기 코드 블록을 추출해 초기 코드 블록을 암호화하여 실행형 컨텐츠(11)의 실행시 암호화된 초기 코드 블록을 복호화하여 실행하도록 코드 분석부(313)와 코드 조작부(315)와 코드 변환부(317) 및 코드 암호화부(319)를 제어한다.The module controller 311 controls the overall process for generating the separated execution based content 37. That is, the separated execution target code block 35 is selected from the inputted executable content 11 to be separated, and the selected separated execution target code block 35 is separated from the executable content 11, and the separated execution target code block is executed. Converts the executable content 11 to enable separate execution of the 35, converts the separated executable execution code block 35 into a form that can be processed in the storage device 60, The code analyzing unit 313, the code manipulating unit 315, and the code converting unit extract the initial code block from the code area and encrypt the initial code block to decrypt and execute the encrypted initial code block when executing the executable content 11. 317 and the code encryption unit 319 is controlled.

코드 분석부(313)는, 실행형 컨텐츠(11)의 코드 영역을 분석하여, 코드 영역으로부터 하나 이상의 분리 실행 대상 코드 블록(35)을 선택한다. 더 구체적으로, 코드 분석부(313)는 컨텐츠 제공 단말(10)로부터 수신한 분리 실행될 컨텐츠, 컨텐츠에 대한 프로파일 데이터(Profile Data) 및 코드 블록 선택 규칙을 입력 받아, 프로파일 데이터 및 코드 블록 선택 규칙을 기반으로 컨텐츠의 코드 영역에서 분리 실행 대상 코드 블록(35)을 결정한다.The code analyzer 313 analyzes a code region of the executable content 11 and selects one or more separated execution target code blocks 35 from the code region. More specifically, the code analyzing unit 313 receives the content to be separated, the profile data for the content, and the code block selection rule received from the content providing terminal 10 to receive the profile data and the code block selection rule. Based on the determination, the code block 35 to be separated is executed in the code area of the content.

구체적으로, 코드 분석부는 프로파일 데이터 및 분리 실행 대상 코드 블록(35)의 선택 규칙을 내부 데이터 포맷으로 변환한다. 예를 들어, 프로파일 데이터 및 규칙은 XML 형태로 구현될 수 있는데, 이 경우, 프로파일 데이터 및 분리 실행 대상 코드 블록의 선택 규칙은 XML 형태에서 내부 데이터 포맷으로 변환하는 것으로서, XML 파서가 된다. 이어, 프로파일 데이터 및 코드 블록 선택 규칙을 로드하며, 로드된 프로파일 데이터 및 코드 블록 선택 규칙에 근거하여, 실행형 컨텐츠(11)의 코드 영역에서 하나 이상의 분리 실행 대상 코드 블록(35)을 선택한다.Specifically, the code analyzer converts the selection rule of the profile data and the separation target code block 35 into an internal data format. For example, the profile data and rules may be implemented in XML form, in which case the selection rule of the profile data and the separated execution code block is an XML parser that converts the XML data into an internal data format. Then, the profile data and code block selection rules are loaded, and one or more separate execution target code blocks 35 are selected in the code area of the executable content 11 based on the loaded profile data and code block selection rules.

또한, 코드 분석부(313)는 분리 실행 대상 코드 블록(35)의 선택 시 기준이 될 코드 블록 선택 규칙을 갱신한다. 코드 블록 선택 규칙은 프로파일 데이터의 정보 중에서 어느 항목에 가장 큰 비중을 두어 분리 실행 대상 코드 블록을 선택할 것인지를 의미하는 것으로서, 앞서 설명한 바와 같이, 프로파일 데이터의 각 항목 별 가중치로 나타낼 수 있다. 그런데, 이러한 코드 블록 선택 규칙은, 컨텐츠의 종류, 크기 등에 따라서 변경될 가능성이 크기 때문에 선택된 분리 실행 대상 코드 블록(35)에 대한 검증 결과를 피드백 받아 분리 실행 대상 코드 블록의 선택 규칙을 지속적으로 갱신한다. 예를 들어, 선택된 분리 실행 대상 코드 블록(35)에 대한 테스트를 진행하여 실행 속도 등의 이슈가 발생하면, 이를 기준으로 분리 실행 대상 코드 블록(35)의 선택 규칙의 세부적인 가중치를 변경한다. In addition, the code analyzing unit 313 updates a code block selection rule, which becomes a reference when the separation target code block 35 is selected. The code block selection rule means to select a code block to be separated with the largest weight among the information of the profile data. As described above, the code block selection rule may be represented by a weight for each item of the profile data. However, since the code block selection rule is highly likely to change according to the type, size, etc. of the content, the rule for selecting the code block to be separated is continuously updated by receiving a verification result of the selected code to be separated. do. For example, if an issue such as execution speed occurs by performing a test on the selected separated execution target code block 35, the detailed weight of the selection rule of the separated execution target code block 35 is changed based on this.

코드 조작부(315)는, 코드 분석부(313)에서 선택된 분리 실행 대상 코드 블록(35)과 분리 실행 대상 코드 블록이 분리된 분리 실행 기반 컨텐츠(37)를 연결하도록 실행형 컨텐츠(11)를 변환한다. The code manipulation unit 315 converts the executable content 11 to connect the separated execution target code block 35 selected by the code analysis unit 313 and the separated execution based content 37 in which the separated execution target code block is separated. do.

더 구체적으로 코드 조작부(315)는, 분리된 분리 실행 대상 코드 블록(35)과의 상호 연동을 위한 보조 실행 기능부를 생성하고, 분리 실행 대상 코드 블록(35)이 맨 앞에서 보조 실행 기능부로 점프한 후 보조 실행 기능부의 실행이 완료되면 분리 실행 대상 코드 블록(35) 다음으로 실행되어야 할 위치로 점프하는 스터브 코드를 생성하여 분리 실행 대상 코드 블록(35)의 위치에 삽입한다. More specifically, the code operation unit 315 generates an auxiliary execution function unit for interworking with the separated separated execution target code block 35, and the separated execution target code block 35 jumps to the auxiliary execution function unit from the front. After the execution of the auxiliary execution function unit is completed, the stub code that jumps to the position to be executed next to the separation execution target code block 35 is generated and inserted into the position of the separation execution target code block 35.

여기서, 보조 실행 기능부는 스터브 코드로부터 전달되는 파라미터, 즉, 스택과 레지스터의 정보를 패킹하여 분리 실행 대상 코드 블록(35)을 호출하고, 호출이 종료되면 분리 실행 대상 코드 블록(35)의 결과값으로 스택과 레지스터의 정보를 리스토어한다.Here, the auxiliary execution function calls the separate execution target code block 35 by packing the parameters passed from the stub code, that is, the information of the stack and the register, and when the call ends, the result value of the separate execution target code block 35. Restore the stack and register information.

예를 들어, 저장 장치(60)에 저장되는 분리 실행 대상 코드 블록(35)은 저장 장치(60)의 플랫폼에 기반한 Java 바이트코드, 더 구체적으로는 Java 애플릿 및 ARM 인스트럭션을 내장한 Java 애플릿으로 구현되는데, 이때 보조 실행 기능부는 상술한 Java 애플릿을 실행하는 Native launcher로 구현된다. 더하여, 보조 실행 기능부는 필요 시에만 로딩되어 실행될 수 있도록 DLL(Dynamic Link Library) 파일로 구현된다. 이러한 보조 실행 기능부에 대해서는 다음에 더 구체적으로 설명하기로 한다.For example, the separate executable code block 35 stored in the storage device 60 is implemented as Java bytecode based on the platform of the storage device 60, more specifically, a Java applet embedded with a Java applet and ARM instructions. In this case, the auxiliary execution function unit is implemented as a native launcher for executing the above-described Java applet. In addition, the auxiliary execution function is implemented as a DLL (Dynamic Link Library) file so that it can be loaded and executed only when necessary. This auxiliary execution function will be described in more detail later.

도 5를 참조하면, (a)는 스터브 코드의 삽입 전의 실행형 컨텐츠(11), 즉, 분리 실행 대상 코드 블록(35)을 나타내며, (b)는 분리 실행 대상 코드 블록(35) 위치에 삽입된 스터브 코드를 나타낸 것이다.Referring to FIG. 5, (a) shows the executable content 11 before inserting the stub code, that is, the separated execution target code block 35, and (b) is inserted at the position of the separated execution target code block 35. Shows the stub code.

도 5의 (a)와 (b)를 비교하면, 스터브 코드는 분리 실행 대상 코드 블록(35)의 맨 앞 위치에서 보조 실행 기능부의 특정 함수로 점프하고(jmp NativeLauncher), 보조 실행 기능부의 함수 호출 이후에는 함수 값을 반환할 엔드 포인트로 점프하도록 생성되어, 분리 실행 대상 코드 블록(35)의 위치에 삽입된다. 이에 의하면, caller code의 변경 없이 코드 변환이 가능하다.When comparing (a) and (b) of Fig. 5, the stub code jumps to a specific function of the auxiliary execution function unit (jmp NativeLauncher) from the front position of the separate execution target code block 35, and calls the function of the auxiliary execution function unit. After that, it is generated to jump to the endpoint to return a function value, and is inserted at the position of the separated execution code block 35. According to this, code conversion is possible without changing the caller code.

코드 조작부(315)는, 스터브 코드의 삽입과 더불어, 보조 실행 기능부의 로딩을 위하여 임포트 영역(idata section)의 임포트 테이블(import table) 내에 보조 실행 기능부(Native Launcher DLL)을 삽입한다. 임포트 테이블에 대한 보조 실행 기능부의 삽입은, 호스트 단말(50)에서 분리 실행 기반 컨텐츠(37)가 구동될 때, OS의 로더(loader)에 의하여 보조 실행 기능부가 로딩되도록 하기 위한 것이다.The code manipulation unit 315 inserts a native launcher function unit (Native Launcher DLL) into an import table of an idata section for the insertion of the stub code and for loading the auxiliary execution function unit. The insertion of the auxiliary execution function into the import table is for the auxiliary execution function to be loaded by the loader of the OS when the separate execution base content 37 is driven in the host terminal 50.

이러한 방식을 통하여, 분리 실행 기반 컨텐츠(37)의 소스 코드 수정 없이, 분리된 분리 실행 대상 코드 블록(35)과의 상호 작용이 가능해진다.In this way, the interaction with the separated separate execution target code block 35 is possible without modifying the source code of the separated execution based content 37.

코드 변환부(317)는 분리 실행 기반 컨텐츠(37)에서 분리된 분리 실행 대상 코드 블록(35)을 저장장치(60)에서 실행 가능한 형태로 변환한다. 이때, 분리 실행 대상 코드 블록(35)은, 분리 실행 속도의 향상을 위하여, 저장장치(60)에 구비된 프로세서의 명령어로 변환되는 것이 바람직하다. 예를 들면, 저장 장치(60)가 Java 기반 스마트 카드인 경우, 분리 실행 대상 코드 블록(35)은, Java 바이트 코드로 변환되는데, 특히, ARM 명령어를 내장한 Java 바이트 코드로 변환된다. 즉, 호스트 단말(50)이 X86 계열의 프로세서 구조를 가지며, 저장장치(60)가 ARM 구조의 프로세서로 이루어진 경우, 코드 변환부(317)는, 분리 실행 대상 코드 블록(35)의 X86 명령어를 Java 바이트코드 및 ARM 명령어를 내장한 Java 바이트코드로 변환한다.The code conversion unit 317 converts the separation execution target code block 35 separated from the separation execution base content 37 into an executable form in the storage device 60. In this case, the separation execution target code block 35 may be converted into instructions of a processor included in the storage device 60 in order to improve the separation execution speed. For example, when the storage device 60 is a Java-based smart card, the separate execution target code block 35 is converted to Java byte code, in particular, to Java byte code containing an ARM instruction. That is, when the host terminal 50 has an X86 series processor structure and the storage device 60 is an ARM structured processor, the code conversion unit 317 may execute the X86 instruction of the separate execution target code block 35. Convert Java bytecode and ARM instructions to embedded Java bytecode.

이때, 코드 변환부(317)는, 실행형 컨텐츠(11)의 분리 실행을 다양한 프로세서 환경에 적용할 수 있도록, 분리 실행 대상 코드 블록(35)을 복수의 머신 코드로 변환하는 것이 바람직하다. 이를 위하여, 코드 변환부(317)는 compiler infrastructure, 특히 LLVM(Low Level Virtual Machine)를 이용하여 구현될 수 있다. LLVM을 이용할 경우, 검증된 다양한 오픈 소스 솔루션을 이용할 수 있으며, 타겟, 즉, 저장장치(60)의 프로세서와는 독립적으로 코드 최적화가 가능하고, 코드 재사용성이 높아, 다양한 소스를 다양한 머신 코드로 변환할 수 있다.At this time, the code conversion unit 317 preferably converts the separation execution target code block 35 into a plurality of machine codes so that the separation execution of the executable content 11 can be applied to various processor environments. To this end, the code conversion unit 317 may be implemented using a compiler infrastructure, in particular, a low level virtual machine (LLVM). With LLVM, you can use a variety of proven open source solutions, code optimization independent of the target, i.e., the processor of the storage device 60, high code reusability, and a variety of source code I can convert it.

구체적으로 코드 변환부(317)는 소스, 즉, 호스트 단말(50)의 플랫폼에 기반한 언어로 구성된 분리 실행 대상 코드 블록을 중간 단계 언어(LLVM IR: LLVM Intermediate Representation)로 변환하고, 이어 중간 단계 언어로 변환된 분리 실행 대상 코드 블록(35)을 최적화하며, 마지막으로 최적화된 중간 단계 언어의 분리 실행 대상 코드 블록(35)을 저장 장치(140)의 프로세서에 기반한 복수의 머신 코드, 예를 들어, Java 바이트 코드, ARM 명령어로 변환한다.In detail, the code conversion unit 317 converts a separate execution target code block formed of a source, that is, a language based on the platform of the host terminal 50, into an intermediate level language (LLVM IR), and then the intermediate level language. Optimizes the separate execution target code block 35 converted into a second, and finally separates the optimized execution target code block 35 of the intermediate language into a plurality of machine codes based on the processor of the storage device 140, for example, Java bytecode, converted to ARM instructions.

코드 암호화부(319)는, 모듈 제어부(311)의 제어에 따라서 선정된 초기 코드 블록을 특정 키로 암호화하여, 해당 실행형 컨텐츠(11)의 실행시 특정 키를 통해 초기 코드 블록을 복호화하여 실행하도록 실행형 컨텐츠(11)를 변환한다. The code encryptor 319 encrypts the initial code block selected under the control of the module controller 311 with a specific key, and decrypts and executes the initial code block through the specific key when executing the executable content 11. The executable content 11 is converted.

구체적으로 코드 암호화부(319)는, 선정된 초기 코드 블록을 지정된 키로 암호화한 후, 암호화된 초기 코드 블록을 실행형 컨텐츠(11)에 추가 생성된 보안 영역에 삽입하고, 초기 코드 블록의 위치에는 키를 획득하여 암호화된 초기 코드 블록을 복호화한 후 실행시키는 보조 실행 기능부를 로드하게 하는 시동 스터브 코드를 삽입한다.Specifically, the code encryptor 319 encrypts the selected initial code block with a designated key, and then inserts the encrypted initial code block into the security area additionally generated in the executable content 11, and at the position of the initial code block. A start stub code is inserted which causes the secondary execution function to be loaded to obtain the key, decrypt and execute the encrypted initial code block.

보다 구체적으로, 코드 암호화부(319)는, 암호화되어 이동될 초기 코드 블록 대신에 암호화된 초기 코드 블록의 복호화한 후 실행시키는 보조 실행 기능부의 함수를 호출하는 시동 스터브 코드를 생성하여, 초기 코드 블록의 위치에 삽입한다. 코드 암호화부(319)는, 실행형 컨텐츠(11)에 보안 영역(secure section)을 새로 생성하고, 선정된 초기 블록 코드를 지정된 키로 암호화한 후, 생성된 보안 영역에 암호화된 초기 코드 블록을 적재한다. More specifically, the code encryptor 319 generates a startup stub code that calls a function of an auxiliary execution function to decrypt and execute the encrypted initial code block instead of the initial code block to be encrypted and moved, thereby initial block. Insert it in the position of. The code encryptor 319 creates a new secure section in the executable content 11, encrypts the selected initial block code with a specified key, and loads the encrypted initial code block in the generated secure area. do.

이때 암호화에 사용되는 키는 실행형 컨텐츠(11)의 실행시에 복호화를 위하여 필요하므로, 권리객체(43)의 CEK(Contents Encryption key) 형태로 관리되어, 저장장치(60)에 저장될 수 있다.In this case, since the key used for encryption is necessary for decryption at the time of execution of the executable content 11, the key used for encryption may be managed in the form of a Contents Encryption Key (CEK) of the rights object 43 and stored in the storage device 60. .

이와 같이 코드 암호화부(319)를 통하여 암호화된 초기 코드 블록은 이후, 분리 실행 대상 코드 블록(35)의 경우와 마찬가지로, 보조 실행 기능부에 의하여 복호화되고, 온 메모리(On-Memory) 상태에서 구동(Running)된다. 이에 의하면, 실행형 컨텐츠(11)에 대하여, 초기 구동 시 1단계 보안 기술을 적용하고, 분리 실행을 통해 2단계 보안 기술을 적용함으로써, 실행형 컨텐츠(11)의 불법 사용 및 복제를 더 강력하게 차단할 수 있게 된다.The initial code block encrypted through the code encryption unit 319 is then decrypted by the auxiliary execution function unit as in the case of the separate execution target code block 35 and driven in an on-memory state. (Running) According to this, the first-level security technology is applied to the executable content 11 at the time of initial driving, and the two-level security technology is applied through separate execution, thereby more illegally using and copying the executable content 11. You can block.

도 6은 본 발명이 적용되는 디지털 저작권 관리 시스템의 분리 실행 기반 컨텐츠에서 보조 실행 기능부의 구성 및 이를 통한 분리 실행 과정을 나타낸 도면이다.FIG. 6 is a diagram illustrating a configuration of an auxiliary execution function unit in a separation execution based content of a digital rights management system to which the present invention is applied and a separation execution process through the same.

도 6을 참조하면, 본 발명에 따른 호스트 단말(50)에 저장된 분리 실행 기반 디지털 컨텐츠(37)와, 저장 장치(60)에 저장되며 저장 장치(60)에서 실행 가능한 형태로 변환된 분리 실행 대상 코드 블록(35)은, 보조 실행 기능부(300)를 통해 상호 연동한다. 특히, 보조 실행 기능부(300)는, 이종 프로세서로 구현된 호스트 단말(50)과 저장 장치(60)가 연동하여 분리 실행을 구현할 수 있도록 한다.Referring to FIG. 6, a separate execution target digital content 37 stored in the host terminal 50 and a separate execution target stored in the storage device 60 and converted into an executable form in the storage device 60 according to the present invention. The code blocks 35 interoperate with each other via the auxiliary execution function unit 300. In particular, the auxiliary execution function unit 300 allows the host terminal 50 implemented as a heterogeneous processor and the storage device 60 to implement separate execution.

이를 위하여 보조 실행 기능부(300)는, 인터페이스 기능부(310)와, 패킹(packing) 기능부(320)와, 언패킹(unpacking) 기능부(330)와, 메모리 매핑 기능부(340)와, OS API 매핑 기능부(350)를 포함하고, 더하여, 코드 복호화 기능부(360)를 더 포함할 수 있다.To this end, the auxiliary execution function unit 300 may include an interface function unit 310, a packing function unit 320, an unpacking function unit 330, a memory mapping function unit 340, and the like. In addition, the OS API mapping function 350 may be included, and in addition, the code decoding function 360 may be further included.

인터페이스 기능부(310)는, 분리 실행 대상 코드 블록(35)과의 통신 채널을 제공하여, 저장 장치(60)에 저장된 분리 실행 대상 코드 블록(35)과 데이터를 교환한다. 예를 들어, 인터페이스 기능부(310)는 ISO-7816에 정의된 APDU(Application Protocol Data Unit)을 통해 분리 실행 대상 코드 블록(35)과의 통신 채널을 제공할 수 있다. 인터페이스 기능부(310)는, 향후 TCP/IP Over USB와 같은 다른 종류의 인터페이스가 적용되더라도, 보조 실행 기능부(300)의 다른 기능부가 변경되지 않도록, Network bearer transparent한 인터페이스를 제공하는 것이 바람직하다. 인터페이스 기능부(310)는 일반적인 I/O 함수들과 동일한 형태의 함수를 갖는다.The interface function unit 310 provides a communication channel with the separation execution target code block 35 to exchange data with the separation execution target code block 35 stored in the storage device 60. For example, the interface function unit 310 may provide a communication channel with the separate execution target code block 35 through an application protocol data unit (APDU) defined in ISO-7816. The interface function unit 310 may provide a network bearer transparent interface so that the other function unit of the auxiliary execution function unit 300 is not changed even when another type of interface such as TCP / IP Over USB is applied in the future. . The interface function 310 has a function of the same type as general I / O functions.

패킹 기능부(320)는 스터브 코드(234)로부터 스택과 레지스터의 정보를 전달받아 패킹하여, 인터페이스 기능부(310)를 통해 분리 실행 대상 코드 블록(35)으로 전달한다. 여기서, 스택 정보는, SP 레지스터에 의해 지정된 스택 포지션에서부터 시작하여 파라미터로 이용되는 스택 값들의 모임이고, 레지스터 정보는, 스터브 코드(234)에서 분리 실행 대상 코드 블록(35)를 호출할 때 전달되는 레지스터 정보이다.The packing function unit 320 receives the stack and register information from the stub code 234 and packs it, and transmits the packing function unit 320 to the separate execution target code block 35 through the interface function unit 310. Here, the stack information is a collection of stack values used as parameters starting from the stack position designated by the SP register, and the register information is transmitted when the separate execution target code block 35 is called in the stub code 234. Register information.

언패킹 기능부(330)는, 인터페이스 기능부(310)를 통해 분리 실행 대상 코드 블록(35)으로부터 전달된 패킹된 데이터를 언패킹하여, 스터브 코드(234)로 반환한다. 언패킹 기능부(330)는, 분리 실행 대상 코드 블록(35)의 반환 값이 Primitive Data Type인 경우에는 단순히 해당 레지스터의 값에 반환 값을 설정하고, 반환 값이 메모리 주소인 경우, 해당 주소에 해당하는 값들을 반환 값에 따라서 변경한다.The unpacking function unit 330 unpacks the packed data transferred from the separate execution target code block 35 through the interface function unit 310 and returns the packed data to the stub code 234. The unpacking function unit 330 simply sets a return value to a value of a corresponding register if the return value of the separated execution target code block 35 is a Primitive Data Type, and if the return value is a memory address, Change the corresponding values according to the return value.

메모리 매핑 기능부(340)는, 인터페이스 기능부(310)를 통해 분리 실행 대상 코드 블록(35)에서 전달된 데이터를 호스트 단말(50)의 메모리에 기록하거나, 호스트 단말(50)의 메모리에서 데이터를 디스패치하여 분리 실행 대상 코드 블록(35)으로 전달한다. 메모리 매핑 기능부(340)를 통해 저장 장치(60)의 분리 실행 대상 코드 블록(35)이 호스트 단말(50)의 메모리를 참조하여 실행될 수 있다.The memory mapping function unit 340 records the data transmitted from the separate execution target code block 35 through the interface function unit 310 in the memory of the host terminal 50, or the data in the memory of the host terminal 50. And dispatch to the separate execution target code block 35. The separate execution target code block 35 of the storage device 60 may be executed by referring to the memory of the host terminal 50 through the memory mapping function 340.

OS API 매핑 기능부(350)는, 인터페이스 기능부(310)를 통해 분리 실행 대상 코드 블록(35)으로부터 API 명 및 파라미터 값을 전달받아, 호스트 단말(50)의 OS API를 호출하고, 그 결과를 반환 받아 분리 실행 대상 코드 블록(35)으로 전달한다. 이에 의하여, 저장 장치(60)에 저장된 분리 실행 대상 코드 블록(35)이 호스트 단말(50)의 OS API를 호출하여 그 결과를 반환 받을 수 있다.The OS API mapping function unit 350 receives the API name and parameter values from the separate execution target code block 35 through the interface function unit 310, calls the OS API of the host terminal 50, and as a result, Received is returned to the code execution target block 35 to be separated. As a result, the separated execution target code block 35 stored in the storage device 60 may call the OS API of the host terminal 50 to receive the result.

그리고, 코드 복호화 기능부(360)는, 저장장치(60)로부터 특정 키를 획득하여 보안 영역(270)에 적재된 암호화된 초기 코드 블록(271)을 복호화하고, 복호화된 초기 코드 블록을 실행시킨다. The code decryption function 360 obtains a specific key from the storage device 60, decrypts the encrypted initial code block 271 loaded in the security area 270, and executes the decrypted initial code block. .

도 7은 본 발명이 적용되는 디지털 저작권 관리 시스템에서 코드 복호화 기능부의 동작 흐름도이다. 도 7을 참조하면, 코드 복호화 기능부(360)는, 암호화된 초기 코드 블록과 암호화에 사용된 키(CEK)를 입력 받아, 키로 초기 코드 블록을 복호화한다(S361). 그리고, 복호화된 초기 코드 블록을 런타임 코드 실행자(Runtime code executioner)가 메모리 상에서 바로 실행시킨다(S362). 더 구체적으로, 런타임 코드 실행자가 복호화된 초기 코드 블록으로 인스트럭션 포인터(Instruction Pointer)를 매핑하여 점프시켜, 복호화된 초기 코드 블록을 실행한다. 이에 의하면, 초기 코드 블록의 실행 시에만, 복호화된 초기 코드 블록이 메모리에 존재하고, 실행이 후에는 바로 소멸되며, 이를 통해 보안 효과를 더 높일 수 있다.7 is an operation flowchart of a code decoding function unit in a digital rights management system to which the present invention is applied. Referring to FIG. 7, the code decryption function unit 360 receives an encrypted initial code block and a key CEK used for encryption, and decrypts an initial code block with a key (S361). The runtime code executioner directly executes the decoded initial code block on the memory (S362). More specifically, the runtime code executor maps an instruction pointer to the decoded initial code block and jumps to execute the decoded initial code block. According to this, only when the initial code block is executed, the decrypted initial code block exists in the memory, and after execution, it is immediately destroyed, thereby increasing the security effect.

도 6 및 도 7을 참조하여, 보조 실행 기능부(300)를 이용한 분리 실행 동작을 설명하면 다음과 같다.6 and 7, the separation execution operation using the auxiliary execution function unit 300 will be described as follows.

먼저, 분리 실행 기반 컨텐츠(37)가 구동되기 시작하면, 코드 영역(230)의 초기에 위치한 시동 스터브 코드(233)에 의하여 보조 실행 기능부(300)가 로딩되고(①), 코드 복호화 기능부(360)가 호출되어, 보안 영역(270)에 적재된 암호화된 초기 코드 블록(271)을 가져오고(②), 복호화에 필요한 키(CEK)를 획득하여(③), 초기 코드 블록(271)을 복호화한 후 실행한다(④). 이후 이어서 코드 영역의 다음 프로그램 코드가 순서대로 실행되다가, 스터브 코드(234)에 진입하면, 스터브 코드(234)에 의하여 패킹 기능부(320)가 호출되고, 호출된 패킹 기능부(320)가 스터브 코드(234)에서 전달된 스택 및 레지스터 정보를 패킹하여 인터페이스 기능부(310)를 통해 저장 장치(60)의 분리 실행 대상 코드 블록(35)으로 전달한다(⑤). 이에 분리 실행 대상 코드 블록(35)이 실행되는데, 이때, 분리 실행 대상 코드 블록(35)은 메모리 매핑 기능부(340) 및 OS API 매핑 기능부(350)를 통해 호스트 단말(50)의 메모리 및 OS API에 접근할 수 있다(⑥). 분리 실행 대상 코드 블록(35)의 실행이 완료되면, 그 결과값이 인터페이스 기능부(330)를 통해 보조 실행 기능부(300)로 전달되고, 언패킹 기능부(330)가 결과값을 다시 언패킹하여 스터브 코드(234)로 반환한다(⑦).First, when the separated execution based content 37 starts to be driven, the auxiliary execution function unit 300 is loaded by the start stub code 233 located at the beginning of the code region 230 (①), and the code decoding function unit is executed. 360 is called to retrieve an encrypted initial code block 271 loaded in the secure area 270 (2), obtain a key (CEK) necessary for decryption (3), and initialize the initial code block 271. Decode and execute (④). Subsequently, the next program code of the code area is executed in order, and when the stub code 234 is entered, the packing function 320 is called by the stub code 234, and the called packing function 320 is stubbed. The stack and register information delivered from the code 234 is packed and transferred to the separate execution target code block 35 of the storage device 60 through the interface function unit 310 (⑤). In this case, the separate execution target code block 35 is executed. In this case, the separate execution target code block 35 is executed by the memory of the host terminal 50 through the memory mapping function 340 and the OS API mapping function 350. You can access the OS API (⑥). When the execution of the separate execution target code block 35 is completed, the result value is transmitted to the auxiliary execution function unit 300 through the interface function unit 330, and the unpacking function unit 330 freezes the result value again. It is packed and returned to the stub code 234 (⑦).

이에 의하면, 분리 실행 기반 컨텐츠(37) 및 분리 실행 대상 코드 블록(35)이 호스트 단말(50)과 저장 장치(60)의 연동을 통해 정상적으로 동작할 수 있게 된다.According to this, the separation execution based content 37 and the separation execution target code block 35 may operate normally through interworking between the host terminal 50 and the storage device 60.

도 8은 본 발명이 적용되는 디지털 저작권 관리 시스템의 저장 장치에서의 보조 실행 모듈의 구조를 나타낸 구성도이다. 도 6 및 도 8을 참조하면, 본 발명이 적용되는 저장 장치(60)에 저장된 분리 실행 대상 코드 블록(35)과 호스트 단말(50)에 저장된 분리 실행 기반 컨텐츠(37)는, 보조 실행 기능부(300)와 보조 실행 모듈(610)을 통해 상호 연동된다.8 is a block diagram showing the structure of an auxiliary execution module in a storage device of a digital rights management system to which the present invention is applied. 6 and 8, the separated execution target code block 35 stored in the storage device 60 to which the present invention is applied and the separated execution based content 37 stored in the host terminal 50 may include an auxiliary execution function unit. It is interlocked through the 300 and the auxiliary execution module 610.

보조 실행 모듈(610)은 실행 기능부(611), 작업 관리 기능부(613), 로딩 기능부(615), 장치 메모리 매핑 기능부(617), 장치 OS API 매핑 기능부(619), 장치 메모리 관리 기능부(621), ROM 관리 기능부(623)을 포함한다. The auxiliary execution module 610 includes an execution function unit 611, a task management function unit 613, a loading function unit 615, a device memory mapping function unit 617, a device OS API mapping function unit 619, and a device memory. The management function unit 621 and the ROM management function unit 623 are included.

로딩 기능부(615)는 분리 실행 대상 코드 블록(35)을 로드하여, fix되지 않은 reference들을 모두 fix하고(이하 Linking이라고 함) reference들을 메모리 상의 임의의 영역에 로드한다. unresolved reference를 Linking하기 위해서는 reference information을 참조한다.The loading function 615 loads the separate execution target code block 35 to fix all unfixed references (hereinafter referred to as linking) and load the references to an arbitrary area in the memory. Refer to reference information to link unresolved reference.

실행기능부(611)는 호스트 단말(50)과 통신을 담당하여, 호스트 단말(40)로부터 수신한 데이터를 파싱하여 해당 내용을 실행 후, 다시 호스트 단말(50)로 전송한다. 이때, 프로토콜은 보조 실행 기능부(300)과 보조 실행 모듈(610)사이에 규격화 시켜서 처리할 수 있다.The execution function unit 611 communicates with the host terminal 50, parses the data received from the host terminal 40, executes the contents, and transmits the contents to the host terminal 50. In this case, the protocol may be processed by standardizing between the auxiliary execution function unit 300 and the auxiliary execution module 610.

구체적으로, RO에 포함된 분리 실행 대상 코드 블록(35)을 전달 받아, 로딩 기능부(615)를 통해 분리 실행 대상 코드 블록(35)을 로드하고, IP(interrupt priority) 레지스트를 조작하여 분리 실행 대상 코드 블록(35)의 시작점(entry point)를 강제로 호출해 실행한다. 또한, 장치 메모리 매핑 기능부(619) 또는 장치 OS API 매핑 기능부(621)의 호출로 인해 호스트 단말(50)의 응답을 기다려야 하는 경우, 현재 실행 중이던 인스트럭션 포인터(Instruction Pointer) 및 레지스터 값들을 컨텍스트(context) 형태로 임시 저장하고 있다가, 호스트 단말(50)로부터 응답이 도착하면, 해당 위치(position)부터 재 실행한다.Specifically, the separation execution target code block 35 included in the RO is received, the separation execution target code block 35 is loaded through the loading function unit 615, and the separation execution is performed by manipulating an IP (interrupt priority) resist. The entry point of the target code block 35 is forcibly called and executed. In addition, when it is necessary to wait for a response from the host terminal 50 due to a call of the device memory mapping function 619 or the device OS API mapping function 621, an instruction pointer and register values that are currently being executed are contextually displayed. After temporary storage in the form of (context), when a response arrives from the host terminal 50, the process is executed again from the corresponding position.

장치 메모리 매핑 기능부(617)는 로딩 기능부(615)에 의해 로드된 명령어(instruction)가 호스트 단말(50)의 메모리 참조하는 경우 패킹하여 호스트 단말(50)의 보조 실행 기능부(300)에 전달하며, 보조 실행 기능부(300)로부터 응답을 수신하는 경우 언패킹하여 실행 기능부(611)에 전달한다.The device memory mapping function 617 packs the instructions loaded by the loading function 615 to the auxiliary execution function 300 of the host terminal 50 when the instructions refer to the memory of the host terminal 50. When the response is received from the auxiliary execution function unit 300, the packet is unpacked and transferred to the execution function unit 611.

여기서, 로딩 기능부(615)는 초기 로드하는 과정에서 호스트 단말(50)의 메모리 참조가 있는 코드가 장치 메모리 매핑 기능부(617)을 호출하도록 링크(link)하며, 이에 따라 로드된 코드에서 호스트 단말(50)의 메모리 참조를 하는 경우 장치 메모리 매핑 기능부(617)를 호출하게 된다.Here, the loading function 615 links the code having the memory reference of the host terminal 50 to call the device memory mapping function 617 during the initial loading process, and thus the host in the loaded code. When the memory reference of the terminal 50 is made, the device memory mapping function unit 617 is called.

장치 OS API 매핑 기능부(619)는 로딩 기능부(615)에 의해 로드된 명령어(instruction)가 호스트 단말(50)의 OS API를 호출하는 경우 패킹하여 호스트 단말(50)의 보조 실행 기능부(300)에 전달하며, 보조 실행 기능부(300)로부터 응답을 수신하는 경우 언패킹하여 실행 기능부(611)에 전달한다.The device OS API mapping function 619 packs an instruction loaded by the loading function 615 when the OS API of the host terminal 50 calls the OS execution function of the host terminal 50. 300, and when receiving a response from the auxiliary execution function unit 300, unpacks and transmits the response to the execution function unit 611.

여기서, 로딩 기능부(615)는 초기 로드하는 과정에서 호스트 단말(50)의 OS API를 호출하는 코드가 장치 OS API 매핑 기능부(619)을 호출하도록 링크(link)하며, 이에 따라 로드된 코드에서 호스트 단말(50)의 OS API를 호출하는 경우 장치 OS API 매핑 기능부(619)를 호출하게 된다.Here, the loading function unit 615 links the code that calls the OS API of the host terminal 50 to call the device OS API mapping function unit 619 during the initial loading process, and thus the loaded code When calling the OS API of the host terminal 50 in the device OS API mapping function unit 619 is called.

작업 관리 기능부(613)는 호스트 단말(50)에서 실행되는 분리 실행 기반 컨텐츠(37)는 복수일 수 있으며, 복수의 분리 실행 기반 컨텐츠(37)가 동시에 실행되는 경우 저장장치(60)의 Task와 1:1로 매칭되도록 Task를 생성한다. 또한, 실행 기능부(611)와 보조 실행 모듈(610)의 타 구성요소와 연결한다.The task management function unit 613 may include a plurality of separated execution based content 37 executed in the host terminal 50, and when the plurality of separated execution based content 37 are executed at the same time, a task of the storage device 60 may be executed. Create a task to match 1: 1 with. In addition, it is connected to other components of the execution function unit 611 and the auxiliary execution module 610.

장치 메모리 관리 기능부(621)는 보조 실행 모듈(610)이 실행되면, 저장장치(60) OS로부터 보조 실행 모듈(610)에게 할당한 Heap의 시작 번지와 사용 가능한 메모리 사이즈를 수신하여, 분리 실행 대상 코드 블록(35)의 실행을 위한 메모리를 할당, 해제, 데이터 삽입, 삭제 등을 한다. 이때, 할당되는 메모리는 고정되며, 보조 실행 모듈(610)만 사용 가능하도록 할당되는 것이 바람직하다. 또한, 메모리 관리 기능부(621)는 분리 실행 대상 코드 블록(35)이 참조하는 메모리 사이즈가 저장장치(60)의 가용 메모리 사이즈보다 큰 경우 작업 관리 기능부(613)에게 요청하여 호스트 단말(50)의 메모리를 할당 받는다.When the auxiliary execution module 610 is executed, the device memory management function 621 receives the start address of the heap allocated to the auxiliary execution module 610 and the available memory size from the storage device 60 OS, and performs separate execution. Memory for execution of the target code block 35 is allocated, released, data inserted, deleted, and the like. In this case, the allocated memory is fixed and preferably allocated such that only the auxiliary execution module 610 may be used. In addition, the memory management function unit 621 requests the job management function unit 613 when the memory size referred to by the separated execution target code block 35 is larger than the available memory size of the storage device 60, and the host terminal 50. ) Memory is allocated.

ROM 관리 기능부(623) 저장장치(60)에서 NOR 또는 NAND 메모리의 쓰기 횟수 가 제한되는 경우, RAM의 적은 용량 때문에 NOR 또는 NAND 메모리를 참조할 때 접근을 최소화하기 위해 OEM(Original Equipment Manufacturer)에서 ROM의 일정영역을 할당 받아 Cash를 구현할 수 있는 파일 시스템(file system)을 제공한다. 이러한 파일 시스템은 기존의 파일 시스템과 같이 파일을 open, read, write 등의 API가 제공된다. When the number of writes of the NOR or NAND memory in the ROM management function unit 623 storage device 60 is limited, the original equipment manufacturer (OEM) may minimize the access when referring to the NOR or NAND memory due to the small amount of RAM. Provides a file system that can implement cash by allocating a certain area of ROM. Such a file system is provided with APIs such as open, read, and write files as in the existing file system.

도 9는 본 발명의 일 실시예에 따른 UMS(USB Mass Storage) 기반 통신을 위한 호스트 단말을 나타내는 구성도이다. 도 9를 참조하면, 본 실시예의 호스트 단말(50)은 API 래퍼(wrapper)(520), APDU 에이전트(530), 인터페이스부(540)를 포함한다. 9 is a block diagram showing a host terminal for UMS (USB Mass Storage) based communication according to an embodiment of the present invention. Referring to FIG. 9, the host terminal 50 of the present embodiment includes an API wrapper 520, an APDU agent 530, and an interface unit 540.

인터페이스부(540)는 유선 또는 무선으로 접속된 저장장치(60)와 데이터 송수신을 수행하기 위한 인터페이스를 가진다. The interface unit 540 has an interface for performing data transmission and reception with the storage device 60 connected by wire or wirelessly.

API 래퍼(520)는 호스트 단말(50)과 저장장치(60)간에 APDU(Application Protocol Data Unit) 통신을 위한 API(Application Protocol Interface)를 제공하며, 호스트 프로그램(510)에서 API를 호출하여 사용할 수 있도록 인터페이스를 제공한다. The API wrapper 520 provides an application protocol interface (API) for communicating an APDU (Application Protocol Data Unit) between the host terminal 50 and the storage device 60, and may be used by calling an API from the host program 510. To provide an interface.

여기서 호스트 프로그램(510)은 호스트 단말(50)에서 실행될 수 있는 문서 작업 프로그램, 멀티미디어 재생 프로그램 등을 포함한 각종 프로그램을 말하며, 이때, 응용프로그램으로 한정되는 것은 아니다.Here, the host program 510 refers to various programs including a document work program, a multimedia playback program, and the like, which may be executed in the host terminal 50. In this case, the host program 510 is not limited to an application program.

구체적으로 API 래퍼(520)는 호스트 프로그램(510)을 실행하는 중에, 호스트 프로그램(510) 내에서 혹은 사용자의 입력을 받아 저장장치(60)에 파일 생성, 파일 읽기 또는 파일 쓰기 등 파일에 대한 연산을 수행하기 위해 API 래퍼(520)에서 제공하는 API를 호출을 수신하면, API 래퍼(520)는 호출된 API를 제공하고, 호스트 프로그램(510)으로부터 저장장치(60) 내 파일에 대한 연산을 수행하기 위한 데이터를 호스트 프로그램(510)으로부터 수신하여 APDU 에이전트(530)로 전달한다. In detail, the API wrapper 520 operates on a file, such as creating a file, reading a file, or writing a file to the storage device 60 while executing the host program 510, in the host program 510, or by receiving a user input. Upon receiving an API call provided by the API wrapper 520 to perform the API, the API wrapper 520 provides the called API and performs an operation on a file in the storage device 60 from the host program 510. Data to be received from the host program 510 is delivered to the APDU agent 530.

API 래퍼(520)는 APDU 에이전트(530)와 같은 호스트 단말(50) 내에 존재하므로, IPC(inter process communication) 통신으로 데이터를 주고 받으며 이때, UDP 소켓(User Datagram Protocol Socket)을 이용하여 통신할 수 있다. UDP 소켓을 이용하여 통신하는 경우, APDU 에이전트(530)가 UDP 서버로 기능을 하며, API 래퍼(520)이 UDP 클라이언트로 기능을 한다. Since the API wrapper 520 is present in the host terminal 50 such as the APDU agent 530, the API wrapper 520 may transmit and receive data through IPC (inter process communication) communication, and at this time, may communicate using a UDP socket (User Datagram Protocol Socket). have. When communicating using a UDP socket, the APDU agent 530 functions as a UDP server, and the API wrapper 520 functions as a UDP client.

이때, API 래퍼(520)와 APDU 에이전트(530)간에 UDP 소켓을 이용하여 통신을 수행할 때, 악성 툴을 이용하여 송수신되는 패킷을 캡쳐하는 경우 데이터가 노출될 우려가 있어 상호 데이터를 송수신할 때 암호화하여 전송하고, 데이터를 수신한 후에 복호화하여 데이터를 확인할 수 있다. 데이터를 암복호화하는 알고리즘은 동일한 키 값을 가지고 XOR 연산을 하여 암복호화할 수 있으나, 이에 한정되는 것은 아니다. At this time, when performing communication between the UDP wrapper 520 and the APDU agent 530 by using a UDP socket, when capturing packets transmitted and received using a malicious tool, data may be exposed, thereby transmitting and receiving mutual data. Encrypted data can be sent, decrypted after receiving data, and verified. An algorithm for encrypting and decrypting data may be decrypted by performing an XOR operation with the same key value, but is not limited thereto.

또한, API 래퍼(520)는 APDU 에이전트(530)와 통신을 할 때, 소켓을 생성한 후에는 데이터를 송신하거나 수신하는 등 소켓의 상태 변화가 있기 전까지 블록(block) 상태를 유지하는 것이 바람직하며, 이를 위해 비동기 방식 소켓 이벤트를 이용할 수 있다. In addition, when the API wrapper 520 communicates with the APDU agent 530, the API wrapper 520 preferably maintains the block state until there is a change in the state of the socket, such as transmitting or receiving data after creating the socket. For this purpose, you can use asynchronous socket events.

APDU 에이전트(530)는 API 래퍼(520)으로부터 수신한 데이터를 이용하여 인터페이스부(540)를 통해 저장장치(60)와 통신하여 파일 연산을 수행하고, 처리된 데이터를 API 래퍼(520)로 반환한다. The APDU agent 530 communicates with the storage device 60 through the interface unit 540 using the data received from the API wrapper 520 to perform a file operation, and returns the processed data to the API wrapper 520. do.

이때, APDU 에이전트(530)도 API 래퍼(520)와 UDP 소켓을 이용하여 통신을 수행하며, 비동식 방식인 소켓 이벤트를 이용할 수 있다. In this case, the APDU agent 530 may also communicate with the API wrapper 520 using the UDP socket, and may use a socket event that is an incompatible method.

APDU 에이전트(530)는 저장장치(60)간의 통신은 1:1로 수행되므로, API 래퍼(520)로부터 먼저 수신한 데이터에 대해서 먼저 처리가 이루어져야 하며, 이를 위해 FIFO(First In First Out) 구조인 큐(queue)를 이용하여, API 래퍼(520)로부터 먼저 수신한 데이터를 먼저 저장한다. Since the APDU agent 530 communicates between the storage devices 60 at a ratio of 1: 1, the APDU agent 530 must first process data received from the API wrapper 520. For this purpose, the APDU agent 530 has a structure of FIFO (First In First Out). Using a queue, the data first received from the API wrapper 520 is first stored.

이때, APDU 에이전트(530)는 큐를 효과적으로 관리하기 위해 원형큐를 이용할 수 있으며, 수신하여 큐에 삽입한 데이터는 데이터에 대한 처리가 완료될 때까지 삭제되지 않는다. In this case, the APDU agent 530 may use a circular queue to effectively manage the queue, and the data received and inserted into the queue is not deleted until processing of the data is completed.

구체적으로, APDU 에이전트(530)는 API 래퍼(520)로부터 수신한 데이터를 순서대로 큐에 저장하고, 큐에 저장된 데이터를 읽고, 읽은 데이터를 이용해 하나의 쓰레드(thread)를 생성하여 저장장치(60) 내 파일에 대한 연산을 수행하고, 저장장치(60) 내 파일 연산이 완료된 후에 처리된 데이터, 즉 API 래퍼(520)로부터 수신하여 큐에 삽입되었던 데이터를 추출(Dequeue)하여 API 래퍼(520)로 반환한다.In detail, the APDU agent 530 stores the data received from the API wrapper 520 in the queue in order, reads the data stored in the queue, and creates a thread using the read data to store the storage device 60. A) and executes an operation on a file in the storage device 60 and dequeues data processed after the file operation in the storage device 60 is completed, that is, data received from the API wrapper 520 and inserted into a queue. Return to

이때, APDU 에이전트(530)는 API 래퍼(520)로부터 수신하는 여러 데이터, 즉 API 래퍼(520)로부터 수신하는 파일 연산에 대한 복수의 요청에 대해 동기화함이 바람직하며, 이를 위해 FIFO 큐에 데이터를 삽입하거나, 삽입된 데이터를 삭제할 때 뮤텍스(Mutex) 알고리즘을 이용할 수 있다.In this case, the APDU agent 530 preferably synchronizes a plurality of data received from the API wrapper 520, that is, a plurality of requests for file operations received from the API wrapper 520. The mutex algorithm can be used to insert or delete inserted data.

APDU 에이전트(530)는 생성한 쓰레드를 실행하여 인터페이스부(540)를 통해 저장장치(60)와 통신하며 저장장치(60) 내에서 파일 생성(create), 파일 삭제(delete), 파일 읽기(read), 파일 쓰기(write), 파일 위치 재설정(seek), 파일 절단(truncate) 등 파일 연산을 수행한다. 저장장치(60)는 호스트 단말(50)에서 드라이브명으로 표시되며, 이때 드라이브에서 파일은 사용자가 실수나 또는 임의로 파일을 삭제하는 것을 방지하기 위해 숨긴 파일 형태로 표시될 수 있다. 또한, 저장장치(60) 내에서 파일을 생성할 때, 상술한 숨긴 파일 형태로 파일을 생성할 수 있으며, 생성한 숨긴 파일이 삭제된 경우, 저장장치(60) 내 생성하였던 숨긴 파일을 재생성하고 파일 읽기, 쓰기 등 이후 파일 연산을 수행할 수 있다. The APDU agent 530 executes the created thread to communicate with the storage device 60 through the interface unit 540 and creates, deletes, and reads files in the storage device 60. File operations such as file write, file seek, and file truncation. The storage device 60 is displayed as a drive name in the host terminal 50, and the files in the drive may be displayed in a hidden file form to prevent a user from accidentally or arbitrarily deleting a file. In addition, when creating a file in the storage device 60, the file can be generated in the form of the above-described hidden file, and if the created hidden file is deleted, regenerates the hidden file created in the storage device 60 and You can then perform file operations, such as reading or writing files.

도 10은 본 발명의 일 실시예에 따른 UMS(USB Mass Storage) 기반 통신 방법을 나타내는 도면이다. 설명의 편의를 위해 전술한 도 1 내지 도 8에 도시된 구성은 해당 참조번호를 언급하여 설명한다. 도 1 및 도 10을 참조하면, API 래퍼(wrapper)는 호스트 프로그램(510) 내에서 혹은 사용자의 입력을 받아 저장장치(60) 내 파일에 대한 연산을 수행하기 위한 API 호출을 수신하면, API 래퍼(520)는 호출된 API를 제공하고, 호스트 프로그램(510)으로부터 저장장치(60) 내 파일에 대한 연산을 수행하기 위한 데이터를 수신한다(S71).FIG. 10 is a diagram illustrating a UMS (USB Mass Storage) based communication method according to an embodiment of the present invention. For convenience of description, the configuration shown in FIGS. 1 to 8 described above will be described with reference to the corresponding reference numerals. 1 and 10, when the API wrapper receives an API call for performing an operation on a file in the storage device 60 in the host program 510 or receives a user input, the API wrapper receives an API wrapper. 520 provides the called API, and receives data for performing an operation on a file in the storage device 60 from the host program 510 (S71).

단계(S71)에서 저장장치(60) 내 파일에 대한 연산을 수행하기 위한 데이터를 수신한 API 래퍼(520)는 APDU 에이전트(530)로 수신한 데이터를 전달하고(S73), APDU 에이전트(530)는 API 래퍼(520)로부터 수신한 데이터를 큐에 삽입한다(S75).In step S71, the API wrapper 520 that receives data for performing an operation on a file in the storage device 60 transfers the received data to the APDU agent 530 (S73), and the APDU agent 530. Inserts the data received from the API wrapper 520 into the queue (S75).

이때, API 래퍼(520)는 데이터를 암호화하여 전송할 수 있으며, APDU 에이전트(530)는 암호화된 데이터를 수신하면 이를 복호화한다. 여기서 API 래퍼(520)와 APDU 에이전트(530)는 XOR 연산을 통해 암복호화를 수행할 수 있다.At this time, the API wrapper 520 may encrypt and transmit the data, and the APDU agent 530 decrypts the encrypted data when it is received. Here, the API wrapper 520 and the APDU agent 530 may perform encryption and decryption through an XOR operation.

이어, APDU 에이전트(530)는 큐에 삽입된 데이터를 읽어, 읽은 데이터를 이용하여 저장장치(60) 내 파일에 대한 연산을 수행하기 위한 쓰레드(thread)를 생성한다(S77). Subsequently, the APDU agent 530 reads the data inserted into the queue and generates a thread for performing an operation on a file in the storage device 60 using the read data (S77).

이때, APDU 에이전트(530)는 API 래퍼(520)로부터 수신하는 파일 연산에 대한 복수의 요청에 대해 동기화하기 위해, FIFO 큐에 데이터를 삽입하거나, 삽입된 데이터를 삭제할 때 뮤텍스(Mutex) 알고리즘을 이용할 수 있다.At this time, the APDU agent 530 uses a mutex algorithm when inserting data into the FIFO queue or deleting the inserted data to synchronize a plurality of requests for file operations received from the API wrapper 520. Can be.

단계(S77)에서 쓰레드를 생성한 APDU 에이전트(530)는 쓰레드를 실행하여 저장장치(60)와 통신하며, 저장장치(60) 내에서 파일에 대한 연산을 수행한다(S79).The APDU agent 530 that created the thread in step S77 executes the thread to communicate with the storage device 60, and performs an operation on a file in the storage device 60 (S79).

이때, 저장장치(60) 내에서 파일을 생성할 때, 숨긴 파일 형태로 파일을 생성할 수 있으며, 생성한 숨긴 파일이 삭제된 경우, 저장장치(60) 내 생성하였던 숨긴 파일을 재생성하고 파일 읽기, 쓰기 등 이후 파일 연산을 수행할 수 있다.At this time, when the file is created in the storage device 60, the file may be generated in the form of a hidden file. If the generated hidden file is deleted, the file is regenerated and read from the file created in the storage device 60. You can then perform file operations, such as writing and writing.

이어, APDU 에이전트(530)는 파일 연산이 완료된 후에 처리된 데이터, 즉 API 래퍼(520)로부터 수신하여 큐에 삽입되었던 데이터를 추출(Dequeue)하여 API 래퍼(520)로 반환한다(S81).Subsequently, the APDU agent 530 extracts the processed data, that is, data received from the API wrapper 520 and inserted into the queue after the file operation is completed, and returns it to the API wrapper 520 (S81).

한편, 도 9 내지 도 10에서 상술한 파일은 실행형 컨텐츠(11)에서 분리된 분리 실행 대상 코드 블록(35)을 포함할 수 있으며, 호스트 프로그램은 실행형 컨텐츠(11)에서 분리 실행 대상 코드 블록(35)을 스터브 코드(26)로 대체한 분리 실행 기반 컨텐츠(37)일 수 있다. 호스트 단말(50)에서 분리 실행 기반 컨텐츠(37)를 실행하는 중에 분리 실행 대상 코드 블록(35)을 호출하여 분리 실행을 수행할 수 있다. 이에 대한 자세한 설명은 도 1 내지 도 8에 상술하였으므로 설명을 생략한다. 9 to 10 may include a separate execution target code block 35 separated from the executable content 11, and the host program may separate the execution target code block from the executable content 11. It may be separate execution based content 37 replacing 35 with stub code 26. The separation execution target code block 35 may be called while executing the separation execution based content 37 on the host terminal 50 to perform the separation execution. Detailed description thereof has been described above with reference to FIGS. 1 to 8, and thus description thereof will be omitted.

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

이상으로 본 발명의 기술적 사상을 예시하기 위한 바람직한 실시예와 관련하여 설명하고 도시하였지만, 본 발명은 이와 같이 도시되고 설명된 그대로의 구성 및 작용에만 국한되는 것은 아니며, 기술적 사상의 범주를 일탈함 없이 본 발명에 대해 다수의 변경 및 수정이 가능함을 당업자들은 잘 이해할 수 있을 것이다. 따라서 그러한 모든 적절한 변경 및 수정과 균등물들도 본 발명의 범위에 속하는 것으로 간주되어야 할 것이다.As described above and described with reference to a preferred embodiment for illustrating the technical idea of the present invention, the present invention is not limited to the configuration and operation as shown and described as such, without departing from the scope of the technical idea It will be understood by those skilled in the art that many changes and modifications to the present invention are possible. And all such modifications and changes as fall within the scope of the present invention are therefore to be regarded as being within the scope of the present invention.

본 발명에 의하면 UMS 기반 통신을 수행하기 위해 기존에 비해 별도의 장치를 필요로 하지 않아 추가적인 비용 발생을 최소화한다. 특히, 현대인은 시간, 장소에 구애 받지 않고 컨텐츠에 접근할 수 있길 원하여 저장장치에 대한 요구사항이 높아지는 점을 감안하면, 본 발명의 UMS 기반 통신 방안은 그 활용도가 적지 않을 것이다.According to the present invention does not require a separate device to perform the UMS-based communication, thereby minimizing the additional cost. In particular, considering that the demand for storage devices increases because modern people want to be able to access contents regardless of time and place, the UMS-based communication scheme of the present invention may not be useful.

10: 컨텐츠 제공 단말 11: 실행형 컨텐츠
21: 코드 영역 23: 데이터 영역
25: 베이식 블록 26: 스터브 코드
27: 베이식 블록 그룹 30: 컨텐츠 등록 서버
31: 분리 실행 기반 컨텐츠 구성 모듈 33: 프로파일링 및 분석 툴
35: 분리 실행 대상 코드 블록 37: 분리 실행 기반 컨텐츠
40: DRM서버 41: 암호화된 컨텐츠
43: 권리객체 44: 권리객체 발행이력
45: 서버송수신부 47: 서버저장부
49: 서버제어부 50: 호스트 단말
51: 단말통신부 55: 출력부
57: 단말제어부 60: 저장장치
61: 통신부 63: 저장부
65: 프로그램 67: 통신버스
69: 제어부 70: 네트워크
210: DOS 헤더 220: PE 헤더
233: 시동스터브 코드 230: 코드 영역
234: 스터브 코드 240: 데이터 영역
250: 임포트 영역 251: 시동 DLL
260: 익스포트 영역 270: 보안 영역
271: 암호화된 초기 코드 블록 300: 보조 실행 기능부
310: 인터페이싱 기능부 311: 모듈 제어부
313: 코드 분석부 315: 코드 조작부
317: 코드 변환부 319: 코드 암호화부
320: 패킹 기능부 330: 언패킹 기능부
340: 메모리 맵핑 기능부 350: OS API 매핑 기능부
360: 코드 복호화 기능부 510: 호스트 프로그램
520: API 래퍼 530: APDU 에이전트
540: 인터페이스부 610: 보조 실행 모듈
611: 실행 기능부 613: 작업 관리 기능부
615: 로딩 기능부 617: 장치 메모리 매핑 기능부
619: 장치 OS API 매핑 기능부 621: 장치 메모리 관리 기능부
623: ROM 관리 기능부
10: content providing terminal 11: executable content
21: code area 23: data area
25: basic block 26: stub cord
27: basic block group 30: content registration server
31: Separation run based content configuration module 33: Profiling and analysis tool
35: Detach Execution Target Code Block 37: Detach Execution Based Content
40: DRM server 41: encrypted content
43: rights object 44: history of rights object issuance
45: server transmission and reception unit 47: server storage unit
49: server control unit 50: host terminal
51: terminal communication unit 55: output unit
57: terminal controller 60: storage device
61: communication unit 63: storage unit
65: Program 67: Communication bus
69: control unit 70: network
210: DOS header 220: PE header
233: start stub code 230: code area
234: stub code 240: data area
250: Import region 251: Startup DLL
260: export area 270: security area
271: Initial encrypted code block 300: Secondary execution functionality
310: interfacing function unit 311: module control unit
313: code analysis unit 315: code operation unit
317: code conversion unit 319: code encryption unit
320: packing function unit 330: unpacking function unit
340: memory mapping function 350: OS API mapping function
360: code decoding function 510: host program
520: API wrapper 530: APDU agent
540: interface unit 610: auxiliary execution module
611: execution function unit 613: job management function unit
615: loading function 617: device memory mapping function
619: Device OS API mapping function 621: Device memory management function
623: ROM management function

Claims (26)

저장장치와 통신을 위한 인터페이스부;
상기 저장장치와 APDU(Application Protocol Data Unit) 메시지 교환을 위한 API(Application Protocol Interface)를 제공하며, 호스트 프로그램이 상기 API를 호출하면, 상기 저장장치 내 파일에 대한 연산을 수행하기 위한 데이터를 상기 호스트 프로그램으로부터 수신하여 전달하는 API 래퍼(wrapper);
상기 API 래퍼로부터 데이터를 수신하면, 상기 수신한 데이터를 이용하여 쓰레드(thread)를 생성하여 상기 인터페이스를 통해 상기 저장장치 내 파일에 대한 연산을 수행하고, 상기 연산을 완료하면 상기 수신한 데이터를 상기 API 래퍼로 반환하며, 상기 데이터 처리는 FIFO 큐(queue)를 이용하는 APDU 에이전트;
를 포함하는 것을 특징으로 하는 UMS(USB Mass Storage) 기반 통신을 위한 호스트 단말.
An interface unit for communicating with a storage device;
An application protocol interface (API) for exchanging an application protocol data unit (APDU) message with the storage device; and when a host program calls the API, the host receives data for performing an operation on a file in the storage device. An API wrapper for receiving and passing from a program;
When receiving data from the API wrapper, a thread is created using the received data to perform an operation on a file in the storage device through the interface, and when the operation is completed, the received data is read. An APDU agent that returns to an API wrapper, the data processing using a FIFO queue;
Host terminal for UMS (USB Mass Storage) based communication comprising a.
제1항에 있어서,
상기 API 래퍼와 상기 APDU 에이전트는 UDP 소켓(User Datagram Protocol Socket)을 이용하여 상기 데이터를 송수신하는 것을 특징으로 하는 UMS 기반 통신을 위한 호스트 단말.
The method of claim 1,
The API wrapper and the APDU agent is a host terminal for UMS-based communication, characterized in that for transmitting and receiving the data using a UDP socket (User Datagram Protocol Socket).
제2항에 있어서,
상기 UDP 소켓은 비동기 방식인 것을 특징으로 하는 UMS 기반 통신을 위한 호스트 단말.
The method of claim 2,
The UDP socket is a host terminal for UMS-based communication, characterized in that the asynchronous method.
제1항에 있어서, 상기 API 래퍼는,
상기 데이터를 암호화하여 전송하는 것을 특징으로 하는 UMS 기반 통신을 위한 호스트 단말.
The method of claim 1, wherein the API wrapper,
Host terminal for UMS-based communication, characterized in that for transmitting the data encrypted.
제4항에 있어서, 상기 API 래퍼는,
상기 데이터를 XOR 연산을 이용하여 암호화하는 것을 특징으로 하는 UMS 기반 통신을 위한 호스트 단말.
The method of claim 4, wherein the API wrapper,
Host terminal for UMS-based communication, characterized in that for encrypting the data using an XOR operation.
제1항에 있어서,
상기 FIFO 큐는 원형 큐인 것을 특징으로 하는 UMS 기반 통신을 위한 호스트 단말.
The method of claim 1,
The FIFO queue is a host terminal for UMS-based communication, characterized in that the circular queue.
제1항에 있어서, 상기 APDU 에이전트는,
상기 API 래퍼로부터 수신하는 상기 FIFO 큐에 상기 데이터를 삽입 또는 삭제하는 경우, 뮤텍스(Mutex) 알고리즘을 이용하는 것을 특징으로 하는 UMS 기반 통신을 위한 호스트 단말.
The method of claim 1, wherein the APDU agent,
When inserting or deleting the data in the FIFO queue received from the API wrapper, a host terminal for UMS-based communication, characterized in that using a mutex (Mutex) algorithm.
제1항에 있어서, 상기 APDU 에이전트는,
상기 저장장치 내 파일을 생성하는 경우 숨긴 파일 형태로 생성하는 것을 특징으로 하는 UMS 기반 통신을 위한 호스트 단말.
The method of claim 1, wherein the APDU agent,
Host terminal for UMS-based communication, characterized in that for generating a file in the storage device to create a hidden file form.
제8항에 있어서, 상기 APDU 에이전트는,
상기 저장장치 내 생성한 파일이 삭제된 경우, 상기 생성한 파일을 재 생성한 후, 상기 재 성성한 파일에 대해 읽기 또는 쓰기 연산을 수행하는 것을 특징으로 하는 UMS 기반 통신을 위한 호스트 단말.
The method of claim 8, wherein the APDU agent,
And when the file generated in the storage device is deleted, re-generate the generated file and perform a read or write operation on the regenerated file.
제1항에 있어서,
상기 저장장치 내 파일은 분리 실행 대상 코드 블록을 포함하는 것을 특징으로 하는 UMS 기반 통신을 위한 호스트 단말.
The method of claim 1,
And a file in the storage device includes a separate execution target code block.
제1항에 있어서,
상기 호스트 프로그램은 분리 실행 기반 컨텐츠인 것을 특징으로 하는 UMS 기반 통신을 위한 호스트 단말.
The method of claim 1,
The host program is a host terminal for UMS-based communication, characterized in that the separated execution based content.
제11항에 있어서,
상기 데이터는 패킹된 스택 정보 및 레지스터 정보를 포함하는 것을 특징으로 하는 UMS 기반 통신을 위한 호스트 단말.
The method of claim 11,
And the data includes packed stack information and register information.
호스트 단말이, 호스트 프로그램이 APDU(Application Protocol Data Unit) 메시지 교환을 위한 API(Application Protocol Interface)를 호출하면, 상기 호스트 프로그램으로부터 저장장치 내 파일에 대한 연산을 수행하기 위한 데이터를 수신하는 수신단계;
상기 호스트 단말이 상기 수신한 데이터를 FIFO 큐(queue)에 삽입하는 삽입단계;
상기 호스트 단말이 상기 FIFO 큐에 삽입된 데이터를 읽어 상기 저장장치 내 파일에 대한 연산을 수행하는 연산수행단계;
상기 호스트 단말이 상기 저장장치 내 파일에 대한 연산을 완료하면, 상기 삽입된 데이터를 추출하여 상기 호스트 프로그램으로 반환하는 반환단계;
를 수행하는 UMS(USB Mass Storage) 기반 통신 방법.
A receiving step of receiving, by the host terminal, data for performing an operation on a file in a storage device from the host program when the host program calls an application protocol interface (API) for exchanging an application protocol data unit (APDU) message;
An insertion step of inserting, by the host terminal, the received data into a FIFO queue;
Performing a calculation on a file in the storage device by the host terminal reading data inserted into the FIFO queue;
A return step of extracting the inserted data and returning the inserted data to the host program when the host terminal completes an operation on the file in the storage device;
UMS (USB Mass Storage) based communication method for performing the.
제13항에 있어서,
상기 데이터는 암호화한 것임을 특징으로 하는 UMS 기반 통신 방법.
The method of claim 13,
UMS-based communication method characterized in that the data is encrypted.
제14항에 있어서,
상기 데이터는 XOR 연산을 이용하여 암호화한 것임을 특징으로 하는 UMS 기반 통신 방법.
The method of claim 14,
The data is UMS-based communication method characterized in that the encrypted using an XOR operation.
제13항에 있어서,
상기 FIFO 큐는 원형 큐인 것을 특징으로 하는 UMS 기반 통신 방법.
The method of claim 13,
The FIFO queue is a circular queue, characterized in that the UMS-based communication method.
제13항에 있어서,
상기 FIFO 큐에 상기 데이터를 삽입 또는 삭제하는 경우, 뮤텍스(Mutex) 알고리즘을 이용하는 것을 특징으로 하는 UMS 기반 통신 방법.
The method of claim 13,
When inserting or deleting the data in the FIFO queue, a mutex (Mutex) algorithm, characterized in that for using a communication method.
제13항에 있어서, 상기 연산수행단계는,
상기 호스트 단말이 상기 저장장치 내 파일을 생성하는 연산을 수행하는 경우 숨긴 파일 형태로 생성하는 것을 특징으로 하는 UMS 기반 통신 방법.
The method of claim 13, wherein the operation performing step,
UMS-based communication method characterized in that when the host terminal performs the operation to create a file in the storage device to form a hidden file.
제18항에 있어서, 상기 연산수행단계는,
상기 호스트 단말이 상기 저장장치 내 생성한 파일이 삭제된 경우, 상기 생성한 파일을 재 생성한 후, 상기 재 성성한 파일에 대해 읽기 또는 쓰기 연산을 수행하는 것을 특징으로 하는 UMS 기반 통신 방법.
The method of claim 18, wherein the operation performing step,
If the file generated in the storage device is deleted by the host terminal, regenerate the generated file and perform a read or write operation on the regenerated file.
제13항에 있어서,
상기 저장장치 내 파일은 분리 실행 대상 코드 블록을 포함하는 것을 특징으로 하는 UMS 기반 통신 방법.
The method of claim 13,
The file in the storage device comprises a UMS-based communication method characterized in that it comprises a separate execution target code block.
제13항에 있어서,
상기 호스트 프로그램은 분리 실행 기반 컨텐츠인 것을 특징으로 하는 UMS 기반 통신 방법.
The method of claim 13,
The host program is a UMS based communication method, characterized in that the separated execution based content.
제21항에 있어서,
상기 데이터는 패킹된 스택 정보 및 레지스터 정보를 포함하는 것을 특징으로 하는 UMS 기반 통신 방법.
The method of claim 21,
And the data includes packed stack information and register information.
제20항에 있어서, 상기 분리 실행 대상 코드 블록은,
실행형 컨텐츠의 코드 영역에 존재하는 복수의 베이식 블록으로 이루어진 복수의 베이식 블록 그룹 중에서 실행형 컨텐츠의 중요 경로(critical path) 상에 있는 베이식 블록 그룹인 것을 특징으로 하는 UMS 기반 통신 방법.
The method of claim 20, wherein the separated execution target code block,
UMS-based communication method, characterized in that the basic block group on the critical path of the executable content of the plurality of basic block group consisting of a plurality of basic blocks existing in the code area of the executable content.
제23항에 있어서, 상기 베이식 블록 그룹은,
시작점(entry point)을 통한 제어 신호의 진입 및 상기 복수의 베이식 블록 간의 제어 신호의 이동은 허용하고, 상기 시작점을 제외한 상기 복수의 베이식 블록 내부로의 제어 신호의 진입이 없는 서로 관련된 상기 복수의 베이식 블록의 모임인 것을 특징으로 하는 UMS 기반 통신 방법.
The method of claim 23, wherein the basic block group,
The entry of a control signal through an entry point and the movement of the control signal between the plurality of basic blocks are permitted, and the plurality of basics associated with each other without entry of a control signal into the plurality of basic blocks except for the starting point. UMS-based communication method characterized in that the collection of blocks.
제24항에 있어서, 상기 베이식 블록은,
단일 입력(single input) 및 단일 출력(single output)의 속성과, 외부에서 내부로의 제어 신호의 진입을 허용하지 않는 속성을 갖는 코드 블록인 것을 특징으로 하는 UMS 기반 통신 방법.
The method of claim 24, wherein the basic block,
UMS-based communication method characterized in that the code block having a property of a single input (single input) and a single output (single output), and a property that does not allow the entry of the control signal from the outside to the inside.
제13항 내지 제25항 중 어느 하나의 항에 기재된 방법을 실행하기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록매체.A computer-readable recording medium having recorded thereon a program for executing the method according to any one of claims 13 to 25.
KR1020100032361A 2009-07-30 2010-04-08 Method for communicating based on UMS, host terminal, and medium recorded program thereof KR101366669B1 (en)

Applications Claiming Priority (6)

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

Publications (2)

Publication Number Publication Date
KR20110013197A true KR20110013197A (en) 2011-02-09
KR101366669B1 KR101366669B1 (en) 2014-02-24

Family

ID=43772987

Family Applications (4)

Application Number Title Priority Date Filing Date
KR1020100031121A KR101444070B1 (en) 2009-07-30 2010-04-05 System and method for using memory of host terminal in storage device, host terminal and storage device, and recording medium thereof
KR1020100032361A KR101366669B1 (en) 2009-07-30 2010-04-08 Method for communicating based on UMS, host terminal, and medium recorded program thereof
KR1020100032320A KR101498919B1 (en) 2009-07-30 2010-04-08 System and method for digital rights management based on storage device, and recording medium thereof
KR1020100033191A KR101384536B1 (en) 2009-07-30 2010-04-12 System and method for calling API of host terminal in smart-card, host terminal and smart-card, and recording medium thereof

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020100031121A KR101444070B1 (en) 2009-07-30 2010-04-05 System and method for using memory of host terminal in storage device, host terminal and storage device, and recording medium thereof

Family Applications After (2)

Application Number Title Priority Date Filing Date
KR1020100032320A KR101498919B1 (en) 2009-07-30 2010-04-08 System and method for digital rights management based on storage device, and recording medium thereof
KR1020100033191A KR101384536B1 (en) 2009-07-30 2010-04-12 System and method for calling API of host terminal in smart-card, host terminal and smart-card, and recording medium thereof

Country Status (1)

Country Link
KR (4) KR101444070B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101499890B1 (en) * 2013-05-15 2015-03-06 주식회사 코스콤 Low Latency Framework System

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101397666B1 (en) * 2011-09-30 2014-05-26 주식회사 케이티 Method for controlling access right of application, and user device
KR101490424B1 (en) * 2013-07-17 2015-02-09 양진호 Apparatus and method for transmitting digital contents using termial authentication

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6150979A (en) * 1984-08-16 1986-03-13 Takeda Chem Ind Ltd Pyridine derivative and preparation thereof
US6547150B1 (en) 1999-05-11 2003-04-15 Microsoft Corporation Smart card application development system and method
JP2004070467A (en) 2002-08-02 2004-03-04 Kozo Niimura External storage device and computer system using same
KR100538219B1 (en) * 2002-12-18 2005-12-21 삼성전자주식회사 Virtual memory management method for printer using memory of host computer
KR100496506B1 (en) * 2003-10-21 2005-06-21 주식회사 텔레칩스 Method For Providing Extended USB Functions Using Standard UMS Communication
KR100704701B1 (en) * 2005-05-20 2007-04-06 주식회사 케이티프리텔 Method and Apparatus for editing music source using DRM in PC
KR100739715B1 (en) 2005-07-12 2007-07-13 삼성전자주식회사 Method and apparatus for performing an agreement of web services policy
CN100517236C (en) * 2006-04-03 2009-07-22 北京握奇数据系统有限公司 Intelligent card embedded operation system and its control method
KR100794345B1 (en) * 2006-07-04 2008-01-15 주식회사 모빌탑 Mobile Terminal Having UMS Data Communication Function and Method of Data Transmission Using The Same
US8317096B2 (en) * 2006-07-14 2012-11-27 Microsoft Corporation Smart card terminal side data and management framework
KR20080057015A (en) * 2006-12-19 2008-06-24 삼성전자주식회사 Method, apparatus and medium for playing of digital contents file in mobile terminal
KR101413064B1 (en) * 2007-01-15 2014-07-08 삼성전자주식회사 A method and an apparatus for obtaining right objects of contents in a mobile terminal
KR20090033975A (en) * 2007-10-02 2009-04-07 엘지전자 주식회사 Dispaly device and controlling method with plural memory

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101499890B1 (en) * 2013-05-15 2015-03-06 주식회사 코스콤 Low Latency Framework System

Also Published As

Publication number Publication date
KR101384536B1 (en) 2014-04-11
KR20110013198A (en) 2011-02-09
KR101366669B1 (en) 2014-02-24
KR101444070B1 (en) 2014-09-26
KR20110013196A (en) 2011-02-09
KR101498919B1 (en) 2015-03-09
KR20110013194A (en) 2011-02-09

Similar Documents

Publication Publication Date Title
US10824716B2 (en) Executing native-code applications in a browser
TW476914B (en) Using a high level programming language with a microcontroller
KR101374159B1 (en) System and method for managing rights object using storage device, DRM-server and terminal, and recording medium thereof
EP2549380B1 (en) Information processing device, virtual machine generation method, and application software distribution system
US8996882B2 (en) Execution method of .NET program after encryption
US20070271446A1 (en) Application Execution Device and Application Execution Device Application Execution Method
US8090959B2 (en) Method and apparatus for protecting .net programs
US20080270806A1 (en) Execution Device
US7886363B2 (en) System and method for virtual memory and securing memory in programming languages
JP2007233426A (en) Application execution device
JP2005505040A (en) Removable active application specific media
KR101366669B1 (en) Method for communicating based on UMS, host terminal, and medium recorded program thereof
CN111143879A (en) Android platform SD card file protection method, terminal device and storage medium
CN110232261B (en) Operation method of package file, file processing device and device with storage function
KR102039380B1 (en) Apparatus and Method of Providing Security, and Apparatus and Method of Executing Security for Protecting Code of Shared Object
JP2000347869A (en) Ic card using device, ic card and storage medium
JP2006236376A (en) Ic card usage device, ic card, and storage medium
Staursky Lambda Calculus for Binary Security and Analysis
KR20180100779A (en) ENCRYPTION METHOD FOR Multi-DEX FILE OF ANDROID APPLICATION
Hansmann et al. Introduction to Smart Card Software
KR20100137856A (en) Apparatus and method for software security

Legal Events

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

Payment date: 20180212

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee