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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/161—Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4494—Execution paradigms, e.g. implementations of programming paradigms data driven
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/452—Remote windowing, e.g. X-Window System, desktop virtualisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/453—Help systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/454—Multi-language systems; Localisation; Internationalisation
Abstract
Description
본 발명은 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
본 발명에 있어서, 실행형 컨텐츠(11)는 디지털 형태로 저장되고 유통되는 디지털 저작물로서, 실행되는 장치로 하여금 어떠한 기능을 할 수 있도록 복수의 명령어들을 포함하는 응용프로그램, 게임 프로그램, 각종 소프트웨어를 포함할 수 있다. In the present invention, the
또한, '분리 실행'은 실행형 컨텐츠(11)가 두 개의 서로 다른 장치, 더 구체적으로는 호스트 단말(50)과 저장장치(60)의 연동을 통해 실행되는 것을 의미한다. 이러한 분리 실행을 구현하기 위해서, 호스트 단말(50)에는 코드 영역에서 선택된 코드 블록(이하 분리 실행 대상 코드 블록이라 함)이 제거된 분리 실행 기반 컨텐츠(37)가 저장되고, 저장장치(60)에는 실행형 컨텐츠(11)에서 제거되어 저장장치(60)에서 실행 가능하도록 변환한 분리 실행 대상 코드 블록(35)이 저장된 상태에서 호스트 단말(50)이 분리 실행 기반 컨텐츠(37)에서 제거된 부분(분리 실행 대상 코드 블록)에 대한 결과값을 저장장치(60)에 요청하여 반환 받는 형태로 이루어진다.In addition, "separate execution" means that the
도 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
컨텐츠 제공 단말(10)은 컨텐츠 제공자가 운용하는 단말로서, 네트워크(70)를 통하여 컨텐츠 등록 서버(30)와 통신을 수행하고, 컨텐츠 제공자가 개발한 실행형 컨텐츠(11)를 저장하고 있으며, 컨텐츠 등록 서버(30)로 실행형 컨텐츠(11)를 전송한다.The
컨텐츠 제공 단말(10)은 컨텐츠 등록 서버(30)로부터 내려 받은 프로파일링 및 분석 툴(33)을 실행하여 등록할 실행형 컨텐츠(11))에 대해 동적 프로파일링(dynamic profiling) 및 정적 분석(static analysis)(이하, '프로파일링 및 분석'이라 함)을 통하여 분리 실행 될 실행형 컨텐츠(11)에서 프로파일 데이터(Profile Data)를 생성하고, 코드 블록 선택 규칙을 입력 받으며, 생성한 프로파일 데이터, 입력 받은 코드 블록 선택 규칙 및 분리 실행 될 실행형 컨텐츠(11)를 컨텐츠 등록 서버(30)로 전송한다. The
더 구체적으로, 프로파일링 및 분석 툴(33)은 사용자 우선 (User Preference) 정보를 읽어와 어떠한 부분을 중심으로 프로파일링할 지를 결정한 후, 해당하는 PIN 툴을 로드한다. 그 후, 대상 실행형 컨텐츠(11)를 메모리에 로드하고, PIN 툴을 삽입하여 실행시키고, 그 결과(프로파일 데이터)를 저장한다. More specifically, the profiling and
프로파일 데이터는, 필수적으로, 코드 블록 시작 주소, 코드 블록 종료 주소, 코드 블록 호출 회수(프로파일 중에 호출되는 횟수임), 코드 블록 크기, 및 플로팅 포인트 연산 유무를 포함한다. 이외에, 선택적으로, 코드 블록의 호스트 메모리 참조 회수, 코드 블록의 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
여기서, 호출 빈도는 실행형 컨텐츠(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
이상과 같은 코드 블록 선택 규칙에 따라서 프로파일 데이터의 각 항목에 가중치를 달리 부여함으로써, 추출되는 분리 실행 대상 코드 블록(35)이 달라지며, 그에 따라서 보안 레벨이 달라진다. By differently weighting each item of the profile data according to the above code block selection rule, the extracted execution
한편, 코드 블록 선택 규칙은 실행형 컨텐츠(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
상술한 코드 블록 선택 규칙은, 그 설정 가능한 항목을 더 다양화시킬 수 있음은 물론이다.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
한편, 실행형 컨텐츠(11)는 분리 실행 기반 컨텐츠(37)로 변환되며, 후술하는 DRM서버(40)는 분리 실행 기반 컨텐츠(37)를 암호화된 컨텐츠(41)로 패키징하여 호스트 단말(50)로 제공하므로, 사용자에게 제공되는 객체는 암호화된 컨텐츠(41)가 될 수 있으나, 이하 설명의 편의를 위해 사용자가 웹페이지를 통해 확인하고 구매 등을 결정하는 객체는 실행형 컨텐츠(11)라 한다.Meanwhile, the
컨텐츠 등록 서버(30)는 분리 실행 기반 컨텐츠 구성 모듈(31)을 통해, 실행형 컨텐츠(11) 기반으로 분리 실행 기반 컨텐츠(37)와 분리 실행 대상 코드 블록(35)을 생성하며 상세한 과정은 후술한다. The
컨텐츠 등록 서버(30)는 사용자가 웹페이지를 통해 실행형 컨텐츠(11)를 구매할 수 있도록 실행형 컨텐츠(11) 리스트와 해당 실행형 컨텐츠(11)에 대한 상세 정보를 제공한다. The
구체적으로, 호스트 단말(50)로부터 웹페이지 상에 나타난 실행형 컨텐츠(11)의 다운로드를 요청신호를 수신하면, 컨텐츠 등록 서버(30)는 해당 실행형 컨텐츠(11)의 DD(Download Descriptor)정보를 호스트 단말(50)로 전송한다. Specifically, upon receiving a request signal for downloading the
DD정보는 실행형 컨텐츠(11) 또는 권리객체(43)에 대한 간략 정보 예컨대 파일명, 파일사이즈, 파일제공업체, 해당 실행형 컨텐츠(11) 또는 권리객체(43)의 URL정보 등을 말하며, 실행형 컨텐츠(11) 또는 권리객체(43)의 다운로드 이전에 수신하여 버퍼에 임시 저장되고, 해당 실행형 컨텐츠(11) 또는 권리객체(43) 다운로드 완료 시 자동으로 삭제된다. The DD information refers to brief information about the
또한, 컨텐츠 등록 서버(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
트리거(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
DRM서버(40)는 컨텐츠 등록 서버(30)로부터 수신한 분리 실행 기반 컨텐츠(37)를 패키징하며, 권리객체(43)를 생성, 관리, 발행하고 발행한 권리객체(43)에 대한 내역을 저장하는 서버이다. The
여기서, 권리객체(43)는 사용자가 구매한 실행형 컨텐츠(11)에 대해 실행형 컨텐츠(11)와 사용자 사이 구매 관계 및 사용 권한을 명시하고 있다. Here, the
구체적으로, 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
즉, 암호화된 컨텐츠(41)는 실행형 컨텐츠(11)에서 분리 실행 대상 코드 블록(35)을 스터브 코드로 대체한 분리 실행 기반 컨텐츠(37)를 패키징한 결과물이다. That is, the
여기서, 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
또한, DRM서버(40)는 컨텐츠 등록 서버(30)로부터 사용자가 구매, 재구매 하고자 하는 권리객체(43)에 대한 구매 또는 트리거를 요청 받으면, 해당 권리객체(43)에 대한 트리거 및 DD정보를 생성하여 컨텐츠 등록 서버(30)로 전송하고, 컨텐츠 등록 서버(30)로부터 사용자가 환불 또는 양도 하고자 하는 권리객체(43)에 대한 환불 또는 양도 트리거를 요청 받으면, 해당 권리객체(43)에 대한 트리거를 생성하여 컨텐츠 등록 서버(30)로 전송한다.In addition, the
이어, 호스트 단말(50)로부터 컨텐츠 다운로드를 요청 받으면 해당 암호화된 컨텐츠(41)를 전송하고, 권리객체(43)의 구매 또는 재구매 요청을 받으면 해당 권리객체(43)를 전송하며, 권리객체(43)의 환불 또는 양도 요청을 받으면 저장장치(60)에 저장된 권리객체(43)의 삭제를 요청한다. Subsequently, when the content download request is received from the
호스트 단말(50)은 실행형 컨텐츠(11)의 실행이 가능한 독립된 CPU(Central Processing Unit)를 가진 컴퓨팅 장치, 예컨대 PC, 노트북, 워크스테이션, 키오스크(Kiosk), ATM(Automated Teller Machine), PDA(Personal Digital Assistants) 등을 통칭하며, 다수의 사용자들에 의해 접근이 자유로운 공용 컴퓨터를 포함한다. 호스트 단말(50)은 네트워크(70)를 통하여 컨텐츠 등록 서버(30) 및 DRM서버(40)와 통신을 수행하고, 유무선 인터페이스를 매개로 연결된 저장장치(60)와 통신을 수행한다. The
여기서 유무선 인터페이스는 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
또한, 사용자가 권리객체(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
예를 들어, 호스트 단말(50)의 사용자는 사용하고자 하는 실행형 컨텐츠(11)에 대한 권리객체(43)를 이미 보유하고 있어 해당 실행형 컨텐츠(11)에 대한 암호화된 컨텐츠(41)만을 필요로 할 수 있으며, 처음 실행형 컨텐츠(11)를 구매하는 경우나 권리객체(43)가 만료되어 재구매하는 경우와 같이 해당 실행형 컨텐츠(11)에 대한 권리객체(43)만을 필요로 할 수 있고, 또한 암호화된 컨텐츠(41) 및 권리객체(43) 모두를 필요로 할 수 있다.For example, the user of the
또한, 호스트 단말(50)은 암호화된 컨텐츠(41) 실행을 시작하면, 저장장치(60)에 권리객체(43)의 저장 여부를 확인한다. 저장장치(60)에 권리객체(43)가 저장되어 있는 경우, 저장장치(60)로부터 권리객체(43)에 포함된 복호화키를 요청하여 암호화된 컨텐츠(41)를 복호화하게 된다. 반면, 저장장치(60)에 권리객체(43)가 저장되어 있지 않은 경우 컨텐츠 등록 서버(30)로 구매 또는 재구매 요청신호를 전송할 수 있다. 또한, 저장장치(60)에 분리 실행 대상 코드 블록(35)이 저장되어 있는 경우, 호스트 단말(50)은 복호화키를 이용하여 암호화된 컨텐츠(41)를 분리 실행 기반 컨텐츠(37)로 복호화한 후, 유무선 인터페이스를 통해 연결된 저장 장치(60)와 연동하여 암호화된 컨텐츠(41)에 대한 분리 실행을 수행할 수 있다. In addition, when the
저장장치(60)는 프로세서를 내장하고 있는 각종 휴대식 장치, 예컨대 USB 메모리, 플래시 메모리 카드, 이에 상응하는 각종 이동식, 휴대식 저장매체(예컨대, SD(Secure Digital) 메모리 카드, microSD 메모리 카드, ISO 7816 표준의 휴대형 저장장치 등)를 통칭한다. 저장장치(60)는 유무선 인터페이스를 매개로 호스트 단말(50)과 연결되며, 호스트 단말(50)에 설치된 암호화된 컨텐츠(41)에 대한 권리객체(43)를 저장한다. The
상술한 바와 같이, 권리객체(43)에는 암호화된 컨텐츠(41)를 복호화 할 수 있는 복호화키를 포함하며, 이때 분리 실행 기반 컨텐츠(37)에 대한 분리 실행 대상 코드 블록(35)을 포함할 수 있다. 이때, 저장장치(60)는 호스트 단말(50)의 요청에 따라 분리 실행 대상 코드 블록(35)에 대한 연산을 수행하여 결과값을 호스트 단말(50)로 반환한다.As described above, the
상술한 분리 실행 기반 컨텐츠(37)에 대한 기본 개념을 도 2 및 도 3을 참조하여 설명한다.The basic concept of the above-described separation execution based
도 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
여기서, 베이식 블록(25)은 단일 입력(single input) 및 단일 출력(single output)의 속성을 갖는 명령어의 열(sequence of instruction)로서, 외부에서 내부로의 진입을 허용하지 않는 속성을 갖는 코드 블록으로 정의할 수 있다. 즉 베이식 블록(25)은 항상 시작부터 끝까지 한번에 실행되는 연속적인 문장(코드의 모임)을 의미하며, 중간에 흐름 제어로 인해 실행이 중지되지 않는 문장 그룹이다.Here, the
도 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
분리 실행 대상 코드 블록(35)은 실행형 컨텐츠(11)에 대한 프로파일링 및 분석을 통하여 실행형 컨텐츠(11)의 코드 영역(21)에서 추출된 복수의 베이식 블록 그룹(27)을 포함한다. 바람직하게, 분리 실행 대상 코드 블록(35)은 분리 실행 대상 코드 블록(35)의 시작점(entry point)을 통한 제어 신호의 진입 및 베이식 블록(25) 간의 제어 신호의 이동은 허용하지만, 분리 실행 대상 코드 블록(35)의 시작점을 제외한 베이식 블록(25)으로의 제어 신호의 진입이 없는 서로 관련된 복수의 베이식 블록(25)을 포함하는 베이식 블록 그룹(27)이다. The separated execution
이와 달리 시작점을 제외한 베이식 블록(25)으로의 제어 신호의 진입이 있는 베이식 블록 그룹(27)을 분리 실행 대상 코드 블록(35)으로 선정할 경우, 해당 분리 실행 대상 코드 블록(35)을 추출한 후 삽입되는 스터브 코드(26)에 시작 부분이 아닌 중간으로 제어 신호가 진입할 수 있으며, 이 경우 스터브 코드(26)는 해당 제어 신호에 대한 처리를 수행하지 못하여 결국 실행형 컨텐츠(11)의 실행이 중지되거나 에러가 발생될 수 있다. On the contrary, when the
상술한 분리 실행 대상 코드 블록은 다음과 같이 추출될 수 있다.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
더하여, 선정된 복수의 베이식 블록 그룹(27) 중에서, 베이식 블록 그룹(27)의 내부로 진입하는 제어 신호가 발생하면, 제어 신호의 명령어 주소를 기준으로 해당 베이식 블록 그룹(27)을 분할하여 재정의한다. 이때 재정의 대상이 되는 베이식 블록 그룹(27)은 제어 신호의 명령어 주소를 기준으로 이전의 제1 베이식 블록 그룹과, 제어 신호의 명령어 주소를 포함하는 이후의 제2 베이식 블록 그룹으로 재정의한다.In addition, when a control signal entering the
이와 같은 재정의 과정을 반복함으로써, 최종적으로 단일 입력 및 단일 출력의 속성과, 외부에서 내부로의 진입을 허용하지 않는 속성을 갖는 복수의 베이식 블록(25)을 포함하는 베이식 블록 그룹(27)을 정의한다.By repeating this redefinition process, a
이어서 복수의 베이식 블록 그룹(27) 중에서 분리 실행 대상 코드 블록(35)을 선정하여, 분리 실행 대상 코드 블록(35)을 코드 영역(21)에서 분리하고, 분리 실행 대상 코드 블록(35) 대신에 스터브 코드(26)를 삽입한다. Subsequently, the separation execution
이때 분리 실행 대상 코드 블록(35)은 복수의 베이식 블록 그룹(27) 중에서 실행형 컨텐츠(11)의 중요 경로(Critical path) 상에 있는 베이식 블록 그룹(27)을 선택하는 것이 바람직하다. 또한, 복수의 베이식 블록 그룹(27) 중에서 콜 횟수, 크기 및 실행 시간을 함께 고려하여 분리 실행 대상 코드 블록(35)을 선출할 수 있다. 예컨대 콜 횟수가 많고, 크기가 작고, 실행 시간이 짧은 베이식 블록 그룹(27)을 분리 실행 대상 코드 블록(35)으로 선출한다.In this case, the separate execution
이에 따르면, 실행형 컨텐츠(11)에 있어서, 중요 경로 상에 존재하고, 콜 횟수가 많고 크기가 작고, 실행 시간이 짧은 베이식 블록 그룹(27)을 보안을 위한 분리 실행 대상 코드 블록(35)으로 선정하여, 분리 실행 대상 코드 블록(35)이 실행형 컨텐츠(11)에서 분리 실행되도록 함으로써, 실행형 컨텐츠(11)의 복제 방지와 관련된 보안 성능을 향상시킬 수 있다.According to this, in the
또한, 동적 프로파일링(dynamic profiling)을 통하여 수집한 코드 영역(21)의 기초 정보를 이용한 정적 분석(static analysis)을 수행하여 베이식 블록 그룹(27)을 추출함으로써, 실행형 컨텐츠(11)의 코드 영역(21)의 분석 범위를 확장하여 베이식 블록 그룹(27)의 추출율을 향상시킬 수 있다.In addition, by performing a static analysis using the basic information of the
또한, 한 번 정의된 베이식 블록 그룹(27)에 대해서 재정의할 수 있는 유연성을 제공함으로써, 분리 실행 대상 코드 블록(35)의 후보가 될 수 있는 단일 입력(single input) 및 단일 출력(single output)을 갖는 베이식 블록 그룹(27)을 생성할 수 있고, 시작점(entry point)을 제외한 내부로의 제어 신호의 진입이 있는 부적합한 베이식 블록 그룹(27)이 분리 실행 대상 코드 블록(35)으로 선출되는 것을 억제할 수 있으며, 그 결과, 분리 실행 대상 코드 블록(35)을 분리하여 실행하는 중의 오류 발생을 억제할 수 있다.In addition, by providing the flexibility to redefine the once defined
도 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
도 1, 도 4 및 도 5를 참조하면, 분리 실행 기반 컨텐츠 구성 모듈(31)은, 모듈 제어부(311)와, 코드 분석부(313)와, 코드 조작부(315)와, 코드 변환부(317) 및 코드 암호화부(319)를 포함한다. 1, 4, and 5, the separation execution based
모듈 제어부(311)는 분리 실행 기반 컨텐츠(37)의 생성을 위한 전체적인 과정을 제어한다. 즉, 입력된 분리 실행될 실행형 컨텐츠(11)에서 분리 실행 대상 코드 블록(35)을 선택하여, 선택한 분리 실행 대상 코드 블록(35)을 실행형 컨텐츠(11)에서 분리하고, 분리 실행 대상 코드 블록(35)의 분리 실행이 가능하도록 실행형 컨텐츠(11)를 변환하며, 분리된 분리 실행 대상 코드 블록(35)을 저장장치(60)에서 처리 가능한 형태로 변환하고, 실행형 컨텐츠(11)의 코드 영역에서 초기 코드 블록을 추출해 초기 코드 블록을 암호화하여 실행형 컨텐츠(11)의 실행시 암호화된 초기 코드 블록을 복호화하여 실행하도록 코드 분석부(313)와 코드 조작부(315)와 코드 변환부(317) 및 코드 암호화부(319)를 제어한다.The
코드 분석부(313)는, 실행형 컨텐츠(11)의 코드 영역을 분석하여, 코드 영역으로부터 하나 이상의 분리 실행 대상 코드 블록(35)을 선택한다. 더 구체적으로, 코드 분석부(313)는 컨텐츠 제공 단말(10)로부터 수신한 분리 실행될 컨텐츠, 컨텐츠에 대한 프로파일 데이터(Profile Data) 및 코드 블록 선택 규칙을 입력 받아, 프로파일 데이터 및 코드 블록 선택 규칙을 기반으로 컨텐츠의 코드 영역에서 분리 실행 대상 코드 블록(35)을 결정한다.The
구체적으로, 코드 분석부는 프로파일 데이터 및 분리 실행 대상 코드 블록(35)의 선택 규칙을 내부 데이터 포맷으로 변환한다. 예를 들어, 프로파일 데이터 및 규칙은 XML 형태로 구현될 수 있는데, 이 경우, 프로파일 데이터 및 분리 실행 대상 코드 블록의 선택 규칙은 XML 형태에서 내부 데이터 포맷으로 변환하는 것으로서, XML 파서가 된다. 이어, 프로파일 데이터 및 코드 블록 선택 규칙을 로드하며, 로드된 프로파일 데이터 및 코드 블록 선택 규칙에 근거하여, 실행형 컨텐츠(11)의 코드 영역에서 하나 이상의 분리 실행 대상 코드 블록(35)을 선택한다.Specifically, the code analyzer converts the selection rule of the profile data and the separation
또한, 코드 분석부(313)는 분리 실행 대상 코드 블록(35)의 선택 시 기준이 될 코드 블록 선택 규칙을 갱신한다. 코드 블록 선택 규칙은 프로파일 데이터의 정보 중에서 어느 항목에 가장 큰 비중을 두어 분리 실행 대상 코드 블록을 선택할 것인지를 의미하는 것으로서, 앞서 설명한 바와 같이, 프로파일 데이터의 각 항목 별 가중치로 나타낼 수 있다. 그런데, 이러한 코드 블록 선택 규칙은, 컨텐츠의 종류, 크기 등에 따라서 변경될 가능성이 크기 때문에 선택된 분리 실행 대상 코드 블록(35)에 대한 검증 결과를 피드백 받아 분리 실행 대상 코드 블록의 선택 규칙을 지속적으로 갱신한다. 예를 들어, 선택된 분리 실행 대상 코드 블록(35)에 대한 테스트를 진행하여 실행 속도 등의 이슈가 발생하면, 이를 기준으로 분리 실행 대상 코드 블록(35)의 선택 규칙의 세부적인 가중치를 변경한다. In addition, the
코드 조작부(315)는, 코드 분석부(313)에서 선택된 분리 실행 대상 코드 블록(35)과 분리 실행 대상 코드 블록이 분리된 분리 실행 기반 컨텐츠(37)를 연결하도록 실행형 컨텐츠(11)를 변환한다. The
더 구체적으로 코드 조작부(315)는, 분리된 분리 실행 대상 코드 블록(35)과의 상호 연동을 위한 보조 실행 기능부를 생성하고, 분리 실행 대상 코드 블록(35)이 맨 앞에서 보조 실행 기능부로 점프한 후 보조 실행 기능부의 실행이 완료되면 분리 실행 대상 코드 블록(35) 다음으로 실행되어야 할 위치로 점프하는 스터브 코드를 생성하여 분리 실행 대상 코드 블록(35)의 위치에 삽입한다. More specifically, the
여기서, 보조 실행 기능부는 스터브 코드로부터 전달되는 파라미터, 즉, 스택과 레지스터의 정보를 패킹하여 분리 실행 대상 코드 블록(35)을 호출하고, 호출이 종료되면 분리 실행 대상 코드 블록(35)의 결과값으로 스택과 레지스터의 정보를 리스토어한다.Here, the auxiliary execution function calls the separate execution
예를 들어, 저장 장치(60)에 저장되는 분리 실행 대상 코드 블록(35)은 저장 장치(60)의 플랫폼에 기반한 Java 바이트코드, 더 구체적으로는 Java 애플릿 및 ARM 인스트럭션을 내장한 Java 애플릿으로 구현되는데, 이때 보조 실행 기능부는 상술한 Java 애플릿을 실행하는 Native launcher로 구현된다. 더하여, 보조 실행 기능부는 필요 시에만 로딩되어 실행될 수 있도록 DLL(Dynamic Link Library) 파일로 구현된다. 이러한 보조 실행 기능부에 대해서는 다음에 더 구체적으로 설명하기로 한다.For example, the separate
도 5를 참조하면, (a)는 스터브 코드의 삽입 전의 실행형 컨텐츠(11), 즉, 분리 실행 대상 코드 블록(35)을 나타내며, (b)는 분리 실행 대상 코드 블록(35) 위치에 삽입된 스터브 코드를 나타낸 것이다.Referring to FIG. 5, (a) shows the
도 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
코드 조작부(315)는, 스터브 코드의 삽입과 더불어, 보조 실행 기능부의 로딩을 위하여 임포트 영역(idata section)의 임포트 테이블(import table) 내에 보조 실행 기능부(Native Launcher DLL)을 삽입한다. 임포트 테이블에 대한 보조 실행 기능부의 삽입은, 호스트 단말(50)에서 분리 실행 기반 컨텐츠(37)가 구동될 때, OS의 로더(loader)에 의하여 보조 실행 기능부가 로딩되도록 하기 위한 것이다.The
이러한 방식을 통하여, 분리 실행 기반 컨텐츠(37)의 소스 코드 수정 없이, 분리된 분리 실행 대상 코드 블록(35)과의 상호 작용이 가능해진다.In this way, the interaction with the separated separate execution
코드 변환부(317)는 분리 실행 기반 컨텐츠(37)에서 분리된 분리 실행 대상 코드 블록(35)을 저장장치(60)에서 실행 가능한 형태로 변환한다. 이때, 분리 실행 대상 코드 블록(35)은, 분리 실행 속도의 향상을 위하여, 저장장치(60)에 구비된 프로세서의 명령어로 변환되는 것이 바람직하다. 예를 들면, 저장 장치(60)가 Java 기반 스마트 카드인 경우, 분리 실행 대상 코드 블록(35)은, Java 바이트 코드로 변환되는데, 특히, ARM 명령어를 내장한 Java 바이트 코드로 변환된다. 즉, 호스트 단말(50)이 X86 계열의 프로세서 구조를 가지며, 저장장치(60)가 ARM 구조의 프로세서로 이루어진 경우, 코드 변환부(317)는, 분리 실행 대상 코드 블록(35)의 X86 명령어를 Java 바이트코드 및 ARM 명령어를 내장한 Java 바이트코드로 변환한다.The
이때, 코드 변환부(317)는, 실행형 컨텐츠(11)의 분리 실행을 다양한 프로세서 환경에 적용할 수 있도록, 분리 실행 대상 코드 블록(35)을 복수의 머신 코드로 변환하는 것이 바람직하다. 이를 위하여, 코드 변환부(317)는 compiler infrastructure, 특히 LLVM(Low Level Virtual Machine)를 이용하여 구현될 수 있다. LLVM을 이용할 경우, 검증된 다양한 오픈 소스 솔루션을 이용할 수 있으며, 타겟, 즉, 저장장치(60)의 프로세서와는 독립적으로 코드 최적화가 가능하고, 코드 재사용성이 높아, 다양한 소스를 다양한 머신 코드로 변환할 수 있다.At this time, the
구체적으로 코드 변환부(317)는 소스, 즉, 호스트 단말(50)의 플랫폼에 기반한 언어로 구성된 분리 실행 대상 코드 블록을 중간 단계 언어(LLVM IR: LLVM Intermediate Representation)로 변환하고, 이어 중간 단계 언어로 변환된 분리 실행 대상 코드 블록(35)을 최적화하며, 마지막으로 최적화된 중간 단계 언어의 분리 실행 대상 코드 블록(35)을 저장 장치(140)의 프로세서에 기반한 복수의 머신 코드, 예를 들어, Java 바이트 코드, ARM 명령어로 변환한다.In detail, the
코드 암호화부(319)는, 모듈 제어부(311)의 제어에 따라서 선정된 초기 코드 블록을 특정 키로 암호화하여, 해당 실행형 컨텐츠(11)의 실행시 특정 키를 통해 초기 코드 블록을 복호화하여 실행하도록 실행형 컨텐츠(11)를 변환한다. The
구체적으로 코드 암호화부(319)는, 선정된 초기 코드 블록을 지정된 키로 암호화한 후, 암호화된 초기 코드 블록을 실행형 컨텐츠(11)에 추가 생성된 보안 영역에 삽입하고, 초기 코드 블록의 위치에는 키를 획득하여 암호화된 초기 코드 블록을 복호화한 후 실행시키는 보조 실행 기능부를 로드하게 하는 시동 스터브 코드를 삽입한다.Specifically, the
보다 구체적으로, 코드 암호화부(319)는, 암호화되어 이동될 초기 코드 블록 대신에 암호화된 초기 코드 블록의 복호화한 후 실행시키는 보조 실행 기능부의 함수를 호출하는 시동 스터브 코드를 생성하여, 초기 코드 블록의 위치에 삽입한다. 코드 암호화부(319)는, 실행형 컨텐츠(11)에 보안 영역(secure section)을 새로 생성하고, 선정된 초기 블록 코드를 지정된 키로 암호화한 후, 생성된 보안 영역에 암호화된 초기 코드 블록을 적재한다. More specifically, the
이때 암호화에 사용되는 키는 실행형 컨텐츠(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
이와 같이 코드 암호화부(319)를 통하여 암호화된 초기 코드 블록은 이후, 분리 실행 대상 코드 블록(35)의 경우와 마찬가지로, 보조 실행 기능부에 의하여 복호화되고, 온 메모리(On-Memory) 상태에서 구동(Running)된다. 이에 의하면, 실행형 컨텐츠(11)에 대하여, 초기 구동 시 1단계 보안 기술을 적용하고, 분리 실행을 통해 2단계 보안 기술을 적용함으로써, 실행형 컨텐츠(11)의 불법 사용 및 복제를 더 강력하게 차단할 수 있게 된다.The initial code block encrypted through the
도 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
이를 위하여 보조 실행 기능부(300)는, 인터페이스 기능부(310)와, 패킹(packing) 기능부(320)와, 언패킹(unpacking) 기능부(330)와, 메모리 매핑 기능부(340)와, OS API 매핑 기능부(350)를 포함하고, 더하여, 코드 복호화 기능부(360)를 더 포함할 수 있다.To this end, the auxiliary
인터페이스 기능부(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
패킹 기능부(320)는 스터브 코드(234)로부터 스택과 레지스터의 정보를 전달받아 패킹하여, 인터페이스 기능부(310)를 통해 분리 실행 대상 코드 블록(35)으로 전달한다. 여기서, 스택 정보는, SP 레지스터에 의해 지정된 스택 포지션에서부터 시작하여 파라미터로 이용되는 스택 값들의 모임이고, 레지스터 정보는, 스터브 코드(234)에서 분리 실행 대상 코드 블록(35)를 호출할 때 전달되는 레지스터 정보이다.The
언패킹 기능부(330)는, 인터페이스 기능부(310)를 통해 분리 실행 대상 코드 블록(35)으로부터 전달된 패킹된 데이터를 언패킹하여, 스터브 코드(234)로 반환한다. 언패킹 기능부(330)는, 분리 실행 대상 코드 블록(35)의 반환 값이 Primitive Data Type인 경우에는 단순히 해당 레지스터의 값에 반환 값을 설정하고, 반환 값이 메모리 주소인 경우, 해당 주소에 해당하는 값들을 반환 값에 따라서 변경한다.The unpacking
메모리 매핑 기능부(340)는, 인터페이스 기능부(310)를 통해 분리 실행 대상 코드 블록(35)에서 전달된 데이터를 호스트 단말(50)의 메모리에 기록하거나, 호스트 단말(50)의 메모리에서 데이터를 디스패치하여 분리 실행 대상 코드 블록(35)으로 전달한다. 메모리 매핑 기능부(340)를 통해 저장 장치(60)의 분리 실행 대상 코드 블록(35)이 호스트 단말(50)의 메모리를 참조하여 실행될 수 있다.The memory
OS API 매핑 기능부(350)는, 인터페이스 기능부(310)를 통해 분리 실행 대상 코드 블록(35)으로부터 API 명 및 파라미터 값을 전달받아, 호스트 단말(50)의 OS API를 호출하고, 그 결과를 반환 받아 분리 실행 대상 코드 블록(35)으로 전달한다. 이에 의하여, 저장 장치(60)에 저장된 분리 실행 대상 코드 블록(35)이 호스트 단말(50)의 OS API를 호출하여 그 결과를 반환 받을 수 있다.The OS API
그리고, 코드 복호화 기능부(360)는, 저장장치(60)로부터 특정 키를 획득하여 보안 영역(270)에 적재된 암호화된 초기 코드 블록(271)을 복호화하고, 복호화된 초기 코드 블록을 실행시킨다. The
도 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
도 6 및 도 7을 참조하여, 보조 실행 기능부(300)를 이용한 분리 실행 동작을 설명하면 다음과 같다.6 and 7, the separation execution operation using the auxiliary
먼저, 분리 실행 기반 컨텐츠(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
이에 의하면, 분리 실행 기반 컨텐츠(37) 및 분리 실행 대상 코드 블록(35)이 호스트 단말(50)과 저장 장치(60)의 연동을 통해 정상적으로 동작할 수 있게 된다.According to this, the separation execution based
도 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
보조 실행 모듈(610)은 실행 기능부(611), 작업 관리 기능부(613), 로딩 기능부(615), 장치 메모리 매핑 기능부(617), 장치 OS API 매핑 기능부(619), 장치 메모리 관리 기능부(621), ROM 관리 기능부(623)을 포함한다. The
로딩 기능부(615)는 분리 실행 대상 코드 블록(35)을 로드하여, fix되지 않은 reference들을 모두 fix하고(이하 Linking이라고 함) reference들을 메모리 상의 임의의 영역에 로드한다. unresolved reference를 Linking하기 위해서는 reference information을 참조한다.The
실행기능부(611)는 호스트 단말(50)과 통신을 담당하여, 호스트 단말(40)로부터 수신한 데이터를 파싱하여 해당 내용을 실행 후, 다시 호스트 단말(50)로 전송한다. 이때, 프로토콜은 보조 실행 기능부(300)과 보조 실행 모듈(610)사이에 규격화 시켜서 처리할 수 있다.The
구체적으로, RO에 포함된 분리 실행 대상 코드 블록(35)을 전달 받아, 로딩 기능부(615)를 통해 분리 실행 대상 코드 블록(35)을 로드하고, IP(interrupt priority) 레지스트를 조작하여 분리 실행 대상 코드 블록(35)의 시작점(entry point)를 강제로 호출해 실행한다. 또한, 장치 메모리 매핑 기능부(619) 또는 장치 OS API 매핑 기능부(621)의 호출로 인해 호스트 단말(50)의 응답을 기다려야 하는 경우, 현재 실행 중이던 인스트럭션 포인터(Instruction Pointer) 및 레지스터 값들을 컨텍스트(context) 형태로 임시 저장하고 있다가, 호스트 단말(50)로부터 응답이 도착하면, 해당 위치(position)부터 재 실행한다.Specifically, the separation execution
장치 메모리 매핑 기능부(617)는 로딩 기능부(615)에 의해 로드된 명령어(instruction)가 호스트 단말(50)의 메모리 참조하는 경우 패킹하여 호스트 단말(50)의 보조 실행 기능부(300)에 전달하며, 보조 실행 기능부(300)로부터 응답을 수신하는 경우 언패킹하여 실행 기능부(611)에 전달한다.The device
여기서, 로딩 기능부(615)는 초기 로드하는 과정에서 호스트 단말(50)의 메모리 참조가 있는 코드가 장치 메모리 매핑 기능부(617)을 호출하도록 링크(link)하며, 이에 따라 로드된 코드에서 호스트 단말(50)의 메모리 참조를 하는 경우 장치 메모리 매핑 기능부(617)를 호출하게 된다.Here, the
장치 OS API 매핑 기능부(619)는 로딩 기능부(615)에 의해 로드된 명령어(instruction)가 호스트 단말(50)의 OS API를 호출하는 경우 패킹하여 호스트 단말(50)의 보조 실행 기능부(300)에 전달하며, 보조 실행 기능부(300)로부터 응답을 수신하는 경우 언패킹하여 실행 기능부(611)에 전달한다.The device OS
여기서, 로딩 기능부(615)는 초기 로드하는 과정에서 호스트 단말(50)의 OS API를 호출하는 코드가 장치 OS API 매핑 기능부(619)을 호출하도록 링크(link)하며, 이에 따라 로드된 코드에서 호스트 단말(50)의 OS API를 호출하는 경우 장치 OS API 매핑 기능부(619)를 호출하게 된다.Here, the
작업 관리 기능부(613)는 호스트 단말(50)에서 실행되는 분리 실행 기반 컨텐츠(37)는 복수일 수 있으며, 복수의 분리 실행 기반 컨텐츠(37)가 동시에 실행되는 경우 저장장치(60)의 Task와 1:1로 매칭되도록 Task를 생성한다. 또한, 실행 기능부(611)와 보조 실행 모듈(610)의 타 구성요소와 연결한다.The task
장치 메모리 관리 기능부(621)는 보조 실행 모듈(610)이 실행되면, 저장장치(60) OS로부터 보조 실행 모듈(610)에게 할당한 Heap의 시작 번지와 사용 가능한 메모리 사이즈를 수신하여, 분리 실행 대상 코드 블록(35)의 실행을 위한 메모리를 할당, 해제, 데이터 삽입, 삭제 등을 한다. 이때, 할당되는 메모리는 고정되며, 보조 실행 모듈(610)만 사용 가능하도록 할당되는 것이 바람직하다. 또한, 메모리 관리 기능부(621)는 분리 실행 대상 코드 블록(35)이 참조하는 메모리 사이즈가 저장장치(60)의 가용 메모리 사이즈보다 큰 경우 작업 관리 기능부(613)에게 요청하여 호스트 단말(50)의 메모리를 할당 받는다.When the
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
도 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
인터페이스부(540)는 유선 또는 무선으로 접속된 저장장치(60)와 데이터 송수신을 수행하기 위한 인터페이스를 가진다. The
API 래퍼(520)는 호스트 단말(50)과 저장장치(60)간에 APDU(Application Protocol Data Unit) 통신을 위한 API(Application Protocol Interface)를 제공하며, 호스트 프로그램(510)에서 API를 호출하여 사용할 수 있도록 인터페이스를 제공한다. The
여기서 호스트 프로그램(510)은 호스트 단말(50)에서 실행될 수 있는 문서 작업 프로그램, 멀티미디어 재생 프로그램 등을 포함한 각종 프로그램을 말하며, 이때, 응용프로그램으로 한정되는 것은 아니다.Here, the
구체적으로 API 래퍼(520)는 호스트 프로그램(510)을 실행하는 중에, 호스트 프로그램(510) 내에서 혹은 사용자의 입력을 받아 저장장치(60)에 파일 생성, 파일 읽기 또는 파일 쓰기 등 파일에 대한 연산을 수행하기 위해 API 래퍼(520)에서 제공하는 API를 호출을 수신하면, API 래퍼(520)는 호출된 API를 제공하고, 호스트 프로그램(510)으로부터 저장장치(60) 내 파일에 대한 연산을 수행하기 위한 데이터를 호스트 프로그램(510)으로부터 수신하여 APDU 에이전트(530)로 전달한다. In detail, the
API 래퍼(520)는 APDU 에이전트(530)와 같은 호스트 단말(50) 내에 존재하므로, IPC(inter process communication) 통신으로 데이터를 주고 받으며 이때, UDP 소켓(User Datagram Protocol Socket)을 이용하여 통신할 수 있다. UDP 소켓을 이용하여 통신하는 경우, APDU 에이전트(530)가 UDP 서버로 기능을 하며, API 래퍼(520)이 UDP 클라이언트로 기능을 한다. Since the
이때, API 래퍼(520)와 APDU 에이전트(530)간에 UDP 소켓을 이용하여 통신을 수행할 때, 악성 툴을 이용하여 송수신되는 패킷을 캡쳐하는 경우 데이터가 노출될 우려가 있어 상호 데이터를 송수신할 때 암호화하여 전송하고, 데이터를 수신한 후에 복호화하여 데이터를 확인할 수 있다. 데이터를 암복호화하는 알고리즘은 동일한 키 값을 가지고 XOR 연산을 하여 암복호화할 수 있으나, 이에 한정되는 것은 아니다. At this time, when performing communication between the
또한, API 래퍼(520)는 APDU 에이전트(530)와 통신을 할 때, 소켓을 생성한 후에는 데이터를 송신하거나 수신하는 등 소켓의 상태 변화가 있기 전까지 블록(block) 상태를 유지하는 것이 바람직하며, 이를 위해 비동기 방식 소켓 이벤트를 이용할 수 있다. In addition, when the
APDU 에이전트(530)는 API 래퍼(520)으로부터 수신한 데이터를 이용하여 인터페이스부(540)를 통해 저장장치(60)와 통신하여 파일 연산을 수행하고, 처리된 데이터를 API 래퍼(520)로 반환한다. The
이때, APDU 에이전트(530)도 API 래퍼(520)와 UDP 소켓을 이용하여 통신을 수행하며, 비동식 방식인 소켓 이벤트를 이용할 수 있다. In this case, the
APDU 에이전트(530)는 저장장치(60)간의 통신은 1:1로 수행되므로, API 래퍼(520)로부터 먼저 수신한 데이터에 대해서 먼저 처리가 이루어져야 하며, 이를 위해 FIFO(First In First Out) 구조인 큐(queue)를 이용하여, API 래퍼(520)로부터 먼저 수신한 데이터를 먼저 저장한다. Since the
이때, APDU 에이전트(530)는 큐를 효과적으로 관리하기 위해 원형큐를 이용할 수 있으며, 수신하여 큐에 삽입한 데이터는 데이터에 대한 처리가 완료될 때까지 삭제되지 않는다. In this case, the
구체적으로, APDU 에이전트(530)는 API 래퍼(520)로부터 수신한 데이터를 순서대로 큐에 저장하고, 큐에 저장된 데이터를 읽고, 읽은 데이터를 이용해 하나의 쓰레드(thread)를 생성하여 저장장치(60) 내 파일에 대한 연산을 수행하고, 저장장치(60) 내 파일 연산이 완료된 후에 처리된 데이터, 즉 API 래퍼(520)로부터 수신하여 큐에 삽입되었던 데이터를 추출(Dequeue)하여 API 래퍼(520)로 반환한다.In detail, the
이때, APDU 에이전트(530)는 API 래퍼(520)로부터 수신하는 여러 데이터, 즉 API 래퍼(520)로부터 수신하는 파일 연산에 대한 복수의 요청에 대해 동기화함이 바람직하며, 이를 위해 FIFO 큐에 데이터를 삽입하거나, 삽입된 데이터를 삭제할 때 뮤텍스(Mutex) 알고리즘을 이용할 수 있다.In this case, the
APDU 에이전트(530)는 생성한 쓰레드를 실행하여 인터페이스부(540)를 통해 저장장치(60)와 통신하며 저장장치(60) 내에서 파일 생성(create), 파일 삭제(delete), 파일 읽기(read), 파일 쓰기(write), 파일 위치 재설정(seek), 파일 절단(truncate) 등 파일 연산을 수행한다. 저장장치(60)는 호스트 단말(50)에서 드라이브명으로 표시되며, 이때 드라이브에서 파일은 사용자가 실수나 또는 임의로 파일을 삭제하는 것을 방지하기 위해 숨긴 파일 형태로 표시될 수 있다. 또한, 저장장치(60) 내에서 파일을 생성할 때, 상술한 숨긴 파일 형태로 파일을 생성할 수 있으며, 생성한 숨긴 파일이 삭제된 경우, 저장장치(60) 내 생성하였던 숨긴 파일을 재생성하고 파일 읽기, 쓰기 등 이후 파일 연산을 수행할 수 있다. The
도 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
단계(S71)에서 저장장치(60) 내 파일에 대한 연산을 수행하기 위한 데이터를 수신한 API 래퍼(520)는 APDU 에이전트(530)로 수신한 데이터를 전달하고(S73), APDU 에이전트(530)는 API 래퍼(520)로부터 수신한 데이터를 큐에 삽입한다(S75).In step S71, the
이때, API 래퍼(520)는 데이터를 암호화하여 전송할 수 있으며, APDU 에이전트(530)는 암호화된 데이터를 수신하면 이를 복호화한다. 여기서 API 래퍼(520)와 APDU 에이전트(530)는 XOR 연산을 통해 암복호화를 수행할 수 있다.At this time, the
이어, APDU 에이전트(530)는 큐에 삽입된 데이터를 읽어, 읽은 데이터를 이용하여 저장장치(60) 내 파일에 대한 연산을 수행하기 위한 쓰레드(thread)를 생성한다(S77). Subsequently, the
이때, APDU 에이전트(530)는 API 래퍼(520)로부터 수신하는 파일 연산에 대한 복수의 요청에 대해 동기화하기 위해, FIFO 큐에 데이터를 삽입하거나, 삽입된 데이터를 삭제할 때 뮤텍스(Mutex) 알고리즘을 이용할 수 있다.At this time, the
단계(S77)에서 쓰레드를 생성한 APDU 에이전트(530)는 쓰레드를 실행하여 저장장치(60)와 통신하며, 저장장치(60) 내에서 파일에 대한 연산을 수행한다(S79).The
이때, 저장장치(60) 내에서 파일을 생성할 때, 숨긴 파일 형태로 파일을 생성할 수 있으며, 생성한 숨긴 파일이 삭제된 경우, 저장장치(60) 내 생성하였던 숨긴 파일을 재생성하고 파일 읽기, 쓰기 등 이후 파일 연산을 수행할 수 있다.At this time, when the file is created in the
이어, APDU 에이전트(530)는 파일 연산이 완료된 후에 처리된 데이터, 즉 API 래퍼(520)로부터 수신하여 큐에 삽입되었던 데이터를 추출(Dequeue)하여 API 래퍼(520)로 반환한다(S81).Subsequently, the
한편, 도 9 내지 도 10에서 상술한 파일은 실행형 컨텐츠(11)에서 분리된 분리 실행 대상 코드 블록(35)을 포함할 수 있으며, 호스트 프로그램은 실행형 컨텐츠(11)에서 분리 실행 대상 코드 블록(35)을 스터브 코드(26)로 대체한 분리 실행 기반 컨텐츠(37)일 수 있다. 호스트 단말(50)에서 분리 실행 기반 컨텐츠(37)를 실행하는 중에 분리 실행 대상 코드 블록(35)을 호출하여 분리 실행을 수행할 수 있다. 이에 대한 자세한 설명은 도 1 내지 도 8에 상술하였으므로 설명을 생략한다. 9 to 10 may include a separate execution
또한, 본 실시예에 따른 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.
상기 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).
상기 UDP 소켓은 비동기 방식인 것을 특징으로 하는 UMS 기반 통신을 위한 호스트 단말.The method of claim 2,
The UDP socket is a host terminal for UMS-based communication, characterized in that the asynchronous method.
상기 데이터를 암호화하여 전송하는 것을 특징으로 하는 UMS 기반 통신을 위한 호스트 단말.The method of claim 1, wherein the API wrapper,
Host terminal for UMS-based communication, characterized in that for transmitting the data encrypted.
상기 데이터를 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.
상기 FIFO 큐는 원형 큐인 것을 특징으로 하는 UMS 기반 통신을 위한 호스트 단말.The method of claim 1,
The FIFO queue is a host terminal for UMS-based communication, characterized in that the circular queue.
상기 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.
상기 저장장치 내 파일을 생성하는 경우 숨긴 파일 형태로 생성하는 것을 특징으로 하는 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.
상기 저장장치 내 생성한 파일이 삭제된 경우, 상기 생성한 파일을 재 생성한 후, 상기 재 성성한 파일에 대해 읽기 또는 쓰기 연산을 수행하는 것을 특징으로 하는 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.
상기 저장장치 내 파일은 분리 실행 대상 코드 블록을 포함하는 것을 특징으로 하는 UMS 기반 통신을 위한 호스트 단말.The method of claim 1,
And a file in the storage device includes a separate execution target code block.
상기 호스트 프로그램은 분리 실행 기반 컨텐츠인 것을 특징으로 하는 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.
상기 데이터는 패킹된 스택 정보 및 레지스터 정보를 포함하는 것을 특징으로 하는 UMS 기반 통신을 위한 호스트 단말.The method of claim 11,
And the data includes packed stack information and register information.
상기 호스트 단말이 상기 수신한 데이터를 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.
상기 데이터는 암호화한 것임을 특징으로 하는 UMS 기반 통신 방법.The method of claim 13,
UMS-based communication method characterized in that the data is encrypted.
상기 데이터는 XOR 연산을 이용하여 암호화한 것임을 특징으로 하는 UMS 기반 통신 방법.The method of claim 14,
The data is UMS-based communication method characterized in that the encrypted using an XOR operation.
상기 FIFO 큐는 원형 큐인 것을 특징으로 하는 UMS 기반 통신 방법.The method of claim 13,
The FIFO queue is a circular queue, characterized in that the UMS-based communication method.
상기 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.
상기 호스트 단말이 상기 저장장치 내 파일을 생성하는 연산을 수행하는 경우 숨긴 파일 형태로 생성하는 것을 특징으로 하는 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.
상기 호스트 단말이 상기 저장장치 내 생성한 파일이 삭제된 경우, 상기 생성한 파일을 재 생성한 후, 상기 재 성성한 파일에 대해 읽기 또는 쓰기 연산을 수행하는 것을 특징으로 하는 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.
상기 저장장치 내 파일은 분리 실행 대상 코드 블록을 포함하는 것을 특징으로 하는 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.
상기 호스트 프로그램은 분리 실행 기반 컨텐츠인 것을 특징으로 하는 UMS 기반 통신 방법.The method of claim 13,
The host program is a UMS based communication method, characterized in that the separated execution based content.
상기 데이터는 패킹된 스택 정보 및 레지스터 정보를 포함하는 것을 특징으로 하는 UMS 기반 통신 방법.The method of claim 21,
And the data includes packed stack information and register information.
실행형 컨텐츠의 코드 영역에 존재하는 복수의 베이식 블록으로 이루어진 복수의 베이식 블록 그룹 중에서 실행형 컨텐츠의 중요 경로(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.
시작점(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.
단일 입력(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.
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)
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)
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)
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 |
-
2010
- 2010-04-05 KR KR1020100031121A patent/KR101444070B1/en active IP Right Grant
- 2010-04-08 KR KR1020100032361A patent/KR101366669B1/en not_active IP Right Cessation
- 2010-04-08 KR KR1020100032320A patent/KR101498919B1/en active IP Right Grant
- 2010-04-12 KR KR1020100033191A patent/KR101384536B1/en active IP Right Grant
Cited By (1)
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 |