KR102123846B1 - 능동형 콘텐츠 재생 장치 및 능동형 콘텐츠 생성 장치 - Google Patents

능동형 콘텐츠 재생 장치 및 능동형 콘텐츠 생성 장치 Download PDF

Info

Publication number
KR102123846B1
KR102123846B1 KR1020180165208A KR20180165208A KR102123846B1 KR 102123846 B1 KR102123846 B1 KR 102123846B1 KR 1020180165208 A KR1020180165208 A KR 1020180165208A KR 20180165208 A KR20180165208 A KR 20180165208A KR 102123846 B1 KR102123846 B1 KR 102123846B1
Authority
KR
South Korea
Prior art keywords
content
active
active content
intention
engine
Prior art date
Application number
KR1020180165208A
Other languages
English (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 상명대학교산학협력단
Priority to KR1020180165208A priority Critical patent/KR102123846B1/ko
Priority to US16/263,491 priority patent/US11003743B2/en
Application granted granted Critical
Publication of KR102123846B1 publication Critical patent/KR102123846B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
    • H04N21/4431OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB characterized by the use of Application Program Interface [API] libraries
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/434Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
    • H04N21/4343Extraction or processing of packetized elementary streams [PES]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
    • H04N21/4435Memory management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/45Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
    • H04N21/462Content or additional data management, e.g. creating a master electronic program guide from data received from the Internet and a Head-end, controlling the complexity of a video stream by scaling the resolution or bit-rate based on the client capabilities
    • H04N21/4627Rights management associated to the content
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/8166Monomedia components thereof involving executable data, e.g. software

Abstract

본 발명의 일 양상에 따른 능동형 콘텐츠 재생 장치는 능동형-콘텐츠 헤더, 내장 콘텐츠 및 엔진 코드를 포함하는 능동형 콘텐츠와 콘텐츠의 실행을 위한 플레이어 프로그램을 저장하는 스토리지, 데이터와 프로그램을 임시 저장하는 메모리 및 능동형 콘텐츠의 실행 요청에 따라 능동형 콘텐츠를 메모리에 로딩하고 능동형 콘텐츠에 포함된 엔진 코드의 수행을 통해 메모리에 로딩된 내장 콘텐츠의 플레이어 프로그램의 프로세스를 통한 실행을 제어하는 중앙 처리 유닛을 포함한다.

Description

능동형 콘텐츠 재생 장치 및 능동형 콘텐츠 생성 장치{ACTIVE CONTENTS PLAY APPARATUS AND ACTIVE CONTENTS CREATION APPARATUS}
본 발명은 능동형 콘텐츠 재생 장치 및 능동형 콘텐츠 생성 장치에 관한 것으로서, 구체적으로는 콘텐츠를 배포하거나 생성하는 제작자의 의도를 반영하여 내장된 콘텐츠를 가상화시키고 내장된 콘텐츠의 외부 유출을 방지하면서 재생 장치에서 반영된 의도에 따라 가상적으로 실행될 수 있도록 하는 능동형 콘텐츠 재생 장치 및 능동형 콘텐츠 생성 장치에 관한 것이다.
오늘날 대부분의 콘텐츠는 디지털 콘텐츠이다. 디지털 콘텐츠는 지금의 고도화된 인터넷 환경하에서 저작권(copyright) 침해 문제를 널리 야기한다. 또한, 정보 및 통신 기술의 발전에 따라 소유자의 저작권을 보호하는 것이 한층 어려워졌다.
이에 따라 다양한 유형의 DRM(Digital rights management) 기술이 발전하고 디지털 비지니스 영역에서 많이 활용되고 있다. DRM 프레임워크는 디지털 콘텐츠를 안전하고 투명하게 분배가능하고 콘텐츠 분배 가치 체인상에서 저작자의 저작권을 효율적으로 관리 가능하다.
전통적인 DRM 접근은 개념적으로 간단하나 실제 복잡한 문제가 있다. 사용자는 이러한 DRM 시스템에 익숙하지 않다. 예를 들어 적법한 콘텐츠 사용자는 복잡한 소프트웨어 설치 과정에 직면하고 이해하기 어려운 사용자 인터페이스에 직면하게 된다. 또한, 사실상의 표준이 존재하지 않아 DRM 시스템 사이의 호환성을 얻기 어려운 문제가 존재한다. 이러한 DRM 시스템의 문제점에도 불구하고 DRM 시스템은 널리 활용되고 있다.
한편, 수많은 비디오 스트리밍 사이트, 개인 블로그, 소셜 미디어 사이트 등의 번성에서 알 수 있는 바와 같이 현재는 개인이 콘텐츠를 생성하는 시대이다. 단체나 전문 저작자가 수익을 창출하기 위해 콘텐츠를 주로 생성하는 반면에 일반 개인은 기타 다양한 목적으로 콘텐츠를 생성하기도 한다. 예를 들어 콘텐츠 제작자는 인기 획득이나 콘텐츠의 분배를 모니터링하거나 콘텐츠의 제한된 공유를 목적으로 가지는 콘텐츠를 생성할 수 있다.
사용하기 어렵고 비싼 가격인 DRM 시스템은 개인적인 제작자의 의도를 정확히 반영하기 어렵다. 예를 들어, 제한된 공유를 목적으로 프라이버시 보호에 관련된다. 어떤이는 친구들과만 그들의 얼굴 사진이 공유되기를 원하고 어떤 운전자의 면허증은 확인 후 영구 파손될 것을 예상하면서 에이전시에 스캔된 면허증 사본을 전송하기를 희망한다.
이와 같이, 프라이버시 보호는 각 개인을 대상으로 저작권 보호보다 더 많은 중요성과 필요성을 가진다. DRM 시스템은 프라이버시 보호를 위해 또한 활용 가능할 수도 있으나 시스템 복잡성, 비호환성, 비용 등의 문제로 인해 일반 개인이 활용하기에는 심각한 문제가 존재한다.
본 발명은, 상술한 문제점을 해결하기 위해서 안출한 것으로서, 콘텐츠 배포자의 의도에 따라 배포되는 콘텐츠의 실행을 제어할 수 있는 능동형 콘텐츠 재생 장치 및 능동형 콘텐츠 생성 장치를 제공하는 데 그 목적이 있다.
또한, 본 발명은 배포될 콘텐츠를 실행 파일에 내장시키고 실행 파일에 내장되어 배포자 의도를 반영한 코드에 따라 내장된 콘텐츠를 실행 제어하고 외부 유출을 방지할 수 있는 능동형 콘텐츠 재생 장치 및 능동형 콘텐츠 생성 장치를 제공하는 데 그 목적이 있다.
또한, 본 발명은 전용 플레이어의 이용 없이 일반적으로 활용 가능한 플레이어를 이용하여 실행 가능하도록 구성하여 경제적인 비용으로 쉽게 활용할 수 있는 능동형 콘텐츠 재생 장치 및 능동형 콘텐츠 생성 장치를 제공하는 데 그 목적이 있다.
또한, 본 발명은 콘텐츠 제작자의 의도에 따라 구성되는 마크업 언어에 따라 프라이버시 보호를 위한 의도 엔진 코드를 생성 및 실행 파일에 내장하고 재생 장치에서 의도 엔진 코드의 실행에 따라 콘텐츠 제작자의 의도에 따른 프라이버시 보호가 가능한 능동형 콘텐츠 재생 장치 및 능동형 콘텐츠 생성 장치를 제공하는 데 그 목적이 있다.
본 발명에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 발명의 일 양상에 따른 능동형 콘텐츠 재생 장치는 능동형-콘텐츠 헤더, 내장 콘텐츠 및 엔진 코드를 포함하는 능동형 콘텐츠와 콘텐츠의 실행을 위한 플레이어 프로그램을 저장하는 스토리지; 데이터와 프로그램을 임시 저장하는 메모리; 및 상기 능동형 콘텐츠의 실행 요청에 따라 상기 능동형 콘텐츠를 상기 메모리에 로딩하고 상기 능동형 콘텐츠에 포함된 엔진 코드의 수행을 통해 상기 메모리에 로딩된 내장 콘텐츠의 상기 플레이어 프로그램의 프로세스를 통한 실행을 제어하는 중앙 처리 유닛;을 포함한다.
상기한 능동형 콘텐츠 재생 장치에 있어서, 상기 엔진 코드를 수행하는 상기 중앙 처리 유닛은 상기 능동형 콘텐츠에 저장된 조건 변수와 상기 엔진 코드에 내장된 조건의 비교에 따라 상기 플레이어 프로그램을 호출하여 상기 메모리에 로딩된 내장 콘텐츠를 실행하고 상기 조건 변수를 변경하여 변경된 능동형 콘텐츠를 스토리지에 저장한다.
상기한 능동형 콘텐츠 재생 장치에 있어서, 상기 중앙 처리 유닛은 플레이어 프로그램의 프로세스를 생성하고 생성된 프로세서의 파일 I/O API를 상기 엔진 코드에 설정된 파일 I/O API로 후킹하여 생성된 프로세스에 의해 상기 내장 콘텐츠에 대해 제한된 파일 I/O 접근이 이루어지도록 한다.
상기한 능동형 콘텐츠 재생 장치에 있어서, 상기 엔진 코드를 수행하는 상기 중앙 처리 유닛은 프로세스를 생성하기 위한 OS API를 후킹 설정하고 내장 콘텐츠에 대응하는 플레이어 프로그램의 프로세스를 오픈하기 위한 상기 OS API를 호출하는 명령어로 내장 콘텐츠에 대응하는 플레이어 프로그램의 프로세스를 생성하고 생성된 프로세스에서 이용되는 파일생성, 파일읽기 및 파일쓰기 API 중 적어도 하나 이상의 API를 후킹 설정한다.
상기한 능동형 콘텐츠 재생 장치에 있어서, 상기 능동형 콘텐츠는 실행포맷 헤더, 능동형-콘텐츠 헤더, 내장 콘텐츠, 시스템 엔진 코드 및 하나 이상의 의도 엔진 코드를 포함하고, 상기 능동형-콘텐츠 헤더는 상기 시스템 엔진 코드 및 상기 하나 이상의 의도 엔진 코드의 오프셋과 크기를 포함한다.
상기한 능동형 콘텐츠 재생 장치에 있어서, 상기 중앙 처리 유닛은 생성된 프로세스에 의해 상기 파일읽기 API가 호출되는 경우 능동형 콘텐츠의 엔진 코드에 의해 후킹된 파일읽기 API의 실행을 통해 읽기 조건 변수와 엔진 코드에 내장된 조건의 비교에 따라 조건을 만족하는 경우 메모리에 로딩된 내장 콘텐츠의 경로를 상기 생성된 프로세스로 전달하여 내장 콘텐츠에 대한 액세스를 가능토록 한다.
상기한 능동형 콘텐츠 재생 장치에 있어서, 상기 중앙 처리 유닛은 생성된 프로세스에 의해 상기 파일쓰기 API가 호출되는 경우 메모리에 로딩된 내장 콘텐츠 대신에 다른 데이터를 상기 생성된 프로세스로 제공한다.
상기한 능동형 콘텐츠 재생 장치에 있어서, 상기 하나 이상의 의도 엔진 코드 및 시스템 엔진 코드는 내장 콘텐츠에 대한 배포자의 조건 및 의도와 조건 미충족시 액션으로 표현 가능한 의도 마크업 언어로 기술된 InML 언어 문서에 대한 파싱을 통해 생성되는 실행 코드이다.
본 발명의 일 양상에 따른 능동형 콘텐츠 생성 장치는 하나 이상의 콘텐츠, InML 문서, 시스템 엔진들 및 의도 엔진들을 저장하는 저장부; 상기 시스템 엔진들 및 의도 엔진들을 이용하여 상기 InML 문서로부터 시스템 엔진 코드 및 하나 이상의 의도 엔진 코드를 생성하는 엔진 코드 생성부; 및 시스템 엔진 코드, 하나 이상의 의도 엔진 코드, 상기 저장부의 콘텐츠 및 능동형-콘텐츠 헤더를 포함하는 능동형 콘텐츠를 생성하는 능동형 콘텐츠 생성부;를 포함하고, 상기 능동형 콘텐츠는 재생 장치에서의 실행에 따라 재생 장치의 메모리에 로딩되고 수행되는 의도 엔진 코드에 의해 상기 능동형 콘텐츠에 내장된 콘텐츠에 대해 실행이 제어된다.
상기한 능동형 콘텐츠 생성 장치에 있어서, 상기 능동형 콘텐츠에 포함되는 하나 이상의 의도 엔진 코드 및 시스템 엔진 코드는 내장 콘텐츠에 대한 배포자의 조건 및 의도와 조건 미충족시 액션으로 표현 가능한 의도 마크업 언어로 기술된 상기 InML 문서에 대한 파싱을 통해 생성되는 실행 코드이다.
상기한 능동형 콘텐츠 생성 장치에 있어서, 상기 InML 문서는 조건, 의도 및 조건 미충족시 액션으로 구성되는 조건-의도 아이템을 복수 개 포함하고, 상기 엔진 코드 생성부는 복수의 조건-의도 아이템으로부터 재생 장치에서 독립적으로 실행 가능한 복수의 의도 엔진 코드를 생성한다.
상기한 능동형 콘텐츠 생성 장치에 있어서, 상기 능동형 콘텐츠는 실행포맷 헤더, 능동형-콘텐츠 헤더, 내장 콘텐츠, 시스템 엔진 코드 및 하나 이상의 의도 엔진 코드를 포함하고, 상기 능동형-콘텐츠 헤더는 상기 시스템 엔진 코드 및 상기 하나 이상의 의도 엔진 코드의 오프셋과 크기를 포함한다.
상기와 같은 본 발명에 따른 능동형 콘텐츠 재생 장치 및 능동형 콘텐츠 생성 장치는 콘텐츠 배포자의 의도에 따라 배포되는 콘텐츠의 실행을 제어할 수 있는 효과가 있다.
또한, 상기와 같은 본 발명에 따른 능동형 콘텐츠 재생 장치 및 능동형 콘텐츠 생성 장치는 배포될 콘텐츠를 실행 파일에 내장시키고 실행 파일에 내장되어 배포자 의도를 반영한 코드에 따라 내장된 콘텐츠를 실행 제어하고 외부 유출을 방지할 수 있는 효과가 있다.
또한, 상기와 같은 본 발명에 따른 능동형 콘텐츠 재생 장치 및 능동형 콘텐츠 생성 장치는 전용 플레이어의 이용 없이 일반적으로 활용 가능한 플레이어를 이용하여 실행가능하도록 구성하여 경제적인 비용으로 쉽게 활용할 수 있는 효과가 있다.
또한, 상기와 같은 본 발명에 따른 능동형 콘텐츠 재생 장치 및 능동형 콘텐츠 생성 장치는 콘텐츠 제작자의 의도에 따라 구성되는 마크업 언어에 따라 프라이버시 보호를 위한 의도 엔진 코드를 생성 및 실행 파일에 내장하고 재생 장치에서 의도 엔진 코드의 실행에 따라 콘텐츠 제작자의 의도에 따른 프라이버시 보호가 가능한 효과가 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 능동형 콘텐츠 배포 시스템의 장치 간 연결구성의 예를 도시한 도면이다.
도 2는 생성 장치의 예시적인 블록도를 도시한 도면이다.
도 3은 능동형 콘텐츠 생성을 위한 세부 블록도를 도시한 도면이다.
도 4는 예시적인 InML 스키마를 도시한 도면이다.
도 5는 도 4의 InML 스키마를 이용하여 구성된 InML 문서 파일 예를 도시한 도면이다.
도 6은 능동형 콘텐츠의 예시적인 포맷을 도시한 도면이다.
도 7은 능동형-콘텐츠 헤더의 포맷 예를 도시한 도면이다.
도 8은 재생 장치의 예시적인 블록도를 도시한 도면이다.
도 9는 재생 장치에서의 능동형 콘텐츠의 동작 과정을 도시한 도면이다.
도 10은 재생 장치에서 플레이어 프로그램을 검색하고 후킹 방식을 통해 공용의 플레이어 프로그램에 노출되는 콘텐츠를 보호하는 예시적인 제어 흐름을 도시한 도면이다.
상술한 목적, 특징 및 장점은 첨부된 도면을 참조하여 상세하게 후술 되어 있는 상세한 설명을 통하여 더욱 명확해 질 것이며, 그에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 또한, 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에 그 상세한 설명을 생략하기로 한다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시 예를 상세히 설명하기로 한다.
도 1은 능동형 콘텐츠 배포 시스템의 장치 간 연결구성의 예를 도시한 도면이다.
도 1의 능동형 콘텐츠 배포 시스템은 시스템 구성의 일 예를 나타내고 다양한 변형 예를 가질 수 있다. 예를 들어, 능동형 콘텐츠 배포 시스템은 콘텐츠 공유 서버(300)를 그 구성요소로서 생략할 수도 있다. 또는, 능동형 콘텐츠 배포 시스템은 광대역 네트워크(400) 및 콘텐츠 공유 서버(300)를 구성요소로서 생략하고 저장 매체를 통해 또는 직접 능동형 콘텐츠 생성 장치(100)와 능동형 콘텐츠 재생 장치(200)가 연결되어 능동형 콘텐츠의 생성과 재생이 이루어질 수도 있다.
도 1을 통해 능동형 콘텐츠 배포 시스템을 간단히 살펴보면, 능동형 콘텐츠 배포 시스템은 하나 이상의 능동형 콘텐츠 생성 장치(100), 하나 이상의 능동형 콘텐츠 재생 장치(200), 콘텐츠 공유 서버(300) 및 광대역 네트워크(400)를 포함한다.
능동형 콘텐츠 생성 장치(100)는 능동형 콘텐츠(Active Contents)를 생성한다. 능동형 콘텐츠 생성 장치(100)는 예를 들어 스마트폰, 태블릿 PC, 노트북, 개인용 컴퓨터 등일 수 있다.
기존 알려진 콘텐츠가 외부 플레이어에 의해서 수행되고 수정되고 변경 가능한 수동형 콘텐츠인데 반해 본 발명에 따른 능동형 콘텐츠는 콘텐츠가 내부에 가상화되고 능동형 콘텐츠 제작자(배포자)의 의도에 따라 내장된 콘텐츠의 실행(재생, 복사, 프린팅 등)이 제어 가능한 콘텐츠로서 실행파일의 형태(외관)를 가진다.
능동형 콘텐츠는 제어 대상인 기존 수동형 콘텐츠(passive contents)를 내장할 뿐 아니라 이 내장된 콘텐츠를 제작자의 의도에 따라 제어가 가능하도록 하는 엔진 코드를 포함하여 엔진 코드를 통해 콘텐츠를 제어하고 외부에 노출되지 않도록 한다. 이에 따라 콘텐츠를 가상화시킬 수 있고 콘텐츠를 다양한 외부 공격이나 위협으로부터 보호할 수 있다.
능동형 콘텐츠 생성 장치(100)는 콘텐츠에 헤더, 제작자의 의도에 따라 콘텐츠를 제어할 시스템 엔진 코드 및 하나 이상의 의도 엔진 코드를 구성하여 능동형 콘텐츠를 생성한다. 생성되는 능동형 콘텐츠는 알려진 OS 환경하에서 실행 파일(예를 들어, EXE 파일)로 포맷팅되어 특정 OS 환경하에서 실행되고 시스템 엔진 코드 및 의도 엔진 코드를 구동하여 콘텐츠를 제작자의 의도에 따라 실행시킬 수 있다.
이하 능동형 콘텐츠 생성 장치(100)를 "생성 장치"라 줄여 지칭하고 생성 장치(100)에 대해서는 도 2와 도 3을 통해 상세히 살펴보도록 한다.
능동형 콘텐츠 재생 장치(200)는 능동형 콘텐츠를 재생할 수 있는 장치이다. 능동형 콘텐츠 재생 장치(200)는 능동형 콘텐츠를 실행시킬 수 있는 장치로서 예를 들어 스마트폰, 태블릿 PC, 노트북, 개인용 컴퓨터 등일 수 있다.
능동형 콘텐츠 재생 장치(200)는 구비된 오프레이팅 시스템(OS)에 따라 능동형 콘텐츠를 실행시킬 수 있고 능동형 콘텐츠 내의 헤더에 따라 능동형 콘텐츠에 내장된 콘텐츠를 제작자(배포자)의 의도에 따라 구성된 엔진 코드에 따라 실행 제어할 수 있도록 구성된다.
예를 들어, 능동형 콘텐츠 재생 장치(200)는 엔진 코드에 포함된 조건 변수나 조건 코드에 따라 내장된 콘텐츠를 재생하거나, 복사하거나 프린팅하거나 이러한 재생, 복사, 프린팅 등을 제한하거나 거부할 수 있다.
이하 능동형 콘텐츠 재생 장치(200)를 "재생 장치"라 줄여 지칭하고 재생 장치(200)에 대해서는 도 4를 통해 상세히 살펴보도록 한다.
콘텐츠 공유 서버(300)는 콘텐츠를 공유 가능한 서버이다. 콘텐츠 공유 서버(300)는 각종 콘텐츠를 제작자 등으로부터 공급받고 서버(300)에 로딩된 콘텐츠를 다른 사용자와 공유할 수 있게 구성된다.
콘텐츠 공유 서버(300)는 다양한 유형의 서버일 수 있다. 예를 들어, 콘텐츠 공유 서버(300)는 파일 공유 서버이거나 블로그 서버, 사회 관계망 서버, 웹 서버 등일 수 있다. 콘텐츠 공유 서버(300)는 다양한 형태를 취할 수 있고 본 발명에 따른 능동형 콘텐츠를 바람직하게 다른 사용자와 공유할 수 있다. 앞서 살펴본 바와 같이, 콘텐츠 공유 서버(300)는 설계 예에 따라 생략 가능하다.
광대역 네트워크(400)는 생성 장치(100), 재생 장치(200)와 콘텐츠 공유 서버(300) 사이의 각종 데이터를 송수신한다. 광대역 네트워크(400)는 기기, 장치, 단말, 서버 및/또는 디바이스들 사이에서 약속된 통신 프로토콜에 따른 통신 패킷을 송수신할 수 있도록 한다. 광대역 네트워크(400)는 이동통신망, 인터넷망 등을 포함하거나 그 조합으로 구성될 수 있다.
도 2는 생성 장치(100)의 예시적인 블록도를 도시한 도면이다.
도 2의 능동형 콘텐츠 생성 장치(100)는 바람직하게는 기능 블록도를 나타내고 각 기능 블록들은 대응 기능의 수행에 필요한 하드웨어 블록이나 구성요소를 가진다.
도 2를 통해 생성 장치(100)를 살펴보면, 생성 장치(100)는 입력부(110), 출력부(130), 통신부(150), 저장부(170) 및 제어부(190)를 포함한다. 설계 예에 따라 도 2의 일부 블록은 생략되거나 도 2에 도시되지 않은 다른 블록이 도 2의 생성 장치(100)에 더 포함될 수도 있다.
입력부(110)는 마우스, 키보드, 마이크, 터치패드, 터치패널 및/또는 광펜 등을 구비하여 사용자로부터 각종 입력을 수신한다. 예를 들어, 입력부(110)는 능동형 콘텐츠의 생성 요청, 삭제 요청, 수정 요청, 프로그램 수행 요청, 문서 입력, 문서 변경 등 각종 사용자 입력을 수신하고 이를 제어부(190)로 전달할 수 있다.
출력부(130)는 스피커, 디스플레이, LED 및/또는 부저 등을 구비하여 제어부(190)의 제어에 따라 각종 음향, 음성 및/또는 영상 신호 등을 출력한다. 출력부(130)는 예를 들어 각종 마크업 언어를 에디팅할 수 있는 에디터 화면, 파싱 화면, 컴파일 결과 화면이나 결과 음향 등을 출력할 수 있다.
통신부(150)는 이더넷, 와이파이 및/또는 이동통신망(예를 들어, LTE 망) 등에 연결되기 위한 통신 칩셋을 구비하고 각종 통신 패킷을 유선이나 무선으로 송수신한다. 예를 들어, 통신부(150)는 능동형 콘텐츠를 나타내거나 포함하는 통신 패킷을 재생 장치(200)나 콘텐츠 공유 서버(300)로 전송할 수 있다.
저장부(170)는 각종 데이터나 프로그램을 저장한다. 저장부(170)는 휘발성 메모리, 비휘발성 메모리 및/또는 하드디스크 등과 같은 대용량 저장매체를 구비하여 적어도 능동형 콘텐츠 생성에 필요한 각종 데이터와 프로그램을 저장한다.
예를 들어, 저장부(170)는 능동형 콘텐츠에 내장될 수 있는 하나 이상의 콘텐츠, 내장될 콘텐츠에 대한 제작자의 제어 의도를 나타내는 InML(Intention Markup Language, 이하 "InML"로 지칭함) 문서, 제어 의도에 따라 능동형 콘텐츠에 코드 등으로 내장될 수 있는 시스템 엔진들, 제어 의도에 따라 능동형 콘텐츠에 코드 등으로 내장될 수 있는 의도 엔진들, 능동형 콘텐츠 생성에 이용되는 능동형 콘텐츠 생성 프로그램 등을 저장한다.
저장부(170)에 저장되어 있는 콘텐츠는 소위 수동형 콘텐츠로서 일반적으로 파일형태로 저장되고 알려진 플레이어 프로그램 등을 통해 재생되거나 복사되거나 프린팅 될 수 있다. 콘텐츠는 예를 들어, 이미지 파일, 동영상 파일, 음악 파일, 녹음 파일 등일 수 있다.
InML 문서( 파일)는 능동형 콘텐츠 제작자에 의한 제어 의도를 표현하기 위한 문서이다. InML 문서는 본 발명의 발명자에 의해서 구성된 InML 스키마(도 4 참조)에 의해서 정의되고 해석될 수 있다. 도 4의 InML 스키마는 전체 스키마 중 일부 일 수 있다.
도 4에서 알 수 있는 바와 같이, InML 문서는 하나 이상의 의도(Intention)를 가질 수 있고(도 4의 ① 참조) 각각의 의도는 조건과 조건 미충족시 액션(도 4의 ②)을 가질 수 있다. 각각의 조건은 서로, 독립적으로 AND, OR, NOT 연산자를 가질수 있다(도 4의 ③ 참조).
도 5는 도 4의 InML 스키마를 이용하여 구성된 InML 문서 파일 예를 도시한 도면이다.
도 5에는 3 종류의 예시적인 InML 문서 예를 도시하고 있는 데, 도 5 (a)의 InML 문서는 10만번까지(조건)까지 플레이(의도)를 하고 10만번을 초과하면 재생을 거부(액션)하도록 구성된다.
도 5의 (b)는 2017년 3월 1일 이후 2017년 3월 28일 이전에 5번까지 IP 주소 117.16.123.201에서(조건) 플레이(의도)를 하고 조건을 만족하지 못하면 파괴(액션)하도록 구성된다.
도 5의 (c)는 5번까지(조건) 프린팅(의도)을 허용하고 5번을 초과하면 파괴(액션)하고 2번까지(조건) 플레이(의도)를 허용하고 2번을 초과하면 재생을 거부(액션)하도록 구성된다.
이와 같이, 각각의 의도는 플레이, 복사, 프린팅 등일 수 있고 그 외 다른 타입의 목적일 수도 있다.
도 5에서 알 수 있는 바와 같이 InML 문서는,
if (조건)
allow (의도)
else
perform (액션)
과 같은 슈도 코드 형식을 하나 이상 취하고 있다.
도 5의 (a) 내지 (c)에서 알 수 있는 바와 같이, InML 문서는 조건, 의도 및 조건 미충족시 액션으로 구성되는 조건-의도 아이템(도 5의 ④ 참조)을 하나 이상(도 5의 (c)는 복수 개) 포함할 수 있다.
각각의 InML 문서는 InML 스키마에 따라 파싱되고 이후 오프레이팅 시스템(OS)에서 실행 가능한 엔진 코드로 컴파일될 수 있다. 여기서 "컴파일"이란 의미는 InML 언어를 다른 언어로 번역(머신 코드나 가상 코드로의 translation, interpretation)하거나 변형(머신 코드나 가상 코드로의 transform)하는 과정을 나타내거나 포함한다.
시스템 엔진들은 재생 장치(200)에서 의도 엔진의 기본 구성요소를 형성하고 다양한 제어와 관리 기능을 핸들링한다. 시스템 엔진들은 모듈러 형식으로 구성되어 능동형 콘텐츠에 내장될 수 있다. 시스템 엔진들은 동적 링크 라이브러리(DLL) 형식으로 구성되어 의도 엔진 구성에 필요한 구성요소가 추출되어 능동형 콘텐츠에 내장될 수 있다.
의도 엔진들은 InML 문서의 조건-의도 아이템의 조건, 의도, 미충족시 액션 등을 구현하기 위한 구성요소로서 미리 컴파일된 라이브러리(예를 들어 DLL)를 포함한다. 예를 들어, 플레이 의도 엔진은 플레이 의도의 정의에 따라 능동형 콘텐츠 제어에 필요한 구성요소이다.
능동형 콘텐츠 생성 프로그램은 InML 문서, 콘텐츠, 시스템 엔진들, 및 의도 엔진들을 이용하여 능동형 콘텐츠를 생성한다. 능동형 콘텐츠 생성 프로그램은 제어부(190)에 로딩되어 저장부(170)에 저장되어 있는 각종 데이터를 이용하여 능동형 콘텐츠를 생성하고 생성된 능동형 콘텐츠를 저장부(170)에 저장하거나 통신부(150)를 통해 광대역 네트워크(400)로 전송할 수 있다.
제어부(190)는 생성 장치(100)를 제어한다. 제어부(190)는 프로그램의 명령어 코드를 실행할 수 있는 하나 이상의 실행 유닛(Execution Unit)을 포함하여 저장부(170)에 저장되어 있는 프로그램을 로딩하여 로딩된 프로그램의 코드에 따라 각종 블록들을 제어할 수 있다.
제어부(190)는 저장부(170)의 능동형 콘텐츠 생성 프로그램을 로딩하여 로딩된 생성 프로그램에 따라 InML 문서, 콘텐츠, 시스템 엔진들, 및 의도 엔진들을 결합하여 능동형 콘텐츠를 생성한다.
도 3은 능동형 콘텐츠 생성을 위한 세부 블록도를 도시한 도면이다. 도 3의 세부 블록도는 생성 장치(100)에 구성되고 바람직하게는 제어부(190)에서 수행되는 능동형 콘텐츠 생성 프로그램을 이용하여 구성된다. 도 3의 세부 블록도는 제어부(190)가 능동형 콘텐츠 생성 프로그램의 코드를 수행하여 프로그램 코드를 통해 도 2의 다른 블록을 제어함으로써 구성된다.
먼저, 제작자(배포자)는 입력부(110)를 통해 능동형 콘텐츠의 의도를 나타내기 위한 InML 문서를 생성하거나 저장부(170)에서 선택하고 능동형 콘텐츠에 포함될 콘텐츠도 생성하거나 저장부(170)에서 선택한다.
능동형 콘텐츠 생성 프로그램에 포함되어 제어부(190)에서의 프로그램 코드의 수행에 따라 구동되는 엔진 코드 생성부(191)는 제작자에 의해 생성되거나 선택된 InML 문서와 저장부(170)의 시스템 엔진들 및 의도 엔진들을 이용하여 InML 문서의 의도(조건-의도 아이템)를 반영하기 위한 실행 가능한 엔진인 엔진 코드를 생성한다.
엔진 코드 생성부(191)는 내장된 콘텐츠에 대한 배포자의 조건, 의도 및 조건 미충족시 액션으로 표현 가능한 마크업 언어로 기술된 InML 문서를 InML 스키마에 따라 파싱하고 InML 문서의 조건-의도 아이템들 각각에 대응하는 의도 엔진들과 필요한 시스템 엔진들을 저장부(170)에서 추출하고 재생 장치(200)에서 수행에 필요한 시스템 엔진 코드와 하나 이상의 의도 엔진 코드를 컴파일을 통해 생성할 수 있다. 시스템 엔진 코드와 의도 엔진 코드는 재생 장치(200)에서 실행 가능한 코드일 수 있다.
InML 문서에 복수의 조건-의도 아이템이 포함된 경우, 엔진 코드 생성부(191)는 복수의 조건-의도 아이템으로부터 재생 장치(200)에서 독립적으로 실행 가능한 복수의 의도 엔진 코드를 생성할 수 있다.
시스템 엔진 코드는 예를 들어 의도 엔진 코드의 기능 수행에 필요한 기본 라이브러리나 의도 엔진 코드를 제어하기 위한 제어 코드를 포함할 수 있다. 각 의도 엔진 코드는 각 조건-의도 아이템의 재생 장치(200)에서 수행에 필요한 프로그램 코드를 포함하고 예를 들어, 의도, 조건, 미충족시 액션 관련 프로그램 코드와 초기의 조건 변수(conditional variable) 등을 포함할 수 있다.
의도 엔진 코드는 재생 장치(200)의 외부 플레이어를 제어하고(거나) 내장된 콘텐츠를 외부 플레이어로 공급하고 콘텐츠의 유출을 방지하기 위한 코드를 포함한다. 의도 엔진 코드는 예를 들어 외부 플레이어를 호출하기 위한 코드와 내장된 콘텐츠의 메모리(209) 상에서의 경로나 패스(Path)를 알려주기 위한 코드와 콘텐츠의 유출을 방지하기 위한 코드를 포함한다. 의도 엔진 코드는 재생 장치(200)의 시스템 콜(예를 들어, 파일 I/O)을 후킹(hooking)하기 위한 코드를 포함하여 콘텐츠의 유출을 방지하고 메모리(209)에서의 패스를 알려줄 수 있다.
능동형 콘텐츠 생성 프로그램에 포함되어 제어부(190)에서의 프로그램 코드의 수행에 따라 구동되는 능동형 콘텐츠 생성부(193)는 엔진 코드 생성부(191)에 의해서 생성된 시스템 엔진 코드, 하나 이상의 의도 엔진 코드와 콘텐츠를 결합하고 헤더(실행포맷 헤더 및 능동형-콘텐츠 헤더)를 생성하여 능동형 콘텐츠를 생성한다.
도 6은 능동형 콘텐츠의 예시적인 포맷을 도시한 도면인데, 능동형 콘텐츠 생성부(193)에 의해 생성되는 능동형 콘텐츠는 실행포맷 헤더, 능동형-콘텐츠 헤더, 내장 콘텐츠, 시스템 엔진 코드 및 하나 이상의 의도 엔진 코드를 포함한다.
실행포맷 헤더는 재생 장치(200)의 오프레이팅 시스템에서 실행 파일로 인식되도록 하는 헤더로서 예를 들어 PE(Portable Executable) 헤더와 섹션(sections)을 포함하거나 나타낼 수 있다.
능동형-콘텐츠 헤더는 내장 콘텐츠, 시스템 엔진 코드 및 의도 엔진 코드를 능동형 콘텐츠 내에서 특정할 수 있는 정보를 저장한다.
도 7은 능동형-콘텐츠 헤더의 포맷 예를 나타낸 데, 능동형-콘텐츠 헤더는 능동형-콘텐츠 헤더를 나타내기 위한 시그니처(예들 들어, 0x4341 등), 포함된 의도 엔진 코드 개수, 능동형-콘텐츠 헤더 크기, 내장 콘텐츠 오프셋, 내장 콘텐츠 크기, 시스템 엔진 코드 오프셋, 시스템 엔진 코드 크기, 의도 엔진 코드 1 오프셋, 의도 엔진 코드 1 크기, .. ,의도 엔진 코드 N 오프셋 및 의도 엔진 코드 N 크기 등의 정보를 저장한다.
능동형-콘텐츠 헤더는 능동형 콘텐츠 생성부(193)에 의해서 구성되고 이 능동형-콘텐츠 헤더를 통해 재생 장치(200)의 메모리(209)에서의 내장된 콘텐츠 위치, 시스템 엔진 코드, 의도 엔진 코드의 위치를 특정하고 구동할 수 있다.
생성된 능동형 콘텐츠는 저장부(170)에 저장되고 이후 광대역 네트워크(400)를 통해 재생 장치(200)로 전달될 수 있다. 실행 파일로 인식되는 능동형 콘텐츠는 재생 장치(200)에서의 실행에 따라 재생 장치(200)의 메모리(209)에 로딩되고 능동형 콘텐츠에 포함되어 수행되는 의도 엔진 코드에 의해 내장된 콘텐츠에 대한 실행을 제어할 수 있다. 또한, 능동형 콘텐츠에 포함된 콘텐츠는 능동형 콘텐츠 내에 가상화되어 외부 노출이 방지되고 외부 노출이나 공격에 따른 각종 부작용을 방지할 수 있다.
도 8은 재생 장치(200)의 예시적인 블록도를 도시한 도면이다.
도 8을 통해 능동형 콘텐츠 재생 장치(200)를 살펴보면, 재생 장치(200)는 통신 유닛(201), 입력 유닛(203), 출력 유닛(205), 스토리지(207), 메모리(209) 및 중앙 처리 유닛(211)을 포함한다. 설계 예에 따라 도 8의 일부 블록은 생략되거나 도 8에 도시되지 않은 다른 블록이 도 8의 재생 장치(200)에 더 포함될 수도 있다.
통신 유닛(201)은 이더넷, 와이파이 및/또는 이동통신망(예를 들어, LTE 망) 등에 연결되기 위한 통신 칩셋을 구비하고 각종 통신 패킷을 유선이나 무선으로 송수신한다. 예를 들어, 통신 유닛(201)은 생성 장치(100)나 콘텐츠 공유 서버(300)로부터 능동형 콘텐츠를 나타내거나 포함하는 통신 패킷을 수신할 수 있다.
입력 유닛(203)은 마우스, 키보드, 마이크, 터치패드, 터치패널 및/또는 광펜 등을 구비하여 사용자로부터 각종 입력을 수신한다. 예를 들어, 입력 유닛(203)은 능동형 콘텐츠의 선택(재생) 요청을 수신할 수 있다.
출력 유닛(205)은 스피커, 디스플레이, LED, 부저, 프린터 인터페이스 등을 구비하여 중앙 처리 유닛(211)의 제어에 따라 각종 음향, 음성, 영상 및/또는 프린터 신호 등을 출력한다. 예를 들어, 출력 유닛(205)은 능동형 콘텐츠에 내장된 콘텐츠의 플레이, 복사, 프린팅 등에 따른 각종 데이터를 출력할 수 있다.
스토리지(207)는 하드디스크, 유에스비(USB) 메모리, 휴대형 저장매체 등을 포함하여 각종 데이터와 프로그램을 저장한다. 스토리지(207)는 중앙 처리 유닛(211)에서 수행되는 오프레이팅 시스템에 의해 드라이브나 디스크로 인식되고 각종 데이터나 프로그램을 파일 시스템을 통해 영구히 저장할 수 있는 저장매체이다.
스토리지(207)는 능동형-콘텐츠 헤더, 내장 콘텐츠, 엔진 코드 등을 지정된 포맷에 따라 포함하는 하나 이상의 능동형 콘텐츠와 콘텐츠 등을 플레이할 수 있는 플레이어 프로그램들을 저장한다. 플레이어 프로그램은 예를 들어 이미지를 디코딩하고 출력 유닛(205)에 이미지로 표시하는 이미지 프로그램, 프린터로 프린팅 데이터를 출력하는 프린팅 프로그램, 파일을 복사하는 복사 프로그램 등일 수 있다. 플레이어 프로그램은 하나의 기능(예를 들어, 이미지 뷰어)만을 수행하거나 여러 기능을 같이 수행(예를 들어, 이미지 뷰어, 프린팅, 복사 저장 등)할 수도 있다.
스토리지(207)는 그 외 제어 관리 프로그램을 더 포함할 수 있다. 제어 관리 프로그램은 사용자 입력에 따라 각종 프로그램을 구동하거나 제어할 수 있는 프로그램이다.
메모리(209)는 휘발성 메모리를 포함하여 데이터와 프로그램을 임시로 저장한다. 예를 들어, 메모리(209)는 능동형 콘텐츠나 플레이어 프로그램을 임시로 저장하고 능동형 콘텐츠나 플레이어 프로그램을 중앙 처리 유닛(211)에 의해 실행할 수 있다.
중앙 처리 유닛(211)은 프로그램의 명령어 코드를 수행할 수 있는 하나 이상의 실행 유닛(Execution Unit)을 포함하여 스토리지(207)에 저장되어 있는 각종 프로그램을 수행한다.
제어 관리 프로그램 등을 실행하는 중앙 처리 유닛(211)은 출력 유닛(205)을 통해 실행 가능한 각종 아이콘을 디스플레이하고 특정 하나의 아이콘에 대한 실행 요청을 입력 유닛(203)을 통해 수신할 수 있다. 중앙 처리 유닛(211)은 실행 요청의 아이콘에 대응하는 프로그램이나 콘텐츠를 수행하거나 재생할 수 있다.
능동형 콘텐츠에 대한 실행 요청을 수신한 중앙 처리 유닛(211)은 스토리지(207)로부터 능동형 콘텐츠를 메모리(209)에 로딩하고 능동형 콘텐츠에 포함된 엔진 코드의 수행을 통해 능동형 콘텐츠에 내장된 콘텐츠의 실행을 제어한다. 엔진 코드를 수행하는 중앙 처리 유닛(211)은 엔진 코드의 조건의 만족 여부에 따라 지정된 기능(의도)을 수행하거나 지정된 액션을 수행할 수 있다.
지정된 기능(예를 들어, 플레이, 복사, 프린팅 등)을 수행하는 경우 중앙 처리 유닛(211)은 스토리지(207)에 저장되어 있는 플레이어 프로그램의 프로세스(process)를 수행하고 프로세스에서의 내장된 콘텐츠 실행 제어를 통해 의도된 기능을 출력 유닛(205)등을 통해 제공가능하다.
중앙 처리 유닛(211)에서 이루어지는 구체적인 제어와 구현 방식은 도 9 이하를 통해 상세히 살펴보도록 한다.
도 9는 재생 장치(200)에서의 능동형 콘텐츠의 동작 과정을 도시한 도면이다.
재생 장치(200)의 사용자는 출력 유닛(205)을 통해 디스플레이된 아이콘을 선택하고 선택된 아이콘의 실행 요청을 입력 유닛(203)을 통해 입력(도 9의 ① 참조)할 수 있다.
제어 관리 프로그램 등을 실행하는 중앙 처리 유닛(211)은 능동형 콘텐츠의 실행 요청에 따라 스토리지(207)에 저장되어 있고 실행 파일로 인식되는 능동형 콘텐츠를 메모리(209)에 로딩(도 9의 ② 참조)한다.
중앙 처리 유닛(211)은 능동형 콘텐츠의 실행포맷 헤더에 따라 실행 파일로 인식하고 능동형 콘텐츠 내의 능동형-콘텐츠 헤더, 내장 콘텐츠, 시스템 엔진 코드 및 하나 이상의 의도 엔진 코드를 메모리(209)에 로딩하고 시스템 엔진 코드 및/또는 의도 엔진 코드가 중앙 처리 유닛(211)에서 실행될 수 있다.
엔진 코드를 수행하는 중앙 처리 유닛(211)은 의도 엔진 코드 내에 내장된(예를 들어 초기에 설정되거나 이후 기능 수행에 따라 변경된) 조건 변수와 의도 엔진 코드 내에 프로그램 코드로 내장된 조건을 비교하고 조건을 만족하는 경우 지정된 의도를 수행하기 위한 플레이어 프로그램을 호출(도 9의 ③ 참조)한다. 엔진 코드와 플레이어 프로그램은 알려져 있는 프로그램간 또는 프로세스간 통신을 통해 각종 메시지를 송수신할 수 있다.
실행되는 플레이어 프로그램은 능동형 콘텐츠의 의도 엔진 코드 등의 제어에 따라 내장 콘텐츠를 입력받아 내장 콘텐츠에 대해 배포자에 의해 의도된 기능을 수행하고 그 결과를 출력 유닛(205) 등을 통해 출력(도 9의 ④ 참조)한다.
플레이어 프로그램은 스토리지(207)로부터 직접 콘텐츠를 액세스하지 않고(못하고) 능동형 콘텐츠의 의도 엔진 코드를 통해 콘텐츠를 제공받아 콘텐츠를 가상화시킬 수 있다. 이에 따라, 파일 I/O를 통해 스토리지(207)에서 직접 접근이 불가능하고 메모리(209)에서 의도 엔진 코드의 관리에 따라 액세스가 가능하여 내장된 콘텐츠의 외부 노출을 불가능하게 하고 배포자의 의도에 따라 동적인 관리가 가능하도록 한다.
의도 엔진 코드는 플레이어 프로그램을 통한 기능을 재생 사용자에게 제공하고 필요한 조건 변수를 변경하여 능동형 콘텐츠에 저장한다. 변경된 능동형 콘텐츠는 이후 스토리지(207)에 저장될 수 있다.
또한, 도 9의 과정은 DRM 등의 전용 프로그램 없이 일반적으로 이용되는 공용 플레이어를 이용하여 바람직하게 구현된다.
도 10은 재생 장치(200)에서 플레이어 프로그램을 검색하고 후킹 방식을 통해 공용의 플레이어 프로그램에 노출되는 콘텐츠를 보호하는 예시적인 제어 흐름을 도시한 도면이다.
도 10의 제어 흐름은 중앙 처리 유닛(211)에 의해 수행되고 능동형 콘텐츠의 엔진 코드(예를 들어, 시스템 엔진 코드와 의도 엔진 코드의 조합)의 실행에 따라 이루어진다.
먼저, 중앙 처리 유닛(211)(의 엔진 코드)은 내장 콘텐츠에 이용될 플레이어 프로그램을 검색(S101)한다.
예를 들어, 의도 엔진 코드는 재생 장치(200)의 윈도우 레지스트리(Registry)에서 내장 콘텐츠의 확장자(예를 들어, jpg 등)에 대응하는 플레이어를 실행시킬 수 있는 명령어를 획득할 수 있다. 의도 엔진 코드는 윈도우 레지스트리 경로에서 특정 확장자에 대한 플레이어 경로와 명령어를 획득하고 해당 경로와 명령어를 오프레이팅 시스템으로 출력함으로써 해당 공용 플레이어 프로그램을 호출할 수 있다.
프린팅을 수행하는 의도 엔진 코드는 예를 들어 윈도우 API(application programming interface)인 EnumPrinters()를 호출하여 설치된 프린터 목록을 가져오고 사용자 등을 통해 프린터를 선택할 수 있도록 한다. 이 과정에서 의도 엔진 코드는 프린터 목록에서 가상(Virtual) 프린터를 식별하여 제거하고 출력 유닛(205)을 통해 가상 프린터를 제거한 목록을 출력하고 입력 유닛(203)을 통한 사용자 선택에 따라 특정 하나의 프린터를 선택하고 해당 프린터 핸들러(Handler)를 획득할 수 있다.
이후, 엔진 코드를 수행하는 중앙 처리 유닛(211)은 검색된 플레이어 프로그램의 프로세스를 생성하기 위한 OS API를 후킹(hooking) 설정(S103)한다.
예를 들어, 중앙 처리 유닛(211)은 explorer.exe의 CreateProcess API를 알려진 후킹 방법을 통해 후킹 설정한다. explorer.exe는 그래픽 유저 인터페이스(GUI) 환경에서 파일 시스템의 탐색, 접근, 실행 등의 다양한 시스템 기능 등을 제공하고 CreateProcess API를 통해 특정 프로세스가 생성된다.
엔진 코드를 수행하는 중앙 처리 유닛(211)은 검색된 플레이어(나 프린터)를 구동하기 위한 명령어를 호출하여 검색된 플레이어를 실행(S105)한다.
예를 들어, 중앙 처리 유닛(211)은 검색된 플레이어(나 프린터)의 프로세스를 오픈(실행)하기 위한 경로 및 명령어를 이용하여 플레이어를 실행시키고 이에 따라 후킹된 CreateProcess API를 통해 플레이어(나 프린터)의 프로세스를 생성한다.
생성되는 프로세스는 능동형 콘텐츠에 내장된 콘텐츠의 재생, 복사, 프린팅 등에 이용되고 의도 엔진 코드의 의도에 따라 설정되는 대응하는 플레이어 프로그램의 프로세서일 수 있다.
엔진 코드를 수행하는 중앙 처리 유닛(211)은 생성된 프로세스에서 이용되는 파일 I/O(Input/Output)(또는 처리) API를 후킹 설정(S107)한다.
예를 들어, 의도 엔진 코드를 수행하는 중앙 처리 유닛(211)은 생성된 프로세서의 파일생성(예를 들어, CreateFile), 파일읽기(예를 들어, ReadFile), 파일쓰기(예를 들어, WriteFile) 중 적어도 하나 이상의 API를 후킹 설정한다.
중앙 처리 유닛(211)은 생성된 프로세스의 파일생성 API, 파일읽기 API 및/또는 파일쓰기 API의 시작점에 의도 엔진 코드의 대응하는 코드 위치로 점프하도록 설정하여 각 파일 I/O API의 기능을 의도 엔진 코드를 통해 제한하거나 제약하거나 내장된 콘텐츠를 가상화시킬 수 있다.
이와 같이, 콘텐츠의 읽기, 수정 등이 필요한 파일 I/O API를 후킹하여 의도 엔진 코드를 통해 내장된 콘텐츠에 대한 제한된 파일 I/O 접근이 이루어지고 조건에 따른 콘텐츠 접근 제약을 동적으로 부여할 수 있다.
엔진 코드 외부의 플레이어 프로세스나 프린터 프로세스는 콘텐츠를 접근하기 위해 파일읽기 API를 호출하고 후킹된 파일읽기 API를 통해 의도 엔진 코드(의중앙 처리 유닛(211))는 메모리(209)에 로딩되어 있는 내장 콘텐츠를 그 조건에 따라 제공(S109)하거나 제공을 거부할 수 있다.
예를 들어, 플레이어나 프린터 프로세스에서 파일읽기 API 호출에 따라 의도 엔진 코드에 의해 후킹된 파일읽기 API가 호출되고 파일읽기 API에 대응하는 의도 엔진 코드는 내부에 설정된 읽기 조건 변수와 의도 엔진 코드 내부의 조건을 비교하고 조건을 만족하는 경우에 메모리(209)에 로딩되어 있는 내장 콘텐츠의 경로(예를 들어, path)와 내장 콘텐츠의 크기를(또는 콘텐츠를) 플레이어나 프린터 프로세스로 메시지 패싱이나 IPC(interprocess communication) 통신을 통해 전달한다. 그에 따라 플레이어나 프린터 프로세스는 전달받은 경로와 크기 정보를 이용하여 메모리(209)의 내장 콘텐츠에 액세스 가능하다.
이러한 파일 I/O 후킹을 통해, 스토리지(207)에 경로와 파일이름으로 노출되지 않아 콘텐츠를 보호할 수 있고 메모리(209)로부터의 동적인 경로 등을 제공하여 플레이어 등이 배포자(제작자)의 의도에 부합하게 가상화된 콘텐츠를 동적으로 수행할 수 있다.
한편, 엔진 코드 외부의 플레이어 프로세스나 프린터 프로세스는 콘텐츠를 수정하기 위한 파일쓰기 API를 호출하고 후킹된 파일쓰기 API를 통해 의도 엔진 코드(의중앙 처리 유닛(211))는 메모리(209)에 로딩되어 있는 내장 콘텐츠 대신에 다른 데이터(예를 들어, 가비지(쓰레기) 데이터)를 프로세스로 제공할 수 있다. 이후, 플레이어나 프린터 프로세스는 다른 데이터를 통해 파일쓰기를 진행할 수 있다. 또는, 파일쓰기 API를 후킹하는 엔진 코드는 파일쓰기 API를 비활성화시킬 수도 있다.
이상에서 살펴본 바와 같이, 내장 콘텐츠는 스토리지에서 직접 액세스가 불가능하고 메모리에서 의도 엔진 코드에 의해 보호되고 조건에 부합하는 경우에만 그 의도에 따라 실행될 수 있다.
이상에서 설명한 본 발명은, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시 예 및 첨부된 도면에 의해 한정되는 것이 아니다.
100 : 생성 장치
110 : 입력부 130 : 출력부
150 : 통신부 170 : 저장부
190 : 제어부
191 : 엔진 코드 생성부 193 : 능동형 콘텐츠 생성부
200 : 재생 장치
201 : 통신 유닛 203 : 입력 유닛
205 : 출력 유닛 207 : 스토리지
209 : 메모리 211 : 중앙 처리 유닛
300 : 콘텐츠 공유 서버
400 : 광대역 네트워크

Claims (14)

  1. 능동형-콘텐츠 헤더, 내장 콘텐츠 및 엔진 코드를 포함하는 능동형 콘텐츠와 콘텐츠의 실행을 위한 플레이어 프로그램을 저장하는 스토리지;
    데이터와 프로그램을 임시 저장하는 메모리; 및
    상기 능동형 콘텐츠의 실행 요청에 따라 상기 능동형 콘텐츠를 상기 메모리에 로딩하고 상기 능동형 콘텐츠에 포함된 엔진 코드의 수행을 통해 상기 메모리에 로딩된 내장 콘텐츠의 상기 플레이어 프로그램의 프로세스를 통한 실행을 제어하는 중앙 처리 유닛;을 포함하며,
    상기 중앙 처리 유닛은 플레이어 프로그램의 프로세스를 생성하며, 생성된 프로세스에서 이용되는 파일 I/O API를 후킹함으로써 생성된 프로세스에 의해 상기 내장 콘텐츠에 대해 제한된 파일 I/O 접근이 이루어지도록 하는,
    능동형 콘텐츠 재생 장치.
  2. 제1항에 있어서,
    상기 엔진 코드를 수행하는 상기 중앙 처리 유닛은 상기 능동형 콘텐츠에 저장된 조건 변수와 상기 엔진 코드에 내장된 조건의 비교에 따라 상기 플레이어 프로그램을 호출하여 상기 메모리에 로딩된 내장 콘텐츠를 실행하고 상기 조건 변수를 변경하여 변경된 능동형 콘텐츠를 스토리지에 저장하는,
    능동형 콘텐츠 재생 장치.
  3. 삭제
  4. 능동형-콘텐츠 헤더, 내장 콘텐츠 및 엔진 코드를 포함하는 능동형 콘텐츠와 콘텐츠의 실행을 위한 플레이어 프로그램을 저장하는 스토리지;
    데이터와 프로그램을 임시 저장하는 메모리; 및
    상기 능동형 콘텐츠의 실행 요청에 따라 상기 능동형 콘텐츠를 상기 메모리에 로딩하고 상기 능동형 콘텐츠에 포함된 엔진 코드의 수행을 통해 상기 메모리에 로딩된 내장 콘텐츠의 상기 플레이어 프로그램의 프로세스를 통한 실행을 제어하는 중앙 처리 유닛;을 포함하며,
    상기 엔진 코드를 수행하는 상기 중앙 처리 유닛은 프로세스를 생성하기 위한 OS API를 후킹 설정하고 내장 콘텐츠에 대응하는 플레이어 프로그램의 프로세스를 오픈하기 위한 상기 OS API를 호출하는 명령어로 내장 콘텐츠에 대응하는 플레이어 프로그램의 프로세스를 생성하고 생성된 프로세스에서 이용되는 파일생성, 파일읽기 및 파일쓰기 API 중 적어도 하나 이상의 API를 후킹 설정하는,
    능동형 콘텐츠 재생 장치.
  5. 제1항에 있어서,
    상기 능동형 콘텐츠는 실행포맷 헤더를 더 포함하고 상기 엔진 코드는 시스템 엔진 코드 및 하나 이상의 의도 엔진 코드를 포함하며,
    상기 능동형-콘텐츠 헤더는 상기 시스템 엔진 코드 및 상기 하나 이상의 의도 엔진 코드의 오프셋과 크기를 포함하는,
    능동형 콘텐츠 재생 장치.
  6. 제4항에 있어서,
    상기 중앙 처리 유닛은 생성된 프로세스에 의해 상기 파일읽기 API가 호출되는 경우 능동형 콘텐츠의 엔진 코드에 의해 후킹된 파일읽기 API의 실행을 통해 읽기 조건 변수와 엔진 코드에 내장된 조건의 비교에 따라 조건을 만족하는 경우 메모리에 로딩된 내장 콘텐츠의 경로를 상기 생성된 프로세스로 전달하여 내장 콘텐츠에 대한 액세스를 가능토록 하는,
    능동형 콘텐츠 재생 장치.
  7. 제4항에 있어서,
    상기 중앙 처리 유닛은 생성된 프로세스에 의해 상기 파일쓰기 API가 호출되는 경우 메모리에 로딩된 내장 콘텐츠 대신에 다른 데이터를 상기 생성된 프로세스로 제공하는,
    능동형 콘텐츠 재생 장치.
  8. 제5항에 있어서,
    상기 하나 이상의 의도 엔진 코드 및 시스템 엔진 코드는 내장 콘텐츠에 대한 배포자의 조건 및 의도와 조건 미충족시 액션으로 표현 가능한 의도 마크업 언어로 기술된 InML 언어 문서에 대한 파싱을 통해 생성되는 실행 코드인,
    능동형 콘텐츠 재생 장치.
  9. 하나 이상의 콘텐츠, InML 문서, 시스템 엔진들 및 의도 엔진들을 저장하는 저장부;
    상기 시스템 엔진들 및 의도 엔진들을 이용하여 상기 InML 문서로부터 시스템 엔진 코드 및 하나 이상의 의도 엔진 코드를 생성하는 엔진 코드 생성부; 및
    시스템 엔진 코드, 하나 이상의 의도 엔진 코드, 상기 저장부의 콘텐츠 및 능동형-콘텐츠 헤더를 포함하는 능동형 콘텐츠를 생성하는 능동형 콘텐츠 생성부;를 포함하고,
    상기 능동형 콘텐츠는, 재생 장치에서의 실행에 따라 재생 장치의 메모리에 로딩되고 수행되는 의도 엔진 코드에 의해 상기 능동형 콘텐츠에 내장된 콘텐츠에 대해 실행이 제어되며,
    상기 능동형 콘텐츠는, 상기 능동형 콘텐츠의 실행에 따라 플레이어 프로그램의 프로세스를 생성하되, 생성된 프로세스에서 이용되는 파일 I/O API를 후킹함으로써 생성된 프로세스에 의해 상기 내장 콘텐츠에 대해 제한된 파일 I/O 접근이 이루어지도록 하는,
    능동형 콘텐츠 생성 장치.
  10. 제9항에 있어서,
    상기 능동형 콘텐츠에 포함되는 하나 이상의 의도 엔진 코드 및 시스템 엔진 코드는 내장 콘텐츠에 대한 배포자의 조건 및 의도와 조건 미충족시 액션으로 표현 가능한 의도 마크업 언어로 기술된 상기 InML 문서에 대한 파싱을 통해 생성되는 실행 코드인,
    능동형 콘텐츠 생성 장치.
  11. 제10항에 있어서,
    상기 InML 문서는 조건, 의도 및 조건 미충족시 액션으로 구성되는 조건-의도 아이템을 복수 개 포함하고,
    상기 엔진 코드 생성부는 복수의 조건-의도 아이템으로부터 재생 장치에서 독립적으로 실행 가능한 복수의 의도 엔진 코드를 생성하는,
    능동형 콘텐츠 생성 장치.
  12. 제9항에 있어서,
    상기 능동형-콘텐츠 헤더는 상기 시스템 엔진 코드 및 상기 하나 이상의 의도 엔진 코드의 오프셋과 크기를 포함하는,
    능동형 콘텐츠 생성 장치.
  13. 능동형-콘텐츠 헤더, 내장 콘텐츠 및 엔진 코드를 포함하는 능동형 콘텐츠와 콘텐츠의 실행을 위한 플레이어 프로그램을 저장하는 스토리지와 중앙 처리 유닛을 구비하는 장치에서 실행되는 능동형 콘텐츠 재생 방법으로서,
    상기 능동형 콘텐츠의 실행 요청에 따라 상기 능동형 콘텐츠를 메모리에 로딩하고 상기 능동형 콘텐츠에 포함된 엔진 코드의 수행을 통해 상기 메모리에 로딩된 내장 콘텐츠의 상기 플레이어 프로그램의 프로세스를 통한 실행을 제어하며,
    상기 플레이어 프로그램의 프로세스에서 이용되는 파일 I/O API를 후킹함으로써 상기 플레이어 프로그램의 프로세스에 의해 상기 내장 콘텐츠에 대해 제한된 파일 I/O 접근이 이루어지도록 하는,
    능동형 콘텐츠 재생 방법.
  14. 시스템 엔진들 및 의도 엔진들을 이용하여 InML 문서로부터 시스템 엔진 코드 및 하나 이상의 의도 엔진 코드를 생성하는 엔진 코드 생성 단계; 및
    상기 엔진 코드 생성 단계에서 생성된 시스템 엔진 코드, 하나 이상의 의도 엔진 코드, 저장부의 콘텐츠 및 능동형-콘텐츠 헤더를 포함하는 능동형 콘텐츠를 생성하는 능동형 콘텐츠 생성 단계;를 포함하고,
    상기 능동형 콘텐츠는, 재생 장치에서의 실행에 따라 재생 장치의 메모리에 로딩되고 수행되는 의도 엔진 코드에 의해 상기 능동형 콘텐츠에 내장된 콘텐츠에 대해 실행이 제어되며,
    상기 능동형 콘텐츠는, 상기 능동형 콘텐츠의 실행에 따라 플레이어 프로그램의 프로세스를 생성하되, 생성된 프로세스에서 이용되는 파일 I/O API를 후킹함으로써 생성된 프로세스에 의해 상기 내장 콘텐츠에 대해 제한된 파일 I/O 접근이 이루어지도록 하는,
    능동형 콘텐츠 생성 방법.
KR1020180165208A 2016-01-12 2018-12-19 능동형 콘텐츠 재생 장치 및 능동형 콘텐츠 생성 장치 KR102123846B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020180165208A KR102123846B1 (ko) 2018-12-19 2018-12-19 능동형 콘텐츠 재생 장치 및 능동형 콘텐츠 생성 장치
US16/263,491 US11003743B2 (en) 2016-01-12 2019-01-31 Active content playback apparatus and active content creation apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180165208A KR102123846B1 (ko) 2018-12-19 2018-12-19 능동형 콘텐츠 재생 장치 및 능동형 콘텐츠 생성 장치

Publications (1)

Publication Number Publication Date
KR102123846B1 true KR102123846B1 (ko) 2020-06-17

Family

ID=71405544

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180165208A KR102123846B1 (ko) 2016-01-12 2018-12-19 능동형 콘텐츠 재생 장치 및 능동형 콘텐츠 생성 장치

Country Status (1)

Country Link
KR (1) KR102123846B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170084462A (ko) * 2016-01-12 2017-07-20 상명대학교산학협력단 능동형 콘텐츠 생성 방법 및 능동형 콘텐츠가 기록된 컴퓨터 판독가능 기록매체

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170084462A (ko) * 2016-01-12 2017-07-20 상명대학교산학협력단 능동형 콘텐츠 생성 방법 및 능동형 콘텐츠가 기록된 컴퓨터 판독가능 기록매체

Similar Documents

Publication Publication Date Title
US8601470B2 (en) Symbiotic smart peripherals
US7739659B2 (en) Information processing apparatus, executability determining method, and computer program for the same
CN102938039B (zh) 针对应用的选择性文件访问
KR101238572B1 (ko) 신뢰 환경을 지원하기 위한 컴퓨터 판독가능 구성요소의자동 업데이트
JP4768741B2 (ja) 少なくとも1つの保護されたコンテンツアイテムの使用権限を有効にする方法、装置、及びコンピュータプログラム製品
KR20090073177A (ko) 씬 클라이언트 소프트웨어 개발 환경을 제공하기 위한 방법, 서버 기반 소프트웨어 개발 프로젝트 공유를 위한 방법, 및 컴퓨터-판독가능 매체
JP2000207200A (ja) ソフトウェア・プログラム・プロテクト・システムおよび機械読み出しが可能な媒体
JP2006229597A (ja) 再生装置、プログラムおよび方法
US20190370436A1 (en) Memory assignment for guest operating systems
KR102123846B1 (ko) 능동형 콘텐츠 재생 장치 및 능동형 콘텐츠 생성 장치
JP2013509643A (ja) 安全に保護されている時間的および空間的にシフトした視聴覚著作物
JP2007233610A (ja) 情報処理装置、ポリシー管理方法、記憶媒体、プログラム
KR102615556B1 (ko) 키 관리 서버를 이용한 데이터의 실시간 암복호화 보안 시스템 및 방법
JP2008152519A (ja) コンピュータ及びその基本ソフトウェア
US11003743B2 (en) Active content playback apparatus and active content creation apparatus
JP2008234539A (ja) 情報処理装置及びファイル処理方法並びにプログラム
KR101797530B1 (ko) 능동형 콘텐츠 생성 방법 및 능동형 콘텐츠가 기록된 컴퓨터 판독가능 기록매체
JP4852309B2 (ja) 資産管理装置及び資産管理方法
JP2002175187A (ja) コンテンツカプセルの実行管理方法、コンピュータシステム及びコンテンツカプセルを記録した記録媒体
KR101434794B1 (ko) 프로그램 해킹 방어 방법 및 시스템
JP2011145772A (ja) サーバ、制御方法、および、プログラム
JP6053182B2 (ja) トレースシステム及びトレース方法
US7672454B2 (en) Method for copy protection of digital content
CN113486330A (zh) 应用程序运行方法、装置、设备和存储介质
JP2001337819A (ja) ソフトウェアのインストール方法及びインストールプログラムを記録した記録媒体

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant