KR101442000B1 - 분리 실행 기반의 컨텐츠 등록 서버, 그 방법 및 그 방법을 수행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체 - Google Patents

분리 실행 기반의 컨텐츠 등록 서버, 그 방법 및 그 방법을 수행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체 Download PDF

Info

Publication number
KR101442000B1
KR101442000B1 KR1020100024585A KR20100024585A KR101442000B1 KR 101442000 B1 KR101442000 B1 KR 101442000B1 KR 1020100024585 A KR1020100024585 A KR 1020100024585A KR 20100024585 A KR20100024585 A KR 20100024585A KR 101442000 B1 KR101442000 B1 KR 101442000B1
Authority
KR
South Korea
Prior art keywords
content
code block
code
registration server
profiling
Prior art date
Application number
KR1020100024585A
Other languages
English (en)
Other versions
KR20110013176A (ko
Inventor
권오인
남기선
Original Assignee
에스케이플래닛 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이플래닛 주식회사 filed Critical 에스케이플래닛 주식회사
Publication of KR20110013176A publication Critical patent/KR20110013176A/ko
Application granted granted Critical
Publication of KR101442000B1 publication Critical patent/KR101442000B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/258Client or end-user data management, e.g. managing client capabilities, user preferences or demographics, processing of multiple end-users preferences to derive collaborative data
    • H04N21/25808Management of client data
    • H04N21/25816Management of client data involving client authentication
    • 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
    • H04N21/8193Monomedia components thereof involving executable data, e.g. software dedicated tools, e.g. video decoder software or IPMP tool
    • 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/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/835Generation of protective data, e.g. certificates
    • H04N21/8355Generation of protective data, e.g. certificates involving usage data, e.g. number of copies or viewings allowed

Abstract

본 발명은 분리 실행 기반의 컨텐츠 등록 서버, 그 방법 및 그 방법을 수행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체에 관한 것으로, 컨텐츠에 대한 호스트 단말과 저장장치 간의 분리 실행에 필요한 분리 실행 대상 코드 블록과 서비스용 컨텐츠를 컨텐츠 등록 서버에 쉽게 등록할 수 있으며, 컨텐츠 제공자는 자신이 설정한 보안 수준에 따라 등록할 컨텐츠에서 분리 실행 대상 코드 블록을 추출할 수 있는 보안 방법을 제공하기 위한 것이다. 본 발명에 따르면, 컨텐츠 제공 단말이 컨텐츠 등록 서버로부터 내려받은 프로파일링 및 분석 툴을 실행한다. 컨텐츠 제공 단말이 프로파일링 및 분석 툴에서 등록할 컨텐츠를 호출한다. 컨텐츠 제공 단말이 호출한 컨텐츠에 대한 동적 프로파일링(dynamic profiling) 및 정적 분석(static analysis)을 통하여 컨텐츠의 코드 영역에서 분리 실행 대상 코드 블록을 추출하고, 분리 실행 대상 코드 블록이 추출된 코드 영역에 스터브 코드를 삽입하여 서비스용 컨텐츠를 생성한다. 그리고 컨텐츠 제공 단말은 분리 실행 대상 코드 블록과 서비스용 컨텐츠를 컨텐츠 등록 서버에 등록한다. 이때 컨텐츠 제공 단말은 컨텐츠 제공자가 설정한 보안 수준에 따라 동적 프로파일링 및 정적 분석을 수행할 수 있다.

Description

분리 실행 기반의 컨텐츠 등록 서버, 그 방법 및 그 방법을 수행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체{Server for registering separating execution based contents, method thereof and computer recordable medium storing program performing the method}
본 발명은 컨텐츠의 복제 방지 기술에 관한 것으로, 더욱 상세하게는 컨텐츠에 대한 호스트 단말(host terminal)과 저장장치 간의 분리 실행에 필요한 분리 실행 대상 코드 블록과 서비스용 컨텐츠를 컨텐츠 등록 서버에 등록하는 분리 실행 기반의 컨텐츠 등록 서버, 그 방법 및 그 방법을 수행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체에 관한 것이다.
일반적으로 호스트 단말은 운영체제 위에 복수의 컨텐츠가 설치된다. 컨텐츠는 디지털 형태로 저장되고 유통되는 디지털 저작물로서, 소프트웨어, 응용프로그램, 멀티미디어 데이터 등을 포함한다. 예컨대 사용자는 호스트 단말에 설치된 각종 컨텐츠를 이용하여 문서편집, 영상편집, 게임 등을 수행할 수 있다.
이와 같은 컨텐츠는, 무료로 사용할 수 있는 컨텐츠도 있지만, 온오프라인에서 유료로 판매되고 있다. 사용자는 필요한 컨텐츠를 구매하고, 구매한 컨텐츠를 호스트 단말에 설치함으로써 사용하게 된다. 컨텐츠는 인증번호를 통한 인증을 통과하게 되면, 호스트 단말에 설치된다. 통상적으로 인증번호는 구매한 컨텐츠와 함께 제공된다.
이와 같은 인증번호를 이용한 인증 방식의 컨텐츠는 해킹에 쉽게 노출되는 문제점을 안고 있다. 즉 해당 프로그램의 인증번호가 해킹되거나, 인증을 우회할 수 있는 코드가 해당 컨텐츠에 추가될 경우, 해당 컨텐츠를 구매하지 않은 사람들도 복제된 컨텐츠를 호스트 단말에 설치하여 무단으로 사용할 수 있다.
이와 같은 컨텐츠의 무단 사용으로 인한 컨텐츠 제공자(content provider; CP)의 피해가 증가하고 있는 실정이다. 컨텐츠의 무단 사용은 컨텐츠 제공자의 컨텐츠의 개발 의욕을 떨어뜨리는 요인으로 작용하고 있다.
또한 컨텐츠 제공자는 개발한 컨텐츠의 무단 복제를 억제하기 위한 보안 방법에도 주의를 기울어야 하기 때문에, 컨텐츠 개발에 많은 비용이 소요되어 컨텐츠 제공자에게 부담으로 작용하고 있는 실정이다.
따라서 본 발명의 목적은 컨텐츠의 복제를 억제하기 위해서, 컨텐츠 제공자가 컨텐츠에 대한 호스트 단말과 저장장치 간의 분리 실행에 필요한 분리 실행 대상 코드 블록과 서비스용 컨텐츠를 컨텐츠 등록 서버에 쉽게 등록할 수 있는 분리 실행 기반의 컨텐츠 등록 서버, 그 방법 및 그 방법을 수행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체를 제공하기 위한 것이다.
본 발명의 다른 목적은 컨텐츠 제공자가 컨텐츠에 대한 보안 수준을 조절하여 컨텐츠 등록 서버에 등록할 수 있는 분리 실행 기반의 컨텐츠 등록 서버, 그 방법 및 그 방법을 수행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체를 제공하기 위한 것이다.
상기 목적을 달성하기 위하여, 본 발명은 데이터베이스부, 송수신부 및 서버제어부를 포함하여 구성되는 분리 실행 기반의 컨텐츠 등록 서버를 제공한다. 송수신부는 컨텐츠 제공 단말과 통신을 수행한다. 그리고 서버제어부는 송수신부를 통하여 컨텐츠 제공 단말로부터 컨텐츠의 등록 요청을 수신하고, 컨텐츠를 컨텐츠에서 추출된 분리 실행 대상 코드 블록과, 분리 실행 대상 코드 블록이 추출된 코드 영역에 스터브 코드가 삽입된 서비스용 컨텐츠로 분리하여 데이터베이스부에 등록한다.
본 발명에 따른 분리 실행 기반의 컨텐츠 등록 서버에 있어서, 서버제어부는, 송수신부를 통하여 컨텐츠 제공 단말로부터 등록할 컨텐츠에 대한 프로파일링 및 분석을 통하여 분리한 분리 실행 대상 코드 블록과 서비스용 컨텐츠를 수신할 수 있다.
본 발명에 따른 분리 실행 기반의 컨텐츠 등록 서버에 있어서, 서버제어부는, 분리 실행 대상 코드 블록을 실제 저장장치의 실행 환경에 대응하는 테스트 환경에서 실행하여 검증 항목을 기반으로 유효성을 검증하고, 검증 결과 유효하지 않은 분리 실행 대상 코드 블록이 검출된 경우, 컨텐츠 제공 단말로 검증 실패 결과를 피드백하고, 검증 결과 유효한 경우 분리 실행 대상 코드 블록을 등록할 수 있다.
본 발명에 따른 분리 실행 기반의 컨텐츠 등록 서버에 있어서, 서버제어부는 컨텐츠 제공 단말로부터 전송한 검증 실패 결과를 기반으로 등록할 컨텐츠에 대한 재 프로파일링 및 분석을 통하여 분리한 분리 실행 대상 코드 블록과 서비스용 컨텐츠를 재수신할 수 있다.
본 발명에 따른 분리 실행 기반의 컨텐츠 등록 서버에 있어서, 서버제어부는 송수신부를 통하여 컨텐츠 제공 단말로부터 등록할 컨텐츠와, 등록할 컨텐츠에 대한 프로파일링 및 분석을 통하여 추출한 분리 실행 대상 코드 블록의 리스트를 수신하고, 수신한 리스트를 기반으로 수신한 컨텐츠로부터 분리 실행 대상 코드 블록을 추출하고, 분리 실행 대상 코드 블록이 추출된 코드 영역에 스터브 코드를 삽입하여 서비스용 컨텐츠를 생성할 수 있다.
본 발명에 따른 분리 실행 기반의 컨텐츠 등록 서버에 있어서, 서버제어부는 분리 실행 대상 코드 블록을 실제 저장장치의 실행 환경에 대응하는 테스트 환경에서 실행하여 검증 항목을 기반으로 유효성을 검증하고, 검증 결과 유효하지 않은 분리 실행 대상 코드 블록이 검출된 경우, 컨텐츠 제공 단말로 검증 실패 결과를 피드백하고, 검증 결과 유효한 경우 분리 실행 대상 코드 블록을 등록할 수 있다.
본 발명에 따른 분리 실행 기반의 컨텐츠 등록 서버에 있어서, 서버제어부는, 컨텐츠 제공 단말로부터 전송한 검증 실패 결과를 기반으로 등록할 컨텐츠에 대한 재 프로파일링 및 분석을 통하여 추출한 분리 실행 대상 코드 블록의 리스트를 재수신할 수 있다.
본 발명에 따른 분리 실행 기반의 컨텐츠 등록 서버에 있어서, 검증 항목은 Floating Point Instruction 유무, SIMD Instruction Set 유무, Initial Context에 포함된 메모리 범위가 임계 용량을 초과하는 지의 유무, 분리 실행 대상 코드 블록 내에 장시간 반복하는 루프의 존재 유무, 분리 실행 대상 코드 블록 내에 데이터가 존재하는 지의 유무 중에 적어도 하나를 포함할 수 있다.
본 발명에 따른 분리 실행 기반의 컨텐츠 등록 서버에 있어서, 서버제어부는 송수신부를 통하여 컨텐츠 제공 단말로부터 등록할 컨텐츠를 수신하고, 수신한 컨텐츠에 대한 프로파일링 및 분석을 통하여 분리 실행 대상 코드 블록을 추출하고, 분리 실행 대상 코드 블록이 추출된 코드 영역에 스터브 코드를 삽입하여 서비스용 컨텐츠를 생성할 수 있다.
본 발명에 따른 분리 실행 기반의 컨텐츠 등록 서버에 있어서, 서버제어부는 분리 실행 대상 코드 블록을 프로세서가 구비된 저장장치에서 실행할 수 있는 저장장치용 코드 블록으로 변환하여 데이터베이스부에 등록할 수 있다.
본 발명은 또한, 분리 실행 기반의 컨텐츠 등록을 수행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체로서, 등록할 컨텐츠를 호출하는 호출 단계, 호출한 컨텐츠에 대한 프로파일링 및 분석을 통하여 컨텐츠의 코드 영역에서 분리 실행 대상 코드 블록을 추출하고, 분리 실행 대상 코드 블록이 추출된 코드 영역에 스터브 코드를 삽입하여 서비스용 컨텐츠를 생성하는 추출 및 생성 단계, 분리 실행 대상 코드 블록과 서비스용 컨텐츠를 컨텐츠 등록 서버로 전송하여 등록을 요청하는 전송 단계를 수행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체를 제공한다.
본 발명에 따른 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체에 있어서, 호출 단계 이전에 컨텐츠 등록 서버로부터 내려받은 프로파일링 및 분석 툴을 실행하는 실행 단계를 더 수행할 수 있다. 이때 호출 단계에서 프로파일링 및 분석 툴에서 등록할 컨텐츠를 호출할 수 있다.
본 발명에 따른 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체에 있어서, 호출 단계는 등록할 컨텐츠에 대한 보안 수준을 설정하는 보안 수준 설정 단계를 더 포함할 수 있다. 이때 추출 및 생성 단계에서 설정된 보안 수준에 따라 프로파일링 및 분석을 수행할 수 있다.
본 발명에 따른 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체에 있어서, 보안 수준 설정 단계는 보안 수준 설정 항목을 표시하는 단계, 보안 수준 설정 항목 중에서 선택된 보안 수준 설정 항목으로 보안 수준을 설정하는 단계를 포함할 수 있다.
본 발명에 따른 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체에 있어서, 보안 수준 설정 항목은 베이식 블록 그룹의 호출 빈도, 베이식 블록 그룹의 호출 위치, 호스트 단말의 메모리 참조 빈도, 호스트 단말의 OS API 참조 빈도, 저장장치의 하드웨어 요소 중에 적어도 하나를 포함할 수 있다.
본 발명에 따른 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체에 있어서, 추출 및 생성 단계는 호출한 컨텐츠의 코드 영역에 대한 프로파일링 및 분석을 통하여 복수의 베이식 블록 그룹을 선정하는 선정 단계, 복수의 베이식 블록 그룹 중에서 분리 실행 대상 코드 블록을 선택하여 컨텐츠의 코드 영역에서 추출하는 추출 단계를 더 포함할 수 있다.
본 발명에 따른 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체에 있어서, 선정 단계는 호출한 컨텐츠의 코드 영역에 대한 동적 프로파일링을 통하여 기초 정보를 수집하는 수집 단계, 수집한 기초 정보를 기반으로 컨텐츠에 대한 정적 분석을 수행하여 복수의 베이식 블록 그룹을 선정하는 베이식 블록 그룹 선정 단계, 분리 실행 대상 코드 블록이 추출된 코드 영역에 스터브 코드를 삽입하여 서비스용 컨텐츠를 생성하는 단계를 포함할 수 있다.
본 발명에 따른 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체에 있어서, 수집 단계에서 기초 정보는 코드 블록 추출 장치가 컨텐츠에 대한 런-타임(run-time) 동안 수집한 컨텐츠의 코드 영역에 대한 정보이다.
본 발명에 따른 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체에 있어서, 베이식 블록 그룹 선정 단계에서, 수집한 기초 정보의 간접 주소를 컨트롤 플로우(control flow)에 대입하여 컨텐츠의 코드 영역의 분석 범위를 확장하여 정적 분석을 수행할 수 있다.
본 발명에 따른 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체에 있어서, 베이식 블록 그룹은 복수의 베이식 블록을 포함하며, 시작점(entry point)을 통한 제어 신호의 진입 및 복수의 베이식 블록 간의 제어 신호의 이동은 허용하고, 시작점을 제외한 복수의 베이식 블록 내부로의 제어 신호의 진입이 없는 서로 관련된 복수의 베이식 블록의 모임이다.
본 발명에 따른 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체에 있어서, 베이식 블록은 단일 입력(single input) 및 단일 출력(single output)의 속성과, 외부에서 내부로의 제어 신호의 진입을 허용하지 않는 속성을 갖는 코드 블록이다.
본 발명에 따른 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체에 있어서, 전송 단계에서 컨텐츠의 등록 정보를 함께 컨텐츠 등록 서버로 전송할 수 있다. 이때 컨텐츠의 등록 정보는 제목, Mime 타입, 설명서, 컨텐츠 제공자 이름, 과금 정보 중에 적어도 하나를 포함한다.
본 발명에 따른 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체에 있어서, 전송 단계 이후에 컨텐츠 등록 서버로부터 전송한 분리 실행 대상 코드 블록 중 유효하지 않은 분리 실행 대상 코드 블록이 포함되어 있다는 검증 실패 결과를 수신하는 수신 단계, 수신한 검증 실패 결과를 기반으로 등록할 컨텐츠에 대한 재 프로파일링 및 분석을 통하여 다시 분리 실행 대상 코드 블록과 서비스용 컨텐츠를 분리하여 컨텐츠 등록 서버로 재전송하는 재전송 단계를 더 수행할 수 있다.
본 발명에 따른 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체에 있어서, 전송 단계 또는 재전송 단계 이후에 컨텐츠 등록 서버로부터 전송한 분리 실행 대상 코드 블록이 유효하다는 검증 통과 결과를 수신하는 단계, 컨텐츠 등록 서버로부터 등록 요청한 컨텐츠에 대한 등록 완료 메시지를 수신하는 단계를 더 수행할 수 있다.
본 발명에 따른 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체에 있어서, 재전송 단계에서 수신한 검증 실패 결과에 포함된 유효하지 않은 분리 실행 대상 코드 블록을 블랙 리스트(black list)에 올려서 선정 대상에서 배제하고 재 프로파일링 및 분석을 수행할 수 있다.
본 발명은 또한, 분리 실행 기반의 컨텐츠 등록을 수행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체로서, 등록할 컨텐츠를 호출하는 단계, 호출한 컨텐츠에 대한 프로파일링 및 분석을 통하여 컨텐츠의 코드 영역에서 분리 실행 대상 코드 블록을 추출하는 추출 단계, 추출한 분리 실행 대상 코드 블록의 리스트를 생성하는 생성 단계, 컨텐츠와 생성한 리스트를 컨텐츠 등록 서버로 전송하여 등록을 요청하는 전송 단계를 수행하는 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체를 제공한다.본 발명에 따른 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체에 있어서, 호출 단계 이전에, 컨텐츠 등록 서버로부터 내려받은 프로파일링 및 분석 툴을 실행하는 실행 단계를 더 수행할 수 있다. 이때 호출 단계에서 프로파일링 및 분석 툴에서 등록할 컨텐츠를 호출할 수 있다.
본 발명에 따른 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체에 있어서, 호출 단계는 등록할 컨텐츠에 대한 보안 수준을 설정하는 보안 수준 설정 단계를 더 포함할 수 있다. 이때 추출 단계에서 설정된 보안 수준에 따라 프로파일링 및 분석을 수행할 수 있다.
본 발명에 따른 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체에 있어서, 전송 단계 이후에, 컨텐츠 등록 서버로부터 전송한 리스트에 포함된 분리 실행 대상 코드 블록 중 유효하지 않은 분리 실행 대상 코드 블록이 포함되어 있다는 검증 실패 결과를 수신하는 수신 단계, 수신한 검증 실패 결과를 기반으로 등록할 컨텐츠에 대한 재 프로파일링 및 분석을 통하여 다시 추출한 분리 실행 대상 코드 블록의 리스트를 생성하여 컨텐츠 등록 서버로 재전송하는 재전송 단계를 더 수행할 수 있다.
본 발명에 따른 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체에 있어서, 전송 단계 또는 재전송 단계 이후에 컨텐츠 등록 서버로부터 전송한 분리 실행 대상 코드 블록의 리스트가 유효하다는 검증 통과 결과를 수신하는 단계, 컨텐츠 등록 서버로부터 등록 요청한 컨텐츠에 대한 등록 완료 메시지를 수신하는 단계를 더 수행할 수 있다.
그리고 본 발명에 따른 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체에 있어서, 재전송 단계에서 수신한 검증 실패 결과에 포함된 유효하지 않은 분리 실행 대상 코드 블록을 블랙 리스트(black list)에 올려서 선정 대상에서 배제하고 재 프로파일링 및 분석을 수행할 수 있다.
본 발명에 따르면 컨텐츠 제공자는 쉽게 접근이 가능한 웹을 통해 컨텐츠 등록 서버가 제공하는 프로파일링 및 분석 툴을 이용하여 응용프로그램을 컨텐츠 등록 서버에 등록할 수 있다. 이때 프로파일링 및 분석 툴은 호스트 단말과 저장장치 간의 분리 실행을 가능하게 하는 분리 실행 대상 코드 블록을 응용프로그램의 코드 영역의 일부 블록에서 추출하여 사용함으로써, 응용프로그램의 복제 방지와 관련된 보안 성능을 향상시킬 수 있다.
컨텐츠 제공자는 컨텐츠 등록 서버에서 제공하는 프로파일링 및 분석 툴을 이용하여 응용프로그램을 호스트 단말과 저장장치 간의 분리 실행에 필요한 분리 실행 대상 코드 블록과 서비스용 응용프로그램으로 분할하여 컨텐츠 등록 서버에 등록할 수 있다.
컨텐츠 제공자는 등록할 응용프로그램에 대한 보안 수준을 설정하고, 설정된 보안 수준에 따라 응용프로그램을 분리 실행 대상 코드 블록과 서비스용 응용프로그램으로 분할하여 컨텐츠 등록 서버에 등록할 수 있기 때문에, 컨텐츠 제공자가 요구하는 보안 수준에 맞게 보안이 적용된 응용프로그램을 컨텐츠 등록 서버에 등록할 수 있다.
그리고 프로파일링 및 분석을 통하여 추출된 분리 실행 대상 코드 블록에 대해서 실제 호스트 단말 및 저장장치의 분리 실행 환경에 대응하는 테스트 프로세스 환경에서 테스트를 수행하여 검증하고, 검증 결과를 프로파일링 및 분석을 담당하는 부분으로 피드백함으로써, 응용프로그램에 대한 호스트 단말과 저장장치 간의 분리 실행 시 안정적인 실행 환경을 제공할 수 있는 분리 실행 대상 코드 블록을 추출할 수 있다. 따라서 분리 실행 기반의 응용프로그램의 실행 시 발생될 수 있는 호스트 단말 및 저장장치의 성능 및 안정성 저하 요인을 사전에 제거할 수 있다.
도 1은 본 발명의 제1 실시예에 따른 분리 실행 기반의 컨텐츠 등록 시스템을 포함하는 디지털 저작권 관리(digital rights management; DRM) 시스템을 보여주는 블록도이다.
도 2는 도 1의 컨텐츠 제공 단말의 구성을 보여주는 블록도이다.
도 3은 도 1의 컨텐츠 등록 서버가 제공하는 프로파일링 및 분석 툴의 구성을 보여주는 블록도이다.
도 4는 컨텐츠의 데이터 구조를 보여주는 블록도이다.
도 5는 컨텐츠에서 분할된 분리 실행 대상 코드 블록과, 서비스용 컨텐츠의 구성을 보여주는 블록도이다.
도 6은 도 1의 컨텐츠 등록 서버의 구성을 보여주는 블록도이다.
도 7은 본 발명의 제1 실시예에 따른 분리 실행 기반의 컨텐츠 등록 방법을 보여주는 흐름도이다.
도 8은 도 7의 분리 실행 대상 코드 블록 추출 및 서비스용 컨텐츠 생성 단계에 따른 상세 흐름도이다.
도 9 및 도 10은 도 8의 분리 실행 대상 코드 블록으로 추출될 베이식 블록 그룹의 선정 단계를 설명하기 위한 예시도이다.
도 11은 도 7의 등록 방법 중 검증 단계를 설명하기 위한 예시도이다.
도 12는 본 발명의 제2 실시예에 따른 분리 실행 기반의 컨텐츠 등록 시스템을 포함하는 디지털 저작권 관리 시스템을 보여주는 블록도이다.
도 13은 본 발명의 제2 실시예에 따른 분리 실행 기반의 컨텐츠 등록 방법을 보여주는 흐름도이다.
도 14는 도 13의 분리 실행 대상 코드 블록의 리스트 생성 단계에 따른 상세 흐름도이다.
도 15는 도 13의 등록 방법 중 검증 단계를 설명하기 위한 예시도이다.
도 16은 본 발명의 제3 실시예에 따른 분리 실행 기반의 컨텐츠 등록 시스템을 포함하는 디지털 저작권 관리 시스템을 보여주는 블록도이다.
도 17은 본 발명의 제3 실시예에 따른 분리 실행 기반의 컨텐츠 등록 방법을 보여주는 흐름도이다.
도 18은 도 16의 등록 방법 중 검증 단계를 설명하기 위한 예시도이다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예를 보다 상세하게 설명하자고 한다.
본 발명의 제1 실시예에 따른 분리 실행 기반의 디지털 저작권 관리(digital rights management; DRM) 시스템(100)은, 도 1에 도시된 바와 같이, 네트워크(55)를 매개로 연결된 컨텐츠 제공 단말(10), 컨텐츠 등록 서버(20) 및 호스트 단말(51)와, 호스트 단말(51)에 유무선 인터페이스를 매개로 연결된 저장장치(53)를 포함하여 구성된다. 특히 분리 실행 기반의 디지털 저작권 관리 시스템(100)은 분리 실행 기반의 컨텐츠 등록 시스템(이하 '컨텐츠 등록 시스템'이라 함)을 포함한다. 컨텐츠 등록 시스템은 네트워크(55)를 매개로 연결된 컨텐츠 제공 단말(10) 및 컨텐츠 등록 서버(20)를 포함하여 구성된다.
여기서 '분리 실행'은 컨텐츠(30)를 실행하는 데 있어서 호스트 단말(51)와 저장장치(53)가 서로 연동되어 실행하는 것을 의미한다. 특히 분리 실행을 구현하기 위해서, 원본 컨텐츠(30)의 코드 영역에서 일부 코드 블록(이하 '분리 실행 대상 코드 블록(34)'이라 함)을 분리하여 저장장치(53)에 설치하고, 분리 실행 대상 코드 블록(34)이 제거된 컨텐츠(이하 '서비스용 컨텐츠(32)'라 함)를 호스트 단말(51)에 설치한다. 따라서 분리 실행 기반의 컨텐츠(30)를 실행하고자 할 경우에, 호스트 단말(51)는 서비스용 컨텐츠(32) 실행 중 분리 실행 대상 코드 블록(34)이 제거된 부분에 대한 출력값을 저장장치(53)에 요청하여 반환받는 형태로 해당 컨텐츠(30)를 실행한다. 이때 분리 실행 대상 코드 블록(34)은 저장장치(53)에서 사용되는 저장장치용 코드 블록(27)으로 변환되어 저장장치(53)에 제공된다.
네트워크(55)는 컨텐츠 제공 단말(10), 컨텐츠 등록 서버(20) 및 호스트 단말(51) 간의 데이터 전송 및 정보 교환을 위한 일련의 데이터 송수신 동작을 수행한다. 네트워크(55)는 IP를 통하여 대용량 데이터의 송수신 서비스 및 끊김없는 데이터 서비스를 제공하는 IP망으로, IP를 기반으로 서로 다른 망을 통합한 IP망 구조인 ALL-IP망일 수 있다. 또한 네트워크(55)는 유선통신망, 이동통신망, WiBro(Wireless Broadband)망, HSDPA(High-Speed Downlink Packet Access)망, 위성통신망 또는 기타 널리 공지되었거나 향후 개발될 유무선 또는 이들의 결합망을 포함한다.
컨텐츠 제공 단말(10)은 컨텐츠 제공자가 운용하는 단말로서, 네트워크(55)를 통하여 컨텐츠 등록 서버(20)와 통신을 수행하고, 컨텐츠 제공자가 개발한 컨텐츠(30)를 저장하고 있다. 특히 컨텐츠 제공 단말(10)은 컨텐츠 제공자의 선택 신호를 입력받아 등록할 컨텐츠(30)에 대해서 보안을 설정하여 컨텐츠 등록 서버(20)에 등록한다. 즉 컨텐츠 제공 단말(10)은 컨텐츠 등록 서버(20)로부터 내려받은 프로파일링 및 분석 툴(40)을 실행한다. 컨텐츠 제공 단말(10)은 프로파일링 및 분석 툴(40)에서 등록할 컨텐츠(30)를 호출한다. 컨텐츠 제공 단말(10)은 호출한 컨텐츠(30)에 대한 동적 프로파일링(dynamic profiling) 및 정적 분석(static analysis)(이하, '프로파일링 및 분석'이라 함)을 통하여 컨텐츠(30)의 코드 영역에서 분리 실행 대상 코드 블록(34)을 추출한다. 아울러 컨텐츠 제공 단말(10)은 분리 실행 대상 코드 블록(34)이 추출된 코드 영역에 스터브 코드(stub code)를 삽입하여 서비스용 컨텐츠(32)를 생성한다. 그리고 컨텐츠 제공 단말(10)은 분리 실행 대상 코드 블록(34)과 서비스용 컨텐츠(32)를 컨텐츠 등록 서버(20)에 등록한다. 이때 컨텐츠 제공 단말(10)은 컨텐츠(30)에 대한 보안을 설정하여 컨텐츠 등록 서버(20)에 등록할 수 있는 단말로서, 호스트 단말 또는 네트워크(55) 상에 구축된 서버일 수 있다.
컨텐츠 등록 서버(20)는 네트워크(55)를 통한 컨텐츠 제공자의 요청에 따라 컨텐츠 제공 단말(10)로부터 컨텐츠(30)를 수신하여 등록한다. 컨텐츠 등록 서버(20)는 호스트 단말(51)을 통한 고객의 구매 요청에 따라 등록된 컨텐츠(30) 를 판매할 수 있다. 이때 컨텐츠 등록 서버(20)는 컨텐츠 제공 단말(10)로부터 컨텐츠(30)의 분리 실행 대상 코드 블록(34) 및 서비스용 컨텐츠(32)를 수신하여 등록한다. 컨텐츠 등록 서버(20)는 컨텐츠 제공 단말(10) 또는 호스트 단말(51)이 네트워크(55)를 통하여 접근할 수 있는 웹페이지(21)를 운영한다. 컨텐츠 등록 서버(20)는 컨텐츠(30)의 분석 및 등록에 필요한 프로파일링 및 분석 툴(40)을 제공한다. 그리고 컨텐츠 등록 서버(20)는 분리 실행 대상 코드 블록(34)을 저장장치(53)에서 실행할 수 있는 코드 블록 즉, 저장장치용 코드 블록(37)으로 변환하여 저장한다.
호스트 단말(51)은 컨텐츠(30)의 실행이 가능한 독립된 CPU를 가진 컴퓨팅 장치, 예컨대 PC, 노트북, 워크스테이션 등을 통칭한다. 호스트 단말(51)은 다수의 사용자들에 의해 접근이 자유로운 공용 컴퓨터를 포함한다. 호스트 단말(51)에는 서비스용 컨텐츠(32)가 설치되어 있다. 호스트 단말(51)에 유무선 인터페이스를 매개로 저장장치(53)가 연결되면, 호스트 단말(51)은 연결된 저장장치(53)와 함께 컨텐츠(30)에 대한 분리 실행을 수행한다. 호스트 단말(51)의 사용자는 컨텐츠 등록 서버(20)에 등록된 컨텐츠(30)를 구매할 수 있다. 컨텐츠(30)의 구매를 결정하면, 호스트 단말(51)은 구매한 컨텐츠(30)의 서비스용 컨텐츠(32)를 자신에게 설치하고, 구매한 컨텐츠(30)의 저장장치용 코드 블록(27)은 연결된 저장장치(53)에 설치할 수 있다. 여기서 유무선 인터페이스는 USB, USB2, Serial/Parallel Port, Ethernet, TCP/IP, 통신 케이블 등을 이용한 유선 통신망과, 근거리 무선통신망을 포함할 수 있다. 근거리 무선통신 방식으로는 블루투스(Bluetooth), 지그비(zigbee), 루비(Rubee), 적외선데이터통신(IrDA; Infrared Data Association), 초광대역방식(UWB; Ultra Wide Broadband) 등이 사용될 수 있다.
그리고 저장장치(53)는 유무선 인터페이스를 매개로 호스트 단말(51)에 연결되며, 호스트 단말(51)에 설치된 서비스용 컨텐츠(32)에 대한 저장장치용 코드 블록(27)을 저장한다. 저장장치(53)는 컨텐츠(30) 실행시 호스트 단말(51)의 요청에 따라 저장장치용 코드 블록(34)에 대한 연산을 수행하여 출력값을 호스트 단말(51)로 반환한다. 이때 저장장치(53)는 프로세서를 구비한 저장장치로서, USB 메모리, 플래시 메모리 카드, 이에 상응하는 각종 이동식, 휴대식 저장매체(예컨대, SD(Secure Digital) 메모리 카드, microSD 메모리 카드, ISO 7816 표준의 저장장치 등)를 통칭한다.
따라서 사용자가 호스트 단말(51)의 입력부, 예컨대 키보드, 마우스, 터치패드 등을 통하여 컨텐츠(30)의 실행을 요청하면, 호스트 단말(51)은 서비스용 컨텐츠(32)에 대한 실행을 시작한다. 호스트 단말(51)은 서비스용 컨텐츠(32)에 없는 코드에 대한 실행 요청을 저장장치(53)로 전달한다. 그리고 저장장치(53)는 실행 요청에 대응하는 저장장치용 코드 블록(34)을 실행한 후 출력값을 호스트 단말(51)로 전달한다.
아울러 제1 실시예에 따른 컨텐츠 등록 시스템은 컨텐츠 제공 단말(10)의 프로파일링 및 분석을 통하여 추출한 분리 실행 대상 코드 블록(34)에 대한 검증을 컨텐츠 등록 서버(20)에서 수행하고, 그 검증 결과를 컨텐츠 제공 단말(10)로 피드백하여 분리 실행 시 안정적인 실행 환경을 제공할 수 있는 분리 실행 대상 코드 블록(34)이 추출될 수 있도록 한다.
컨텐츠 제공 단말(10)은 등록할 컨텐츠(30)에 대한 프로파일링 및 분석을 통하여 추출한 분리 실행 대상 코드 블록(34)을 컨텐츠 등록 서버(20)로 전송한다. 컨텐츠 등록 서버(20)로부터 전송한 분리 실행 대상 코드 블록(34) 중 유효하지 않은 분리 실행 대상 코드 블록(34)이 포함되어 있다는 검증 실패 결과를 피드백 받으면, 컨텐츠 제공 단말(10)은 수신한 검증 실패 결과를 기반으로 등록할 컨텐츠(30)에 대한 재 프로파일링 및 분석을 통하여 추출한 분리 실행 대상 코드 블록(34)을 컨텐츠 등록 서버(20)로 재전송한다. 그리고 컨텐츠 제공 단말(10)은 컨텐츠 등록 서버(10)로부터 전송한 분리 실행 대상 코드 블록(34)이 유효하다는 검증 통과 결과를 수신하여 출력할 수 있다.
그리고 컨텐츠 등록 서버(20)는 컨텐츠 제공 단말(10)로부터 수신한 분리 실행 대상 코드 블록(34)에 대해 검증하고, 그 검증 결과를 컨텐츠 제공 단말(10)로 피드백 한다. 즉 컨텐츠 등록 서버(20)는 컨텐츠 제공 단말(10)로부터 수신한 분리 실행 대상 코드 블록(34)을 실제 저장장치의 실행 환경에 대응하는 테스트 환경에서 실행하여 유효성을 검증한다. 검증 결과 유효하지 않은 분리 실행 대상 코드 블록(34)이 검출된 경우, 컨텐츠 등록 서버(20)는 컨텐츠 제공 단말(10)로 검증 실패 결과를 피드백 한다. 검증 결과 유효한 경우, 컨텐츠 등록 서버(20)는 분리 실행 대상 코드 블록(34)을 저장장치용 코드 블록(27)으로 변환하고, 검증 통과 결과를 컨텐츠 제공 단말(10)로 피드백 한다.
이와 같이 제1 실시예에 따른 컨텐츠 등록 시스템은 등록할 컨텐츠(30)에서 추출한 분리 실행 대상 코드 블록(34)을 저장장치용 코드 블록(27)으로 변환하기 전에 추출한 분리 실행 대상 코드 블록(34)에 대해 검증하고, 그 검증 결과를 피드백하여 안정적인 실행 환경을 제공할 수 있는 분리 실행 대상 코드 블록(34)을 추출할 수 있다. 이를 통하여 실제 분리 실행 기반의 컨텐츠(30)의 실행 시 발생될 수 있는 성능 및 안정성 저하 요인을 사전에 제거할 수 있다.
이와 같은 제1 실시예에 따른 컨텐츠 등록 시스템의 컨텐츠 제공 단말(10)에 대해서 도 1 내지 도 5를 참조하여 구체적으로 설명하면 다음과 같다. 여기서 도 2는 도 1의 컨텐츠 제공 단말의 구성을 보여주는 블록도이다. 도 3은 도 1의 컨텐츠 등록 서버가 제공하는 프로파일링 및 분석 툴의 구성을 보여주는 블록도이다. 도 4는 컨텐츠의 데이터 구조를 보여주는 블록도이다. 그리고 도 5는 컨텐츠에서 분할된 분리 실행 대상 코드 블록과, 서비스용 컨텐츠의 구성을 보여주는 블록도이다.
제1 실시예에 따른 컨텐츠 제공 단말(10)은 통신부(11), 입력부(12), 저장부(13) 및 단말제어부(15)를 포함하며, 표시부(14)를 더 포함할 수 있다.
통신부(11)는 네트워크(55)를 통하여 컨텐츠 등록 서버(20)와 통신을 수행한다. 통신부(11)는 단말제어부(15)의 제어에 따라 컨텐츠(30)의 등록을 위해 분리 실행 대상 코드 블록(34)과 서비스용 컨텐츠(32)를 컨텐츠 등록 서버(20)로 전송한다. 통신부(11)는 컨텐츠 등록 서버(20)로부터 전송한 분리 실행 대상 코드 블록(34)에 대한 검증 결과, 예컨대 검증 실패 또는 검증 통과 결과를 수신하여 단말제어부(15)로 전달한다. 그리고 통신부(11)는 컨텐츠 등록 서버(20)로부터 등록 완료 메시지를 수신하여 단말제어부(15)에 전달한다.
입력부(12)는 컨텐츠 제공 단말(10)의 조작을 위한 복수의 키를 제공하며, 컨텐츠 제공자의 키선택에 따른 선택 신호를 발생하여 단말제어부(15)로 전달한다. 컨텐츠 제공자는 입력부(12)를 통해 등록할 컨텐츠(30)를 호출하고, 호출된 컨텐츠(30)에 대한 보안 수준의 설정, 분리 실행 대상 코드 블록(34)의 추출 및 서비스용 컨텐츠(32)의 생성을 위한 선택 신호를 입력할 수 있다. 이때 입력부(12)로는 키패드, 터치패드와 같은 포인팅 장치, 터치스크린(touch screen) 등의 입력장치가 사용될 수 있다.
저장부(13)는 컨텐츠 제공 단말(10)의 동작 제어시 필요한 프로그램과, 그 프로그램 수행 중에 발생되는 정보를 저장한다. 저장부(13)는 컨텐츠 제공자가 개발한 컨텐츠(30)를 저장한다. 저장부(13)는 등록할 컨텐츠(30)에 대한 프로파일링 및 분석을 통하여 분리 실행 대상 코드 블록(34)을 추출하는 프로파일링 및 분석 툴(40)을 저장한다. 그리고 저장부(13)는 추출한 분리 실행 대상 코드 블록(34)과, 분리 실행 대상 코드 블록(34)이 분리된 코드 영역에 스터브 코드(36)가 삽입된 서비스용 컨텐츠(32)를 저장할 수 있다.
이때 컨텐츠(30)는 복수 개의 파일, 예컨대 운영체제에서 제공하는 API(application program interface), 개발사에서 제공하는 API 또는 DLL(dynamic linking library)과 같은 파일을 포함한다. 이와 같은 복수의 파일을 포함하는 컨텐츠(30)는, 도 5에 도시된 바와 같이, 코드 영역(31)과 데이터 영역(33)으로 구분할 수 있다. 코드 영역(31)은 복수의 코드 블록을 포함하며, 분리 실행 대상 코드 블록(34)은 코드 영역(31)에서 추출된 복수의 코드 블록을 포함한다. 예컨대 분리 실행 대상 코드 블록(34)은 복수의 베이식 블록 그룹(37; basic block group)을 포함하며, 베이식 블록 그룹(37)은 복수의 베이식 블록(35; basic block)의 모임이다.
이때 베이식 블록(35)은 단일 입력(single input) 및 단일 출력(single output)의 속성을 갖는 명령어의 열(sequence of instruction)로서, 외부에서 내부로의 진입을 허용하지 않는 속성을 갖는 코드 블록으로 정의할 수 있다. 즉 베이식 블록(35)은 항상 시작부터 끝까지 한번에 실행되는 연속적인 문장(코드의 모임)을 의미하며, 중간에 흐름 제어로 인해 실행이 중지되지 않는 문장 그룹이다.
서비스용 컨텐츠(32)는 분리 실행 대상 코드 블록(34)으로 추출된 베이식 블록 그룹(37)의 코드 영역에 스터브 코드(36)가 삽입된 코드 영역(31a)과, 데이터 영역(33)을 포함한다. 이때 스터브 코드(36)는 호스트 단말(51)과 저장장치(53) 간에 컨텐츠(30)에 대한 분리 실행을 수행할 때, 서비스 컨텐츠(32)에서 추출된 코드 영역과, 추출된 코드 영역에 해당하는 분리 실행 대상 코드 블록(34)을 연결한다. 즉 스터브 코드(36)는 컨텐츠(30)에 대한 분리 실행을 수행할 때, 추출된 코드 영역에서 저장장치(53)로 제어 신호를 전달한다. 제어 신호를 수신한 저장장치(53)는 제어 신호에 해당하는 분리 실행 대상 코드 블록(34)에 대한 연산을 수행하여 산출한 출력값을 호스트 단말(51)로 반환한다.
분리 실행 대상 코드 블록(34)은 컨텐츠(30)에 대한 프로파일링 및 분석을 통하여 컨텐츠(30)의 코드 영역(31)에서 추출된 복수의 베이식 블록 그룹(37)을 포함한다. 즉 분리 실행 대상 코드 블록(34)은 컨텐츠(30)에 대한 프로파일링 및 분석을 통하여 컨텐츠(30)의 코드 영역(31)에서 선정된 베이식 블록 그룹(37)으로, 선정된 베이식 블록 그룹(37)들 중에서 적어도 하나가 분리 실행 대상 코드 블록(34)으로 추출될 수 있다. 분리 실행 대상 코드 블록(34)이 추출된 부분에는 스터브 코드(36)가 삽입된다. 후술되겠지만 컨텐츠(30)에 대한 프로파일링 및 분석을 통하여, 컨텐츠(30)는 분리 실행 대상 코드 블록(34)과, 분리 실행 대상 코드 블록(34)이 추출된 서비스용 컨텐츠(32)로 분할된다.
분리 실행 대상 코드 블록(34)은 저장장치용 코드 블록(27)으로 변환되어 저장장치(53)에 저장된 형태로 제공되거나 다운로드 형태로 저장장치(53)에 제공될 수 있다. 분리 실행 대상 코드 블록(34)은 전술된 바와 같이 복수의 베이식 블록(35)을 포함하는 베이식 블록 그룹(37)이다. 분리 실행 대상 코드 블록(34)은 분리 실행 대상 코드 블록(34)의 시작점(entry point)을 통한 제어 신호의 진입 및 베이식 블록(35) 간의 제어 신호의 이동은 허용하지만, 분리 실행 대상 코드 블록(34)의 시작점을 제외한 베이식 블록(35)으로의 제어 신호의 진입이 없는 서로 관련된 복수의 베이식 블록(35)을 포함하는 베이식 블록 그룹(37)으로 선택하는 것이 바람직하다.
이유는 베이식 블록 그룹(37) 중에서 시작점을 제외한 베이식 블록(35)으로의 제어 신호의 진입이 있는 베이식 블록 그룹(37)을 분리 실행 대상 코드 블록(34)으로 추출할 경우, 해당 분리 실행 대상 코드 블록(34)을 추출한 후 삽입되는 스터브 코드(36)에 시작 부분이 아닌 중간으로 제어 신호가 진입할 수 있다. 이 경우 스터브 코드(36)는 해당 제어 신호에 대한 처리를 수행하지 못하여 해당 컨텐츠(30)의 실행이 중지되거나 에러가 발생될 수 있기 때문이다. 즉 스터브 코드(36)은 첫 5Byte를 제외한 나머지 영역에는 NOP(no-operation instruction)와 같은 쓰레기 값이 들어 있기 때문에, 쓰레기 값이 들어 있는 영역으로 제어 신호가 진입할 경우 에러가 발생될 수 있다. 바꾸어 말하면, 시작점을 제외한 베이식 블록(35)으로의 제어 신호의 진입이 있는 베이식 블록 그룹(37)은 분리 실행을 수행할 때, 오류를 발생시킬 수 있는 확률이 높기 때문에, 분리 실행 대상 코드 블록(34)으로는 적합하지 않다.
표시부(14)는 컨텐츠 제공 단말(10)에서 실행되는 각종 기능 메뉴를 비롯하여 저장부(13)에 저장된 정보를 표시할 수 있다. 표시부(14)는 단말제어부(15)의 제어에 따라 등록할 컨텐츠(30)의 리스트를 표시할 수 있다. 표시부(15)는 단말제어부(15)의 제어에 따라 컨텐츠 등록 서버(20)로부터 수신한 검증 결과와 등록 완료 메시지를 출력할 수 있다. 이때 표시부(14)로는 LCD(Liquid Crystal Display)나 터치 스크린이 사용될 수 있다. 터치 스크린은 표시 장치와 입력 장치로서의 역할을 동시에 수행한다.
그리고 단말제어부(15)는 컨텐츠 제공 단말(10)의 전반적인 제어 동작을 수행하는 마이크로프로세서(microprocessor)이다. 단말제어부(15)는 프로파일링 및 분석 툴(40)을 이용하여 등록할 컨텐츠(30)를 분리 실행 대상 코드 블록(34)과 서비스용 컨텐츠(32)로 분리하고, 분리한 분리 실행 대상 코드 블록(34)과 서비스용 컨텐츠(32)를 컨텐츠 등록 서버(20)에 등록한다.
또한 단말제어부(15)는 컨텐츠(20)의 등록 과정에서 컨텐츠 등록 서버(20)로부터 피드백되는 분리 실행 대상 코드 블록(34)에 대한 검증 결과에 따른 재 프로파일링 및 분석을 수행한다. 즉 입력부(12)를 통하여 분석할 컨텐츠(30)에 대한 선택 신호가 입력되면, 단말제어부(15)는 저장부(13)에서 해당 컨텐츠(30)를 호출한다. 단말제어부(15)는 호출한 컨텐츠(30)에 대한 프로파일링 및 분석을 통하여 분리 실행 대상 코드 블록(34)을 추출하고, 추출한 분리 실행 대상 코드 블록(34)을 통신부(11)를 통하여 컨텐츠 등록 서버(20)로 전송한다. 컨텐츠 등록 서버(20)로부터 전송한 분리 실행 대상 코드 블록(34) 중 유효하지 않은 분리 실행 대상 코드 블록(34)이 포함되어 있다는 검증 실패 결과를 수신하면, 단말제어부(15)는 수신한 검증 실패 결과를 기반으로 호출한 컨텐츠(30)에 대한 재 프로파일링 및 분석을 통하여 다시 분리 실행 대상 코드 블록(34)을 추출하고, 추출한 분리 실행 대상 코드 블록(34)을 컨텐츠 등록 서버(20)로 재전송한다. 그리고 단말제어부(15)는 컨텐츠 등록 서버(20)로부터 전송한 분리 실행 대상 코드 블록(34)이 유효하다는 검증 통과 결과를 통신부(11)를 통하여 수신할 수 있다. 이때 단말제어부(15)는 수신한 검증 실패 결과 또는 검증 통과 결과를 표시부(14)를 통하여 출력할 수 있다.
이때 단말제어부(15)는 다음과 같이 프로파일링 및 분석 툴(40)을 실행할 수 있다. 즉 단말제어부(15)는 통신부(11)를 통하여 컨텐츠 등록 서버(20)에 접속하여 인증을 수행한다. 인증을 통과하면, 단말제어부(15)는 통신부(11)를 통하여 컨텐츠 등록 서버(20)로부터 액티브-엑스 론쳐(Active-X launcher)를 내려받아 액티브-엑스를 실행한다. 단말제어부(15)는 컨텐츠 등록 서버(20)로부터 내려받은 프로파일링 및 분석 툴(40)이 저장부(13)에 저장되어 있는 지를 확인한다. 확인 결과 없으면, 단말제어부(15)는 컨텐츠 등록 서버(20)로 프로파일링 및 분석 툴(40)을 요청하여 내려받는다. 확인 결과 있으면, 단말제어부(15)는 프로파일링 및 분석 툴(40)을 실행한다. 이때 액티브-엑스 론쳐에 의해 실행된 액티브-엑스는 컨텐츠 제공 단말(10)과 컨텐츠 등록 서버(20)를 연결하며, 컨텐츠 제공 단말(10)에서 실행되는 프로파일링 및 분석 툴(40)을 이용하여 분리한 분리 실행 대상 코드 블록(34)과 서비스용 컨텐츠(32)를 컨텐츠 등록 서버(20)에 등록할 수 있도록 해준다.
프로파일링 및 분석 툴(40)은 컨텐츠 호출부(42), 베이식 블록 그룹 선정부(44), 추출 및 생성부(46)를 포함하여 구성된다. 컨텐츠 호출부(42)는 분석할 컨텐츠(30)를 호출한다. 베이식 블록 그룹 선정부(44)는 호출한 컨텐츠(30)의 코드 영역(31)에 대한 프로파일링 및 분석을 통하여 복수의 베이식 블록 그룹(37)을 선정한다. 그리고 추출 및 생성부(46)는 복수의 베이식 블록 그룹(37) 중에서 분리 실행 대상 코드 블록(34)을 추출하여 컨텐츠(30)의 코드 영역(31)에서 분리하고, 분리 실행 대상 코드 블록(34)이 추출된 코드 영역에 스터브 코드(36)를 삽입하여 서비스용 컨텐츠(32)를 생성한다. 그리고 추출 및 생성부(46)는 분리 실행 대상 코드 블록(34)과 서비스용 컨텐츠(32)를 컨텐츠 등록 서버(20)에 등록한다.
컨텐츠 호출부(42)는 입력부(12)를 통하여 등록할 컨텐츠(30)에 대한 선택 신호가 입력되면, 저장부(13)에서 해당 컨텐츠(30)를 호출할 수 있다. 컨텐츠 호출부(42)는 등록할 컨텐츠(30)를 호출할 때, 등록할 컨텐츠(30)에 대한 보안 수준을 입력받아 설정할 수 있다. 즉 컨텐츠 호출부(42)는 등록할 컨텐츠(30)의 리스트를 표시부(14)에 표시할 수 있다. 컨텐츠 제공자는 입력부(12)를 통하여 리스트에서 등록할 컨텐츠(30)를 선택하고, 선택된 컨텐츠(30)에 대한 보안 수준을 선택하여 설정한다. 이때 컨텐츠 호출부(42)는 표시부(14)에 컨텐츠 제공자가 선택할 수 있는 보안 수준 설정 항목을 표시한다. 컨텐츠 제공자가 표시된 보안 수준 설정 항목 중에서 특정 보안 수준 설정 항목을 선택하면, 컨텐츠 호출부(42)는 선택된 보안 수준 설정 항목으로 등록할 컨텐츠(30)의 보안 수준을 설정한다.
예컨대 보안 수준 설정 항목은 추출할 코드 블록 즉, 베이식 블록 그룹(37)의 호출 빈도, 베이식 블록 그룹(37)의 호출 위치, 호스트 단말(51)의 메모리 참조 빈도, 호스트 단말(51)의 OS API 참조 빈도, 저장장치(53)의 하드웨어 요소 중에 적어도 하나를 포함한다.
베이식 블록 그룹(37)의 호출 빈도 항목은 프로파일링 및 분석에 의해 자동으로 추출할 분리 실행 대상 코드 블록(34)의 호출 빈도별 우선권(preference)을 컨텐츠 제공자가 설정하는 항목으로, 컨텐츠 제공자는 전체 컨텐츠(30)의 실행 중 몇 번이나 호출되는 가를 선택할 수 있는 항목이다. 이때 호출 빈도가 높을수록 해당 베이식 블록 그룹(37)이 중요하다는 의미가 되어 보안 효과는 높지만, 이는 저장장치(53)에 무리를 주어 전체 컨텐츠(30)의 실행 속도를 저하시킬 수 있다. 따라서 컨텐츠 제공자는 등록할 컨텐츠(30)의 보안 수준에 따라 적절한 호출 빈도를 설정하는 것이 바람직하다.
베이식 블록 그룹(37)의 호출 위치 항목은 분리 실행 대상 코드 블록(34)의 선택에 있어 프로그램의 실행 초기에 불리는 베이식 블록 그룹(37)을 선택할 지, 특정 기능 실행 시에 불리는 베이식 블록 그룹(37)을 선택할 지 설정하는 항목이다.
호스트 단말(51)의 메모리 참조 빈도 항목은 선택될 분리 실행 대상 코드 블록(34)이 얼마나 자주 호스트 단말(51)의 메모리를 참조하는 지를 설정하는 항목이다. 메모리 참조 빈도가 높을수록 호스트 단말(51)에 대한 의존성이 강하다는 의미이며, 이는 해당 분리 실행 대상 코드 블록(34)으로 인한 보안 효율이 높다는 의미가 된다. 다만 호스트 단말(51)의 메모리를 번번히 참조할 경우, 해당 컨텐츠(30)의 실행 속도를 저하시킬 수 있기 때문에, 컨텐츠 제공자는 등록할 컨텐츠(30)의 보안 수준에 따라 적절한 메모리 참조 빈도를 설정하는 것이 바람직하다.
호스트 단말(51)의 OS API 참조 빈도 항목은 선택될 분리 실행 대상 코드 블록(34)이 얼마나 자주 OS API를 참조하는 지를 설정하는 항목이다. OS API 참조 빈도가 높을수록 호스트 단말(51)에 대한 의존성이 강하다는 의미이며, 이는 해당 분리 실행 대상 코드 블록(34)으로 인한 보안 효율이 높다는 의미가 된다. 다만 호스트 단말(51)의 OS API를 번번히 참조할 경우, 해당 컨텐츠(30)의 실행 속도를 저하시킬 수 있기 때문에, 컨텐츠 제공자는 등록할 컨텐츠(30)의 보안 수준에 따라 적절한 OS API의 참조 빈도를 설정하는 것이 바람직하다.
그리고 저장장치(53)의 하드웨어 요소 항목은 해당 컨텐츠(30)와 함께 사용될 저장장치(53)의 하드웨어적 폼 요소(form factor) 예컨대, 디램(DRAM), 랜드 플래쉬(NAND Flash) 또는 노아 플래쉬(NOR Flash)의 용량, 마이크로프로세서의 속도 등을 선택할 수 있는 항목이다. 저장장치(53)의 하드웨어 요소는 실제 분리 실행 대상 코드 블록(34)을 실행하여 출력값을 산출하는 데 있어 중요한 요소 중에 하나라 할 수 있다.
한편 제1 실시예에서는 컨텐츠 제공자가 보안 수준을 직접 설정하는 예를 개시하였지만, 보안 수준은 디폴트로 설정될 수 있다. 제1 실시예에서는 등록할 컨텐츠(30)를 선택한 이후에 보안 수준을 설정하는 예를 개시하였지만, 보안 수준을 설정한 후 등록할 컨텐츠(30)를 선택할 수도 있다.
베이식 블록 그룹 선정부(44)는 기초 정보 수집부(44a) 및 정적 분석부(44b)를 포함한다. 기초 정보 수집부(44a)는 호출한 컨텐츠(30)에 대한 동적 프로파일링을 통하여 기초 정보를 수집한다. 정적 분석부(44b)는 수집한 기초 정보를 기반으로 컨텐츠(30)에 대한 정적 분석을 수행하여 컨텐츠(30)의 코드 영역(31)의 분석 범위를 확장하고, 이를 통하여 복수의 베이식 블록 그룹(37)을 선정한다.
전술된 바와 같이, 컨텐츠(30)는 복수 개의 파일, 예컨대 운영체제에서 제공하는 API, 개발사에서 제공하는 API 또는 DLL과 같은 파일을 포함한다. 따라서 컨텐츠(30) 중 분석할 부분을 설정해야 하고, 컨텐츠(30) 중 이미 공개되어 있는 API에서 선정된 베이식 블록 그룹을 분리 실행 대상 코드 블록(34)으로 선출하는 것은 바람직하지 않기 때문에, 컨텐츠(30)의 분석할 부분을 코드 영역(31)으로 제한할 필요가 있다.
기초 정보는 컨텐츠(30)에 대한 런-타임(run-time) 동안 동적 프로파일링을 통하여 코드 영역(31)에 대해서 수집한 정보이다. 즉 동적 프로파일링은 입력, 출력 및 레지스터(register)에 할당된 값들, 그리고 컨텐츠(30)의 흐름을 코드로 추적할 수 있기 때문에, 동적 프로파일링은 분석 범위를 확장하는데 유효하면서 정확한 기초 정보를 수집할 수 있다. 이때 수집된 기초 정보는 베이식 블록 그룹(37)의 시작 주소, 베이식 블록 그룹(37)의 종료 주소, 베이식 블록 그룹(37)의 호출 횟수, 베이식 블록 그룹(37)의 크기 및 베이식 블록 그룹(37) 내의 실수 연산 유무에 대한 정보를 포함한다. 특히 수집된 기초 정보는 브랜치 어드레스(branch address), 점프 어드레스(jump address), 콜 어드레스(call address) 및 RET의 간접 주소(indirect address) 중에 적어도 하나의 간접 주소를 포함한다. 간접 주소에는 베이식 블록 그룹(37)의 시작 주소, 베이식 블록 그룹(37)의 크기, 브랜치 태이큰(branch taken) 주소에 대한 정보를 포함한다. 또한 수집된 기초 정보는 설정된 보안 수준 설정 항목에 따라서, 베이식 블록 그룹(37) 내에서 호스트 단말의 메모리를 참조하는 회수, 베이식 블록 그룹(37) 내에서 호스트 단말의 OS API를 호출하는 회수, 베이식 블록 그룹(37)의 실행 시간, 베이식 블록 그룹(37) 내에서 수행되는 전체 명령어 개수, 베이식 블록 그룹(37)의 실행을 위해 전달되는 파라미터 개수 및 타입, 베이식 블록 그룹(37)의 실행 후 반환되는 값의 종류 중에 적어도 하나를 더 포함할 수 있다.
정적 분석부(44b)는 코드 영역(31)에 대해서 수집한 기초 정보를 기반으로 컨텐츠(30)의 코드 영역(31)에 대한 정적 분석을 수행한다. 즉 정적 분석부(44b)는 컨텐츠(30) 중 공개된 API와 관련된 부분을 분석 대상으로 선정하는 것이 바람직하지 않기 때문에, 해당 부분을 제외하고 코드 영역(31)에 대한 정적 분석을 수행한다. 이때 정적 분석부(44b)는 수집한 기초 정보 중에서 컨텐츠(30) 중 공개된 API와 관련된 기초 정보를 제외한 기초 정보를 기반으로 정적 분석을 수행할 수도 있다.
일반적인 정적 분석은 컨텐츠(30)의 코드 영역(31)의 시작점을 찾고, 찾은 시작점에서부터 컨트롤 플로우(control flow)를 따라서 분석하는 방법이다. 따라서 정적 분석은 런-타임 상에서 취득할 수 있는 정보가 없기 때문에, 바이너리 코드 중에 확실한 값이 표기된 경로로의 이동만 가능하다. 특히 레지스터의 값을 비롯한 Heap 영역의 데이터, 외부 DLL로의 이동 등에 제한이 있다. 또한 컨트롤 플로우를 따라 가는 것 또한 간접 정보의 부재로 상당한 제한이 있다. 이로 인해 일반적인 정적 분석은 다양한 시작점을 임의대로 파악하여 접근할 수 있지만 큰 의미를 갖기 힘들기 때문에, 분석 범위가 좁을 수밖에 없다.
하지만 정적 분석부(44b)는 동적 프로파일링을 통하여 수집한 기초 정보를 기반으로 정적 분석을 수행하기 때문에, 컨텐츠(30)의 코드 영역(31)의 분석 범위를 확장할 수 있다. 즉 정적 분석부(44b)는 수집한 기초 정보 중 간접 주소를 컨트롤 플로우 상에 대입함으로써, 컨텐츠(30)의 코드 영역(31)의 분석 범위를 확장하여 단독으로 동적 프로파일링을 수행하거나 정적 분석을 수행하는 것에 비하여 더 많은 유효한 베이식 블록 그룹(37)을 선정할 수 있다.
이와 같이 간접 주소의 대입을 통하여 컨텐츠(30)에 대한 분석 범위를 확장할 수 있기 때문에, 분석하는 컨텐츠(30)의 특성에 따라 차이는 있겠지만 단독으로 동적 프로파일링 또는 정적 분석을 수행하는 것에 비교하여 분석 범위를 수십배 이상 높일 수 있다. 예컨대 Alzip.exe((주)이스트소프트의 솔루션)와 같은 압축 실행프로그램에 대해서 정적 분석만으로는 1% 미만의 분석 범위를 보이지만, 동적 프로파일링을 통해 수집한 기초 정보를 이용하여 정적 분석을 수행할 경우 27% 이상의 분석 범위를 보이는 것을 확인할 수 있다. 즉 컨텐츠(30)의 코드 영역(31)에 존재하는 간접 주소가 상당히 많고, 간접 주소를 이용하여 분석 범위를 확장할 수 있다는 것은 다양한 출력, 즉 베이식 블록 그룹(37)을 이끌어 낼 수 있음을 의미한다.
한편 베이식 블록 그룹(37)의 크기는 RET와 같이 1Byte에서 수십 내지 수백Byte가 될 수 있기 때문에, 베이식 블록 그룹(37)의 크기가 크면 클수록 내부 진입의 가능성은 확률적으로 커질 수 밖에 없다. 또한 컨텐츠(30)의 모든 명령어를 실행 이전에 검사하고 분석할 수 있다면 좀 더 정확하고 세밀한 베이식 블록 그룹(37)을 정의할 수 있을 것이다. 하지만 이것도 간접 주소의 존재로 인해 베이식 블록 그룹(37)을 완벽하게 정의할 수는 없다.
따라서 시작점을 통한 제어 신호의 진입 및 베이식 블록(35) 간의 제어 신호의 이동은 허용하지만, 시작점을 제외한 베이식 블록(35)으로의 제어 신호의 진입이 없는 베이식 블록 그룹(37)을 컨텐츠(30)에서 추출하기 위해서, 정적 분석부(44b)는 다음과 같은 정의(규칙)을 이용하여 컨텐츠(30)의 코드 영역(31)에서 베이식 블록 그룹(37)을 선정할 수 있다.
이때 베이식 블록 그룹(37)에 대한 정의는 다음과 같다. 먼저 한 번 정의한 베이식 블록 그룹(37)을 고정적으로 정의하지 않고, 베이식 블록 그룹(37)의 내부로 진입하는 제어 신호의 유무에 따라 베이식 블록 그룹(37)을 분리하여 재정의 한다.
즉 도 3, 도 4 및 도 9를 참조하면, 정적 분석부(44b)는 컨텐츠(30)의 코드 영역(31)에서 서로 연관된 복수의 베이식 블록(35)을 포함하는 베이식 블록 그룹(37)을 정의할 수 있다. 이때 정의된 베이식 블록 그룹(37)은 분석 중 현재까지 시작점을 제외한 베이식 블록(35b)으로의 제어 신호의 진입이 없는 베이식 블록(35)의 모임이라 할 수 있다.
여기서 베이식 블록 그룹(37)의 시작점에 위치하는 베이식 블록(35a)을 통한 제어 신호가 입력되는 경우, 정적 분석부(44b)는 해당 베이식 블록 그룹(37)에 대한 재정의는 수행하지 않는다. 또한 베이식 블록 그룹(37)에 포함된 베이식 블록(35) 간에 제어 신호가 이동하는 경우에도, 정적 분석부(44b)는 해당 베이식 블록 그룹(37)에 대한 재정의는 수행하지 않는다. 즉 전술된 두 경우 정적 분석부(44b)는 베이식 블록 그룹(37)은 현재의 정의 상태를 유지한다.
하지만 도 3, 도 4 및 도 10에 도시된 바와 같이, 베이식 블록 그룹(37)의 시작점에 위치하는 베이식 블록(35a)을 제외한 다른 베이식 블록(35b)으로 제어 신호가 입력될 경우, 정적 분석부(44b)는 해당 베이식 블록 그룹(37)을 제어 신호가 입력되는 베이식 블록(35b)을 기준으로 분할하여 재정의 한다. 즉 베이식 블록 그룹(37)의 내부로 진입하는 제어 신호가 있으면, 정적 분석부(44b)는 제어 신호의 명령어 주소(instruction address)를 기준으로 베이식 블록 그룹(37)을 분할하여 재정의 한다.
이와 같이 베이식 블록 그룹(37)을 재정의 함으로써, 분할된 베이식 블록 그룹(37a,37b)이 내부 진입이 없는 베이식 블록 그룹으로 성립할 확률을 높일 수 있다.
이때 재정의 대상이 되는 베이식 블록 그룹(37)은 제어 신호의 명령어 주소를 기준으로 이전의 제1 베이식 블록 그룹(37a)과, 제어 신호의 명령어 주소를 포함하는 이후의 제2 베이식 블록 그룹(37b)으로 재정의 된다. 제1 베이식 블록 그룹(37a)의 브랜치 주소(branch address)는 제2 베이식 블록 그룹(37b)의 시작점으로의 진입을 위한 다음 명령어 주소(next instruction address)가 된다.
그리고 이와 같은 재정의 단계를 반복함으로써, 최종적으로 재정의된 베이식 블록 그룹(37)은 단일 입력 및 단일 출력의 속성과, 외부에서 내부로의 진입을 허용하지 않는 속성을 갖는 복수의 베이식 블록(35)을 포함하는 베이식 블록 그룹(37)으로 정의될 수 있다.
추출 및 생성부(46)는 선정된 복수의 베이식 블록 그룹(37) 중에서 설정된 보안 수준에 따라 베이식 블록 그룹(37)을 분리 실행 대상 코드 블록(34)으로 추출할 수 있다. 추출 및 생성부(46)는 설정된 보안 수준에 따라 분리 실행 대상 코드 블록(34)을 추출할 수 있다. 예컨대 컨텐츠 제공자는 베이식 블록 그룹(37)의 호출 빈도, 베이식 블록 그룹(37)의 호출 위치, 호스트 단말(51)의 메모리 참조 빈도, 호스트 단말(51)의 OS API 참조 빈도, 저장장치(53)의 하드웨어 요소 중에 적어도 하나에 가중치를 부여하여 보안 수준을 설정하면, 추출 및 생성부(46)는 설정된 보안 수준에 따라 분리 실행 대상 코드 블록(34)을 선출할 수 있다. 즉 컨텐츠 제공자는 컨텐츠(30)의 종류, 가치 등을 고려하여 사용자 레벨에서 보안 수준을 설정하고, 이를 통하여 컨텐츠(30)의 복제 방지 효과를 획득할 수 있다.
추출 및 생성부(46)는 분리 실행 대상 코드 블록(34)이 추출된 코드 영역에 스터브 코드(36)를 삽입하여 서비스용 컨텐츠(32)를 생성한다. 이때 스터브 코드(36)는 컨텐츠(30)에서 추출된 코드 영역과, 추출된 분리 실행 대상 코드 블록(34)을 연결한다.
또한 추출 및 생성부(46)는 컨텐츠(30)에서 추출한 분리 실행 대상 코드 블록(34)과, 분리 실행 대상 코드 블록(34)이 추출된 코드 영역에 스터브 코드(36)가 삽입된 서비스용 컨텐츠(32)로 분할하여 저장부(13)에 저장할 수 있다.
이와 같이 추출 및 생성부(46)에서 추출된 분리 실행 대상 코드 블록(34)은 시작점에 위치하는 베이식 블록(35)을 통한 제어 신호가 입력되는 경우, 해당 제어 신호의 입력을 허용한다. 분리 실행 대상 코드 블록(34)은 시작점을 통한 제어 신호의 입력에 따른 베이식 블록(35) 간의 제어 신호의 이동을 허용한다. 또한 분리 실행 대상 코드 블록(34)은 시작점을 제외한 베이식 블록(35)으로의 제어 신호의 진입이 없는 복수의 베이식 블록(35)을 포함한다. 바꾸어 말하면 분리 실행 대상 코드 블록(34)은 시작점을 제외한 베이식 블록(35)으로의 제어 신호의 진입을 허용하는 않는 복수의 베이식 블록(35)을 포함한다.
그리고 추출 및 생성부(46)는 분리 실행 대상 코드 블록(34)과 서비스용 컨텐츠(32)를 컨텐츠 등록 서버(20)에 전송하여 등록한다. 이때 추출 및 생성부(46)는 등록할 컨텐츠(30)에 대한 등록 정보를 함께 컨텐츠 등록 서버(20)에 전송하여 등록한다. 예컨대 컨텐츠의 등록 정보는 제목, Mime 타입, 설명서, 컨텐츠 제공자 이름, 과금 정보 중에 적어도 하나를 포함한다.
또한 프로파일링 및 분석 툴(40)은 피드백을 통해 전달 받은 검증 실패 결과를 필터링 리스트에 추가하여 해당 코드 블록(32)을 블랙 리스트(black list)에 올려서 선정 대상에서 배제시키고, 재 프로파일링 및 분석을 수행하여 새로운 분리 실행 대상 코드 블록(34)을 추출하여 컨텐츠 등록 서버(20)로 재전송한다.
단말제어부(15)는 컨텐츠 등록 서버(20)로부터 등록을 요청한 컨텐츠(30)에 대한 등록 완료 메시지를 수신하여 표시부(14)에 출력한다. 이때 등록 완료 메시지는 검증 통과 결과에 대한 정보를 포함할 수 있다.
이와 같은 제1 실시예에 따른 컨텐츠 등록 시스템의 컨텐츠 등록 서버(20)에 대해서 도 1 및 도 6을 참조하여 구체적으로 설명하면 다음과 같다. 여기서 도 6은 도 1의 컨텐츠 등록 서버(20)의 구성을 보여주는 블록도이다.
제1 실시예에 따른 컨텐츠 등록 서버(20)는 송수신부(21), 데이터베이스부(23) 및 서버제어부(25)를 포함하여 구성된다.
송수신부(21)는 네트워크(55)를 통하여 컨텐츠 제공 단말(10)와 통신을 수행한다. 송수신부(21)는 컨텐츠 제공 단말(10)로부터 수신한 분리 실행 대상 코드 블록(34) 및 서비스용 컨텐츠(32)를 서버제어부(25)로 전달한다. 송수신부(21)는 서버제어부(25)의 제어에 따라 분리 실행 대상 코드 블록(34)에 대한 검증 결과를 컨텐츠 제공 단말(10)로 전송한다. 그리고 송수신부(1)는 서버제어부(25)의 제어에 따라 등록 요청한 컨텐츠(30)에 대한 등록 완료 메시지를 컨텐츠 제공 단말(10)로 전송한다.
데이터베이스부(23)는 프로파일링 및 분석 툴(40)과, 컨텐츠 제공 단말(10)이 등록 요청한 컨텐츠(30)의 관련 정보를 저장한다. 컨텐츠(30)의 관련 정보는 분리 실행 대상 코드 블록(34)을 변환한 저장장치용 코드 블록(27), 서비스용 컨텐츠(32) 및 컨텐츠(30)의 등록 정보(39)를 포함하며, 분리 실행 대상 코드 블록(34)을 더 포함할 수 있다. 예컨대 컨텐츠(30)의 등록 정보(39)는 제목, Mime 타입, 설명서, 컨텐츠 제공자 이름, 과금 정보 중에 적어도 하나를 포함한다.
이때 분리 실행 대상 코드 블록(34)은 호스트 단말(51)에서 실행되는 컨텐츠(30)에서 추출된 코드 블록이다. 예컨대 분리 실행 대상 코드 블록(34)은 x86 또는 x64용 컨텐츠(30)의 코드 영역에서 추출된 코드 블록일 수 있다. 따라서 분리 실행 대상 코드 블록(34)은 저장장치(53)에 사용될 수 있는 코드 형식으로 변환되며, 이를 저장장치용 코드 블록(27)이라 한다. 예컨대 저장장치(53)가 스마트카드인 경우, 분리 실행 대상 코드 블록(34)은 Java Byte 코드 블록 또는 ARM용 코드 블록으로 변환된다. 변환된 코드 블록은 RO(right object) 또는 애플릿(applet)에 포함되어 스마트카드에 제공될 수 있다.
그리고 서버제어부(25)는 컨텐츠 등록 서버(20)의 전반적인 제어 동작을 수행한다. 서버제어부(25)는 네트워크(55)를 통한 컨텐츠 제공자의 요청에 따라 컨텐츠 제공 단말(10)로부터 컨텐츠(30)의 분리 실행 대상 코드 블록(34) 및 서비스용 컨텐츠(32)를 수신하여 등록한다. 이때 서버제어부(25)는 컨텐츠 제공 단말(10)로부터 수신한 분리 실행 대상 코드 블록(34)에 대해 검증하고, 그 검증 결과를 컨텐츠 제공 단말(10)로 피드백하여 안정적인 분리 실행 기반의 컨텐츠(30) 실행 환경을 제공할 수 있는 분리 실행 대상 코드 블록(34)이 추출될 수 있도록 안내한다. 즉 서버제어부(25)는 송수신부(21)를 통하여 컨텐츠 제공 단말(10)로부터 등록할 컨텐츠(30)에 대한 프로파일링 및 분석을 통하여 추출된 분리 실행 대상 코드 블록(34)을 수신한다. 서버제어부(25)는 수신한 분리 실행 대상 코드 블록(34)을 실제 저장장치(53)의 실행 환경에 대응하는 테스트 환경에서 실행하여 유효성을 검증한다. 검증 결과 유효하지 않은 분리 실행 대상 코드 블록(34)이 검출된 경우, 서버제어부(25)는 컨텐츠 제공 단말(10)로 검증 실패 결과를 피드백한다. 검증 결과 유효한 경우, 서버제어부(25)는 분리 실행 대상 코드 블록(34)을 저장장치용 코드 블록(27)으로 변환한다. 그리고 서버제어부(25)는 변환된 저장장치용 코드 블록(27)과, 서비스용 컨텐츠(32)를 데이터베이스부(23)에 등록한다. 이때 검증 결과 유효한 경우, 서버제어부(25)는 검증 통과 결과를 컨텐츠 제공 단말(10)로 피드백할 수 있다. 또한 등록 요청한 컨텐츠(30)에 대한 등록을 완료한 이후에, 서버 제어부(25)는 등록 완료 메시지를 컨텐츠 제공 단말(10)로 전송할 수 있다.
서버제어부(25)는 다음과 같은 검증 항목을 기준으로 분리 실행 대상 코드 블록(34)에 대한 유효성을 검증할 수 있다. 이때 검증 항목은 Floating Point Instruction 유무, SIMD Instruction Set 유무, Initial Context에 포함된 메모리 범위가 임계 용량을 초과하는 지의 유무, 분리 실행 대상 코드 블록(34) 내에 장시간 반복하는 루프의 존재 유무, 분리 실행 대상 코드 블록(34) 내에 데이터가 존재하는 지의 유무 중에 적어도 하나를 포함한다.
1. Floating Point Instruction 유무
x86 Floating Point Instruction은 ARM용 Floating Point Instruction으로 변환하기 용이하지 않기 때문이다. 이유는 x86 Floating Point Instruction은 해석이 용이하지 않고, ARM용 Floating Point Instruction으로의 1:1 매칭되는 Instruction이 드물기 때문이다. 또한 이러한 변환 과정에서 발생할 수 있는 Floating Point Value Loss를 보완해주어야 하는데 이의 정확한 값 파악에 어려움이 존재하기 때문이다.
2. SIMD(MMX, SSE, SSE2, 3DNow!) Instruction Set 유무
SIMD Instruction Set은 PentiumIII 프로세서에서부터 Vector 프로세서 및 Array 프로세서를 지원하기 위해 추가된 Single Instruction Multiple Data를 지원하는 Instruction Set이다. 이는 대용량의 데이터를 효율적으로 접근하게 지원하고 동일한 작업의 성능을 높이게 된다. 이러한 Instruction Set을 ARM용으로 변환하기 위해서는 ARM에서 이에 대응하는 Instruction이 제공되어야 하는데, 현재로써는 여러 단계의 복잡한 변환 과정과 동일한 값의 대응이 용이하지 않다.
3. Initial Context에 포함된 메모리 범위가 임계 용량을 초과하는 지의 유무
호스트 단말(51)에서 컨텐츠(30) 실행시 저장장치(53)에서 수행되는 분리 실행 대상 코드 블록(34)이 참조하는 메모리에 대한 데이터를 전달하여 컨텐츠(30)의 실행 중 호스트 단말(51)과의 통신 오버헤드를 줄이고자 한다. 이때 분리 실행 대상 코드 블록(34)이 참조하는 메모리 영역이 넓어지면 Initial Context의 전달 데이터 양이 커짐으로 저장장치(53)에서 저장이 불가능한 경우가 발생한다. 그렇기 때문에 분리 실행 대상 코드 블록(34)의 메모리 참조 영역을 확인하여 이를 일정 범위 내로 제한함이 필요하다.
4. 분리 실행 대상 코드 블록 내의 장시간 반복하는 루프의 존재 유무
사용자는 컨텐츠(30)를 실행시 보안으로 인한 어떠한 성능저하를 느끼지 않아야 한다. 하지만 추출한 분리 실행 대상 코드 블록(30)이 자체적으로 루프를 돌면서 장시간 호스트 단말의 제어를 빼앗는 경우가 발생하면, 컨텐츠(30)의 정체현상이 발생하여 사용자의 프로그램 사용에 어려움을 느낄 수 있으므로 이러한 루프를 발견하여 피드백하는 루틴이 필요하다.
5. 분리 실행 대상 코드 블록 내에 코드가 아닌 데이터의 존재 유무
간혹 코드 영역 내에 데이터가 존재할 수 있다. 프로파일러 내에서 이를 체크하는 루틴이 존재하지만, 중요 경로(Critical Path) 상에 있는 코드 블록을 분리 실행 대상 코드 블록(34)으로 선정할 때 선정 범위를 벗어난 코드 블록이 추가될 수 있는 상황이 발생할 경우를 대비하여 Error-Free 체크루틴으로 삽입한다. 이때 중요 경로는 컨텐츠(30) 실행 시 최소한 한번 이상 반드시 실행되는 경로를 의미한다.
예컨대 분리 실행 대상 코드 블록(34)이 x86용 컨텐츠(30)의 코드 영역(31)에서 추출되고, 저장장치(53)가 ARM 프로세서를 기반으로 하는 경우, 검증 항목은 Floating Point Instruction 유무 또는 SIMD Instruction Set 유무를 포함할 수 있다.
서버제어부(25)는 검증을 통과한 분리 실행 대상 코드 블록(34)을 저장장치용 코드 블록(27)으로 변환한다. 예컨대 저장장치(53)가 스마트 카드인 경우, 검증을 통과한 분리 실행 대상 코드 블록(34)은 Java Byte 코드 블록 또는 ARM용 코드 블록으로 변환될 수 있다. 이때 Java Byte 코드 블록은 애플릿에 포함되어 스마트 카드에 설치될 수 있다. ARM용 코드 블록은 권리 객체(RO)에 포함되어 스마트 카드에 설치될 수 있다.
이와 같은 본 발명의 제1 실시예에 따른 컨텐츠의 등록 방법에 대해서 도 1 내지 도 11을 참조하여 설명하면 다음과 같다. 여기서 도 7은 본 발명의 제1 실시예에 따른 분리 실행 기반의 컨텐츠 등록 방법을 보여주는 흐름도이다. 도 8은 도 7의 분리 실행 대상 코드 블록 추출 및 서비스용 컨텐츠 생성 단계에 따른 상세 흐름도이다. 도 9 및 도 10은 도 8의 분리 실행 대상 코드 블록으로 추출될 베이식 블록 그룹의 선정 단계를 설명하기 위한 예시도이다. 그리고 도 11은 도 7의 등록 방법 중 검증 단계를 설명하기 위한 예시도이다.
먼저 S61 내지 S83단계에서 컨텐츠 제공 단말(10)은 컨텐츠 등록 서버(20)로부터 내려받은 프로파일링 및 분석 툴(40)을 실행한다. 즉 S61단계에서 컨텐츠 제공 단말(10)은 컨텐츠 등록 서버(20)의 웹페이지(21)에 접속한다. 이어서 S63단계에서 컨텐츠 제공 단말(20)이 컨텐츠(30)를 등록할 수 있는 등록 페이지를 요청하면, S65단계에서 컨텐츠 등록 서버(20)는 컨텐츠 제공 단말(10)로 로그인 페이지를 전송한다.
다음으로 S67단계에서 컨텐츠 제공 단말(10)은 컨텐츠 제공자의 입력부(12)를 통한 선택 신호에 따라 로그인 정보를 입력받아, S69단계에서 입력된 로그인 정보를 컨텐츠 등록 서버(20)로 전송한다.
다음으로 S71단계에서 컨텐츠 등록 서버(20)는 수신한 로그인 정보로 접속한 컨텐츠 제공자에 대한 인증을 수행한다. 인증을 통과하면, S73단계에서 컨텐츠 등록 서버(20)는 액티브-엑스 론쳐를 컨텐츠 제공 단말(10)로 전송한다. 이어서 S75단계에서 컨텐츠 제공 단말(10)은 액티브-엑스 론쳐를 통하여 액티브-엑스를 실행한다.
한편 수신한 로그인 정보가 등록된 로그인 정보와 일치하지 않아 인증에 실패하면, 컨텐츠 등록 서버(20)는 컨텐츠 제공 단말(10)로 로그인 정보를 재입력할 것을 다시 요청할 수 있다.
다음으로 S77단계에서 컨텐츠 제공 단말(10)은 컨텐츠 등록 서버(20)로부터 내려받은 프로파일링 및 분석 툴(40)이 저장부(13)에 있는 지의 여부를 확인한다.
S77단계의 확인 결과 없는 경우, S79단계에서 컨텐츠 제공 단말(10)은 컨텐츠 등록 서버(20)로 프로파일링 및 분석 툴(40)의 전송을 요청한다. S81단계에서 컨텐츠 등록 서버(20)는 컨텐츠 제공 단말(10)로 프로파일링 및 분석 툴(40)을 전송한다.
다음으로 S77단계의 확인 결과 있거나 S81단계를 통하여 프로파일링 및 분석 툴(40)을 수신한 경우, S83단계에서 컨텐츠 제공 단말(10)은 내려받은 프로파일링 및 분석 툴(40)을 실행한다.
다음으로 S85단계에서 컨텐츠 제공 단말(10)은 등록할 컨텐츠(30)를 호출한다. 즉 컨텐츠 제공자로부터 분석할 컨텐츠(30)를 호출하기 위한 선택 신호가 입력되면, 컨텐츠 제공 단말(10)은 저장부(13)에 저장된 등록할 컨텐츠(30)의 리스트를 표시부(45)에 표시한다. 이어서 리스트에서 특정 컨텐츠(30)가 선택되면, 컨텐츠 제공 단말(10)은 선택된 컨텐츠(30)를 호출한다.
다음으로 S87단계에서 컨텐츠 제공 단말(10)은 선택된 컨텐츠(30)에 대한 보안 수준을 설정한다. 즉 컨텐츠 제공 단말(10)은 컨텐츠 제공자가 선택할 수 있는 보안 수준 설정 항목을 표시부(14)에 표시한다. 컨텐츠 제공자가 표시된 보안 수준 설정 항목 중에서 특정 보안 수준 설정 항목을 선택하면, 컨텐츠 제공 단말(10)은 선택된 보안 수준 설정 항목으로 등록할 컨텐츠(30)의 보안 수준을 설정한다.
이때 제1 실시예에서는 S85단계 및 S87단계 순으로 진행되는 예를 개시하였지만, 반대의 순서로 진행될 수 있다. 또한 보안 수준이 디폴트로 설정되어 있는 경우, 컨텐츠 제공 단말(10)은 S87단계를 생략할 수도 있다.
다음으로 S89단계에서 컨텐츠 제공 단말(10)은 실행중인 프로파일링 및 분석 툴(40)을 통하여 등록할 컨텐츠(30)로부터 분리 실행 대상 코드 블록(34)을 추출하고, 서비스용 컨텐츠(32)를 생성한다. 한편 S89단계에 대한 상세한 설명은 후술하도록 하겠다.
이어서 S91단계에서 컨텐츠 제공 단말(10)은 추출한 분리 실행 대상 코드 블록(34) 및 서비스용 컨텐츠(32)를 이용하여 해당 컨텐츠(30)의 등록을 컨텐츠 등록 서버(20)에 요청한다. 이때 컨텐츠 제공 단말(10)은 컨텐츠(30)의 등록을 요청할 때 해당 컨텐츠(30)의 등록 정보(39)를 함께 전송할 수 있다.
다음으로 컨텐츠 등록 서버(20)는 수신한 분리 실행 대상 코드 블록(34) 및 서비스용 컨텐츠(32)를 파싱하여 유효 여부를 판단한 뒤, 유효한 경우 해당 분리 실행 대상 코드 블록(34) 및 서비스용 컨텐츠(32)를 데이터베이스(23)에 등록 한다. 즉 해당 컨텐츠(30)를 실제 호스트 단말(51) 및 저장장치(53)의 분리 실행 환경에 대응하는 테스트 프로세스 환경에서 테스트를 수행하여 해당 컨텐츠(30)에 대한 유효성을 판단할 수 있다.
S93단계 내지 S111단계에 따른 검증을 통한 컨텐츠(30)의 등록 과정을 설명하면 다음과 같다.
먼저 S93단계에서 컨텐츠 등록 서버(20)는 수신한 분리 실행 대상 코드 블록(34)을 실제 저장장치(53)의 실행 환경에 대응하는 테스트 환경에서 실행하여 유효성을 검증한다. 이때 컨텐츠 등록 서버(20)는 다음과 같은 검증 항목을 기준으로 분리 실행 대상 코드 블록(34)에 대한 유효성을 검증할 수 있다. 이때 검증 항목은 Floating Point Instruction 유무, SIMD Instruction Set 유무, Initial Context에 포함된 메모리 범위가 임계 용량을 초과하는 지의 유무, 분리 실행 대상 코드 블록(34) 내에 장시간 반복하는 루프의 존재 유무, 분리 실행 대상 코드 블록(34) 내에 데이터가 존재하는 지의 유무 중에 적어도 하나를 포함한다. 예컨대 분리 실행 대상 코드 블록(34)이 x86 또는 x64용 컨텐츠(30)의 코드 영역(31)에서 추출되고, 저장장치(53)가 ARM 프로세서를 기반으로 하는 경우, 검증 항목은 Floating Point Instruction 유무 또는 SIMD Instruction Set 유무를 포함할 수 있다.
S93단계의 검증 결과 유효하지 않은 분리 실행 대상 코드 블록(34)이 검출된 경우, 즉 검증에 실패한 경우, S95단계에서 컨텐츠 등록 서버(20)는 컨텐츠 제공 단말(10)로 검증 실패 결과를 피드백 한다. 이때 검증 실패 결과는 수신한 분리 실행 대상 코드 블록(34) 중에서 어떤 분리 실행 대상 코드 블록(34)이 어떠한 검증 항목에 해당되는 지에 대한 정보를 포함한다.
다음으로 S97단계에서 컨텐츠 제공 단말(10)은 수신한 검증 실패 결과를 컨텐츠 제공자가 확인할 수 있도록 표시부(14)에 출력할 수 있다. 이어서 컨텐츠 제공 단말(10)은 수신한 검증 실패 결과를 기반으로 등록할 컨텐츠(30)에 대한 재 프로파일링 및 분석을 통하여 다시 분리 실행 대상 코드 블록(34)을 추출하여 컨텐츠 등록 서버(20)로 재전송한다. 이때 S99단계에서 컨텐츠 제공 단말(10)은 피드백을 통해 전달 받은 검증 실패 결과를 필터링 리스트에 추가하여 해당 코드 블록(32)을 블랙 리스트에 올려서 선정 대상에서 배제시키고, S89단계에 따른 재 프로파일링 및 분석을 수행하여 새로운 분리 실행 대상 코드 블록(34)을 추출할 수 있다.
이와 같이 컨텐츠 제공 단말(10)은 검증 실패 결과를 피드백 받으면, S89단계 및 S91단계를 다시 수행한다. 아울러 S93단계에서 검증에 실패한 경우, 컨텐츠 제공 단말(10)과 컨텐츠 등록 서버(20)는 S95단계, S97단계, S99단계, S89단계 및 S91단계를 반복하여 수행한다.
S93단계의 검증 결과 유효한 경우, 즉 검증을 통과한 경우, S101단계에서 컨텐츠 등록 서버(20)는 컨텐츠 제공 단말(10)로 수신한 분리 실행 대상 코드 블록(34)이 유효하다는 검증 통과 결과를 피드백한다. 한편 컨텐츠 등록 서버(20)는 검증 결과 유효하지 않은 경우라도 자체 수정이 가능한 경우 오류를 수정하여 검증을 통과시킬 수도 있다.
이어서 S105단계에서 컨텐츠 등록 서버(20)는 검증된 분리 실행 대상 코드 블록(34)을 저장장치용 코드 블록(27)으로 변환한다. 예컨대 컨텐츠 등록 서버(20)는 검증을 통과한 분리 실행 대상 코드 블록(34)을, 저장장치(53)가 스마트 카드인 경우, Java Byte 코드 블록 또는 ARM용 코드 블록으로 변환할 수 있다.
다음으로 S107단계에서 컨텐츠 등록 서버(20)는 변환한 저장장치용 코드 블록(27)과 서비스용 컨텐츠(32)를 데이터베이스부(23)에 등록한다. 이때 컨텐츠 등록 서버(20)는 해당 컨텐츠(30)의 등록 정보(39)도 함께 등록한다.
이어서 S109단계에서 컨텐츠 등록 서버(20)는 등록 완료 메시지를 컨텐츠 제공 단말(10)로 전송한다.
그리고 S111단계에서 컨텐츠 제공 단말(10)은 수신한 등록 완료 메시지를 출력한다. 이때 컨텐츠 제공 단말(10)은 컨텐츠 제공자가 확인할 수 있도록 등록 완료 메시지를 표시부(14)에 표시할 수 있다.
한편 S101단계는 S105단계 전에 수행되는 예를 개시하였지만 이것에 한정되는 것이다. 즉 검증 통과 결과는 S93단계에 따라 검증을 통과한 이후의 단계에서 수행될 수 있다. 예컨대 검증 통과 결과는 S105단계가 완료된 이후에 수행될 수도 있고, S109단계에서 등록 완료 메시지를 전송할 때 함께 전송될 수도 있다.
한편 S89단계에 따른 분리 실행 대상 코드 블록 추출 및 서비스용 컨텐츠 생성 단계를 구체적으로 설명하면 다음과 같다.
먼저 S891단계에서 프로파일링 및 분석 툴(40)은 호출한 컨텐츠(30)에 대한 실행을 시작한다. 이어서 S893단계에서 프로파일링 및 분석 툴(40)은 컨텐츠(30)에 대한 런-타임 동안 코드 영역(31)에 대한 기초 정보를 수집한다. 이때 프로파일링 및 분석 툴(40)은 기초 정보로서 브랜치 어드레스, 점프 어드레스, 콜 어드레스 및 RET의 간접 주소 중에 적어도 하나의 간접 주소를 수집할 수 있다. 이때 S891단계는 S85단계에 따른 컨텐츠(30)의 호출에 따라 자동적으로 수행되거나, 작업자의 입력부(12)를 통한 선택 신호의 입력에 의해 수행될 수 있다.
그리고 S895단계에서 프로파일링 및 분석 툴(40)은 동적 프로파일링에 통해 수집한 기초 정보를 이용한 호출한 컨텐츠(30)의 코드 영역(31)에 대한 정적 분석을 수행하여 분석 범위를 확장하고, 이를 통하여 복수의 베이식 블록 그룹(37)을 선정한다. 즉 S895단계에서 프로파일링 및 분석 툴(40)은 수집한 기초 정보를 이용하여 컨텐츠(30)의 코드 영역(31)에 대한 정적 분석을 수행하여 복수의 베이식 블록 그룹(37)을 선정한다. 이때 수집한 기초 정보 중 간접 주소를 컨트롤 플로우 상에 대입함으로써, 프로파일링 및 분석 툴(40)은 컨텐츠(30)의 코드 영역(31)을 분석 범위를 확장하여 단독으로 동적 프로파일링 또는 정적 분석을 수행하는 것에 비하여 더 많은 베이식 블록 그룹(37)을 선정할 수 있다.
한편 S895단계에서 프로파일링 및 분석 툴(40)은, 도 9 및 도 10에 도시된 바와 같이, 정의(규칙)를 통하여 베이식 블록 그룹(37)을 선정할 수 있다.
먼저 도 9에 도시된 바와 같이, 프로파일링 및 분석 툴(40)은 컨텐츠(30)의 코드 영역(31)에서 서로 연관된 복수의 베이식 블록(35)을 포함하는 베이식 블록 그룹(37)을 정의할 수 있다.
여기서 베이식 블록 그룹(37)의 시작점에 위치하는 베이식 블록(35a)을 통한 제어 신호가 입력되는 경우, 프로파일링 및 분석 툴(40)은 해당 베이식 블록 그룹(37)에 대한 재정의는 수행하지 않는다. 또한 베이식 블록 그룹(37)에 포함된 베이식 블록(35) 간에 제어 신호가 이동하는 경우에도, 프로파일링 및 분석 툴(40)은 해당 베이식 블록 그룹(37)에 대한 재정의는 수행하지 않는다. 즉 전술된 두 경우 프로파일링 및 분석 툴(40)은 베이식 블록 그룹(37)은 현재의 정의 상태를 유지한다.
하지만 도 10에 도시된 바와 같이, 베이식 블록 그룹(37)의 시작점에 위치하는 베이식 블록(35a)을 제외한 다른 베이식 블록(35b)으로 제어 신호가 입력될 경우, 프로파일링 및 분석 툴(40)은 해당 베이식 블록 그룹(37)을 제어 신호가 입력되는 베이식 블록(35b)을 기준으로 분할하여 재정의 한다. 즉 베이식 블록 그룹(37)의 내부로 진입하는 제어 신호가 있으면, 프로파일링 및 분석 툴(40)은 제어 신호의 명령어 주소를 기준으로 베이식 블록 그룹(37)을 분할하여 재정의 한다.
이와 같이 베이식 블록 그룹(37)을 재정의 함으로써, 분할된 베이식 블록 그룹(37a,37b)이 내부 진입이 없는 베이식 블록 그룹(37)으로 성립할 확률을 높일 수 있다.
이때 재정의 대상이 되는 베이식 블록 그룹(37)은 제어 신호의 명령어 주소를 기준으로 이전의 제1 베이식 블록 그룹(37a)과, 제어 신호의 명령어 주소를 포함하는 이후의 제2 베이식 블록 그룹(37b)으로 재정의 된다.
그리고 이와 같은 재정의 단계를 반복함으로써, 최종적으로 재정의된 베이식 블록 그룹(37)은 단일 입력 및 단일 출력의 속성과, 외부에서 내부로의 진입을 허용하지 않는 속성을 갖는 복수의 베이식 블록(35)을 포함하는 베이식 블록 그룹(37)으로 정의될 수 있다.
다음으로 S897단계 및 S899단계에서 프로파일링 및 분석 툴(40)은 선정한 복수의 베이식 블록 그룹(37) 중에서 분리 실행 대상 코드 블록(34)을 추출하여 컨텐츠(30)의 코드 영역(31)에서 분리하고, 분리 실행 대상 코드 블록(34)이 추출된 코드 영역에 스터브 코드(36)를 삽입한다.
즉 S897단계에서 프로파일링 및 분석 툴(40)은 선정된 복수의 베이식 블록 그룹(37) 중에서 설정된 보안 수준에 따라 베이식 블록 그룹(37)을 분리 실행 대상 코드 블록(34)으로 추출할 수 있다. 예컨대 컨텐츠 제공자는 베이식 블록 그룹(37)의 호출 빈도, 베이식 블록 그룹(37)의 호출 위치, 호스트 단말(51)의 메모리 참조 빈도, 호스트 단말(51)의 OS API 참조 빈도, 저장장치(53)의 하드웨어 요소 중에 적어도 하나에 가중치를 부여하여 보안 수준을 설정하면, 프로파일링 및 분석 툴(40)은 설정된 보안 수준에 따라 분리 실행 대상 코드 블록(34)을 선출할 수 있다.
그리고 S899단계에서 프로파일링 및 분석 툴(40)은 분리 실행 대상 코드 블록(34)이 추출된 코드 영역에 스터브 코드(36)를 삽입하여 서비스용 컨텐츠(32)를 생성한다. 이때 스터브 코드(36)는 컨텐츠(30)에서 추출된 코드 영역과, 추출된 분리 실행 대상 코드 블록(34)을 연결한다.
이와 같이 컨텐츠(30)에서 분리 실행 대상 코드 블록(34)을 추출하고, 분리 실행 대상 코드 블록(34)이 추출된 코드 영역에 스터브 코드(36)를 삽입하여 서비스용 컨텐츠(32)를 생성함으로써, 프로파일링 및 분석 툴(40)은 컨텐츠(30)를 추출된 분리 실행 대상 코드 블록(34)과, 생성된 서비스용 컨텐츠(32)로 분할한다. 이때 S873단계에서 프로파일링 및 분석 툴(40)은 분리 실행 대상 코드 블록(34)과 서비스용 컨텐츠(32)를 저장부(13)에 저장할 수 있다.
한편 제1 실시예에서는 컨텐츠 제공 단말(10)이 등록할 컨텐츠(30)에 대한 프로파일링 및 분석을 통하여 해당 컨텐츠(30)로부터 분리 실행 대상 코드 블록(34)을 추출하여 컨텐츠 등록 서버(20)로 전송하여 검증을 수행하는 예를 개시하였지만, 이것에 한정되는 것은 아니다. 예컨대 도 12 내지 도 15에 도시된 바와 같이, 컨텐츠 등록 서버(20)가 등록할 컨텐츠(30)로부터 분리 실행 대상 코드 블록(34)을 추출하여 검증을 수행할 수 있다.
본 발명의 제2 실시예에 따른 분리 실행 기반의 디지털 저작권 관리 시스템(200)은, 도 12에 도시된 바와 같이, 네트워크(55)를 매개로 연결된 컨텐츠 제공 단말(10), 컨텐츠 등록 서버(20) 및 호스트 단말(51)과, 호스트 단말(51)에 유무선 인터페이스를 매개로 연결된 저장장치(53)를 포함하여 구성된다. 특히 제2 실시예에 따른 분리 실행 기반의 디지털 저작권 관리 시스템(200)은 컨텐츠 등록 시스템을 포함한다. 컨텐츠 등록 시스템은 네트워크(55)를 매개로 연결된 컨텐츠 제공 단말(10) 및 컨텐츠 등록 서버(20)를 포함하여 구성된다.
컨텐츠 제공 단말(10)은 프로파일링 및 분석을 통하여 추출한 분리 실행 대상 코드 블록(34)에 대한 리스트(38)를 등록할 컨텐츠(30)와 함께 컨텐츠 등록 서버(20)로 전송한다. 전송한 리스트(38)에 포함된 분리 실행 대상 코드 블록(34) 중 유효하지 않은 분리 실행 대상 코드 블록(34)이 포함되어 있다는 검증 실패 결과를 피드백 받으면, 컨텐츠 제공 단말(10)은 수신한 검증 실패 결과를 기반으로 등록할 컨텐츠(30)에 대한 재 프로파일링 및 분석을 통하여 추출한 분리 실행 대상 코드 블록(34)에 대한 리스트(38)를 컨텐츠 등록 서버(20)로 재송한다. 그리고 컨텐츠 제공 단말(10)은 컨텐츠 등록 서버(20)로부터 전송한 리스트(38)에 포함된 분리 실행 대상 코드 블록(34)이 유효하다는 검증 통과 결과를 수신하여 출력할 수 있다. 이때 컨텐츠 제공 단말(10)은 프로파일링 및 분석 툴(40)을 이용하여 분리 실행 대상 코드 블록(34)의 리스트(38)를 생성한다.
그리고 컨텐츠 등록 서버(20)는 수신한 리스트(38)를 기반으로 등록할 컨텐츠(30)로부터 분리 실행 대상 코드 블록(34)을 추출한다. 컨텐츠 등록 서버(20)는 분리 실행 대상 코드 블록(34)이 추출된 코드 영역에 스터브 코드를 삽입하여 서비스용 컨텐츠(32)를 생성한다. 그리고 컨텐츠 등록 서버(20)는 추출한 분리 실행 대상 코드 블록(34)에 대한 유효성을 검증한다. 검증 결과 유효하지 않은 분리 실행 대상 코드 블록(34)이 검출된 경우, 컨텐츠 등록 서버(20)는 컨텐츠 제공 단말(10)로 검증 실패 결과를 피드백 한다. 검증 결과 유효한 경우, 컨텐츠 등록 서버(20)는 분리 실행 대상 코드 블록(34)을 저장장치용 코드 블록(27)으로 변환하고, 검증 통과 결과를 컨텐츠 제공 단말(10)로 피드백 한다. 그리고 컨텐츠 등록 서버(20)는 변환된 저장장치용 코드 블록(27), 서비스용 컨텐츠(32) 및 컨텐츠(30)의 등록 정보를 데이터베이스부에 등록한다.
이와 같은 본 발명의 제2 실시예에 따른 컨텐츠(30)의 등록 방법에 대해서 도 12 내지 도 15를 참조하여 설명하면 다음과 같다. 여기서 도 13은 본 발명의 제2 실시예에 따른 분리 실행 기반의 컨텐츠 등록 방법을 보여주는 흐름도이다. 도 14는 도 13의 분리 실행 대상 코드 블록의 리스트 생성 단계에 따른 상세 흐름도이다. 그리고 도 15는 도 13의 등록 방법 중 검증 단계를 설명하기 위한 예시도이다.
먼저 S61단계 내지 S87단계는 제1 실시예에 따른 등록 방법과 동일한 순으로 진행되기 때문에, 상세한 설명은 생략하고 다음 단계인 S88단계부터 설명하면 다음과 같다.
S88단계에서 컨텐츠 제공 단말(10)은 등록할 컨텐츠(30)에 대한 프로파일링 및 분석을 통해 추출한 분리 실행 대상 코드 블록(34)에 대한 리스트(38)를 생성한다. 즉 S881단계에서 프로파일링 및 분석 툴(40)은 호출한 컨텐츠(30)에 대한 실행을 시작한다. 다음으로 S883단계에서 프로파일링 및 분석 툴(40)은 컨텐츠(30)에 대한 런-타임 동안 코드 영역(31)에 대한 기초 정보를 수집한다. 다음으로 S885단계에서 프로파일링 및 분석 툴(40)은 동적 프로파일링에 통해 수집한 기초 정보를 이용한 호출한 컨텐츠(30)의 코드 영역(31)에 대한 정적 분석을 수행하여 분석 범위를 확장하고, 이를 통하여 복수의 베이식 블록 그룹(37)을 선정한다. 이어서 S889단계에서 프로파일링 및 분석 툴(40)은 선정된 복수의 베이식 블록 그룹(37) 중에서 설정된 보안 수준에 따라 베이식 블록 그룹(37)을 분리 실행 대상 코드 블록(34)으로 선택한다. 그리고 프로파일링 및 분석 툴(40)은 선택된 분리 실행 대상 코드 블록(34)에 대한 리스트(38)를 생성한다.
다음으로 S90단계에서 컨텐츠 제공 단말(10)은 생성한 리스트(38)를 컨텐츠 등록 서버(20)로 전송한다. 이때 컨텐츠 제공 단말(10)은 리스트(38)와 함께 등록할 컨텐츠(30)와, 컨텐츠(30)의 등록 정보를 전송한다.
다음으로 S92단계에서 컨텐츠 등록 서버(20)는 수신한 리스트(38)를 기반으로 등록할 컨텐츠(30)로부터 분리 실행 대상 코드 블록(34)을 추출한다. 아울러 컨텐츠 등록 서버(20)는 분리 실행 대상 코드 블록(34)이 추출된 코드 영역에 스터브 코드를 삽입하여 서비스용 컨텐츠(32)를 생성한다.
다음으로 S93단계 내지 S111단계는 제1 실시예에 따른 등록 방법과 실질적으로 동일한 순으로 진행된다. 즉 먼저 S93단계에서 컨텐츠 등록 서버(20)는 추출한 분리 실행 대상 코드 블록(34)을 실제 저장장치(53)의 실행 환경에 대응하는 테스트 환경에서 실행하여 유효성을 검증한다. 이때 컨텐츠 등록 서버(20)는 다음과 같은 검증 항목을 기준으로 분리 실행 대상 코드 블록(34)에 대한 유효성을 검증할 수 있다. 예컨대 검증 항목은 Floating Point Instruction 유무, SIMD Instruction Set 유무, Initial Context에 포함된 메모리 범위가 임계 용량을 초과하는 지의 유무, 분리 실행 대상 코드 블록(34) 내에 장시간 반복하는 루프의 존재 유무, 분리 실행 대상 코드 블록(34) 내에 데이터가 존재하는 지의 유무 중에 적어도 하나를 포함한다.
S93단계의 검증 결과 유효하지 않은 분리 실행 대상 코드 블록(34)이 검출된 경우, 즉 검증에 실패한 경우, S95단계에서 컨텐츠 등록 서버(20)는 컨텐츠 제공 단말(10)로 검증 실패 결과를 피드백 한다. 이때 검증 실패 결과는 추출한 분리 실행 대상 코드 블록(34) 중에서 어떤 분리 실행 대상 코드 블록(34)이 어떠한 검증 항목에 해당되는 지에 대한 정보를 포함한다.
다음으로 S97단계에서 컨텐츠 제공 단말(10)은 수신한 검증 실패 결과를 컨텐츠 제공자가 확인할 수 있도록 표시부(14)에 출력할 수 있다. 이어서 컨텐츠 제공 단말(10)은 수신한 검증 실패 결과를 기반으로 등록할 컨텐츠(30)에 대한 재 프로파일링 및 분석을 통하여 다시 분리 실행 대상 코드 블록(34)에 대한 리스트(38)를 생성하여 컨텐츠 등록 서버(20)로 재전송한다. 이때 S99단계에서 컨텐츠 제공 단말(10)는 피드백을 통해 전달 받은 검증 실패 결과를 필터링 리스트에 추가하여 해당 분리 실행 대상 코드 블록(34)을 블랙 리스트에 올려서 선정 대상에서 배제시키고, S88단계에 따른 재 프로파일링 및 분석을 수행하여 새로운 분리 실행 대상 코드 블록(34)의 리스트(38)를 생성한다.
이와 같이 컨텐츠 제공 단말(10)은 검증 실패 결과를 피드백 받으면, S88단계, S90단계 및 S92단계를 다시 수행한다. 아울러 S93단계에서 검증에 실패한 경우, 컨텐츠 제공 단말(10)과 컨텐츠 등록 서버(20)는 S95단계, S97단계, S99단계, S88단계, S90단계 및 S92단계를 반복하여 수행한다.
S93단계의 검증 결과 유효한 경우, 즉 검증을 통과한 경우, S101단계에서 컨텐츠 등록 서버(20)는 컨텐츠 제공 단말(10)로 수신한 분리 실행 대상 코드 블록(34)이 유효하다는 검증 통과 결과를 피드백한다. 한편 컨텐츠 등록 서버(20)는 검증 결과 유효하지 않은 경우라도 자체 수정이 가능한 경우 오류를 수정하여 검증을 통과시킬 수도 있다.
이어서 S105단계에서 컨텐츠 등록 서버(20)는 검증된 분리 실행 대상 코드 블록(34)을 저장장치용 코드 블록(27)으로 변환한다. 예컨대 컨텐츠 등록 서버(20)는 검증을 통과한 분리 실행 대상 코드 블록(34)을 Java Byte 코드 블록 또는 ARM용 코드 블록으로 변환할 수 있다.
다음으로 S107단계에서 컨텐츠 등록 서버(20)는 변환한 저장장치용 코드 블록(27)과 서비스용 컨텐츠(32)를 데이터베이스부에 등록한다. 이때 컨텐츠 등록 서버(20)는 해당 컨텐츠(30)의 등록 정보도 함께 등록한다.
이어서 S109단계에서 컨텐츠 등록 서버(20)는 등록 완료 메시지를 컨텐츠 제공 단말(10)로 전송한다.
그리고 S111단계에서 컨텐츠 제공 단말(10)은 수신한 등록 완료 메시지를 출력한다. 이때 컨텐츠 제공 단말(10)은 컨텐츠 제공자가 확인할 수 있도록 등록 완료 메시지를 표시부(14)에 표시할 수 있다.
한편 S101단계는 S105단계 전에 수행되는 예를 개시하였지만 이것에 한정되는 것이다. 즉 검증 통과 결과는 S93단계에 따라 검증을 통과한 이후의 단계에서 수행될 수 있다. 예컨대 검증 통과 결과는 S105단계가 완료된 이후에 수행될 수도 있고, S109단계에서 등록 완료 메시지를 전송할 때 함께 전송될 수도 있다.
한편 제1 실시예에서는 컨텐츠 제공 단말(10)이 등록할 컨텐츠(30)를 분리 실행 대상 코드 블록(34)과 서비스용 컨텐츠(32)로 분리하여 컨텐츠 등록 서버(20)에 전송하여 등록을 요청하는 예를 개시하였지만 이것에 한정되는 것이다. 예컨대 도 16 및 도 18에 도시된 바와 같이, 컨텐츠 제공 단말(10)이 등록할 컨텐츠(30)를 컨텐츠 등록 서버(20)로 전송하여 등록을 요청하면, 컨텐츠 등록 서버(20)는 프로파일링 및 분석을 통하여 해당 컨텐츠(30)를 분리 실행 대상 코드 블록(34)과 서비스용 컨텐츠(32)로 분리하여 등록할 수 있다.
본 발명의 제3 실시예에 따른 분리 실행 기반의 디지털 저작권 관리 시스템(300)은, 도 16에 도시된 바와 같이, 네트워크(55)를 매개로 연결된 컨텐츠 제공 단말(10), 컨텐츠 등록 서버(20) 및 호스트 단말(51)과, 호스트 단말(51)에 유무선 인터페이스를 매개로 연결된 저장장치(53)를 포함하여 구성된다. 특히 제3 실시예에 따른 분리 실행 기반의 디지털 저작권 관리 시스템(300)은 컨텐츠 등록 시스템을 포함한다. 컨텐츠 등록 시스템은 네트워크(55)를 매개로 연결된 컨텐츠 제공 단말(10) 및 컨텐츠 등록 서버(20)를 포함하여 구성된다.
컨텐츠 제공 단말(10)은 등록할 컨텐츠(30)를 컨텐츠 등록 서버(20)로 전송한다. 이때 컨텐츠 제공 단말(10)은 컨텐츠(30)의 등록을 요청할 때, 컨텐츠 제공자로부터 해당 컨텐츠(30)에 대한 보안 수준을 입력받아 함께 전송할 수 있다. 그리고 컨텐츠 제공 단말(10)은 컨텐츠(30)의 등록을 요청할 때, 해당 컨텐츠(30)의 등록 정보를 함께 컨텐츠 등록 서버(20)로 전송할 수 있다.
그리고 컨텐츠 등록 서버(20)는 프로파일링 및 분석을 통하여 수신한 컨텐츠(30)를 분리 실행 대상 코드 블록(34)과 서비스용 컨텐츠(32)로 분리하여 등록할 수 있다. 즉 컨텐츠 등록 서버(10)는 수신한 컨텐츠(30)에 대한 프로파일링 및 분석을 통하여 분리 실행 대상 코드 블록(34)을 추출한다. 컨텐츠 등록 서버(20)는 분리 실행 대상 코드 블록(34)이 추출된 코드 영역에 스터브 코드를 삽입하여 서비스용 컨텐츠(32)를 생성한다. 그리고 컨텐츠 등록 서버(20)는 추출한 분리 실행 대상 코드 블록(34)에 대한 유효성을 검증한 후, 검증을 통과한 경우 해당 컨텐츠(30)를 데이터베이스부에 등록한다.
이때 컨텐츠 등록 서버(20)는 다음과 같이 검증 및 등록 과정을 수행할 수 있다. 즉 추출된 분리 실행 대상 코드 블록(34)에 대한 검증 결과 유효하지 않은 분리 실행 대상 코드 블록(34)이 검출된 경우, 컨텐츠 등록 서버(20)는 검증 실패로 판단한다. 컨텐츠 등록 서버(20)는 검증 실패 결과를 필터링 리스트에 추가하여 해당 분리 실행 대상 코드 블록(34)을 블랙 리스트에 올려서 선정 대상에서 배제시키고, 재 프로파일링 및 분석을 수행하여 새로운 분리 실행 대상 코드 블록(34)을 추출한다.
검증 결과 유효한 경우, 컨텐츠 등록 서버(20)는 분리 실행 대상 코드 블록(34)을 저장장치용 코드 블록(27)으로 변환하고, 검증 통과 결과를 컨텐츠 제공 단말(10)로 피드백 한다. 컨텐츠 등록 서버(20)는 변환된 저장장치용 코드 블록(27) 및 서비스용 컨텐츠(32)를 데이터베이스부에 등록하며, 해당 컨텐츠(30)의 등록 정보를 함께 데이터베이스부에 등록할 수 있다.
그리고 컨텐츠 등록 서버(20)는 등록 요청한 컨텐츠(30)에 대한 등록 완료 메시지를 컨텐츠 제공 단말(10)로 전송한다. 한편 컨텐츠 제공 단말(10)은 수신한 등록 완료 메시지를 컨텐츠 제공자가 확인할 수 있도록 화면에 출력할 수 있다.
이와 같은 본 발명의 제3 실시예에 따른 컨텐츠 등록 방법에 대해서 도 16 내지 도 18을 참조하여 설명하면 다음과 같다. 여기서 도 17은 본 발명의 제3 실시예에 따른 분리 실행 기반의 컨텐츠 등록 방법을 보여주는 흐름도이다. 그리고 도 18은 도 17의 등록 방법 중 검증 단계를 설명하기 위한 예시도이다.
먼저 S61단계 내지 S71단계는 제1 실시예에 따른 등록 방법과 동일한 순으로 진행되기 때문에, 상세한 설명은 생략하고 다음 단계인 S72단계부터 설명하면 다음과 같다.
S71단계에서 인증을 통과하면, S72단계에서 컨텐츠 등록 서버(20)는 인증정보를 컨텐츠 제공 단말(10)로 전송한다.
다음으로 S74단계에서 컨텐츠 제공 단말(10)은 컨텐츠 등록 서버(20)로 컨텐츠(30)와 함께 해당 컨텐츠(30)의 등록을 요청한다. 이때 컨텐츠 제공 단말(10)이 컨텐츠(30)의 등록을 요청할 때, 해당 컨텐츠(30)에 대한 보안 수준을 함께 전송할 수 있다.
그리고 S83단계 내지 S111단계에서 컨텐츠 등록 서버(20)는 해당 컨텐츠에 대한 분리, 검증 및 등록을 일괄적으로 수행하고, 검증 통과 결과 및 등록 완료 메시지를 컨텐츠 제공 단말(10)로 전송한다.
즉 S83단계에서 컨텐츠 등록 서버(20)는 프로파일링 및 분석 툴(40)을 실행한다. 이어서 S85단계에서 컨텐츠 등록 서버(20)는 수신한 컨텐츠(30)를 호출한다. 다음으로 S89단계에서 컨텐츠 등록 서버(20)는 실행중인 프로파일링 및 분석 툴(40)을 통하여 등록할 컨텐츠(30)로부터 분리 실행 대상 코드 블록(34)을 추출하고, 서비스용 컨텐츠(32)를 생성한다.
다음으로 S93단계에서 컨텐츠 등록 서버(20)는 추출한 분리 실행 대상 코드 블록(34)을 실제 저장장치(53)의 실행 환경에 대응하는 테스트 환경에서 실행하여 유효성을 검증한다. 이때 컨텐츠 등록 서버(20)는 다음과 같은 검증 항목을 기준으로 분리 실행 대상 코드 블록(34)에 대한 유효성을 검증할 수 있다. 예컨대 검증 항목은 Floating Point Instruction 유무, SIMD Instruction Set 유무, Initial Context에 포함된 메모리 범위가 임계 용량을 초과하는 지의 유무, 분리 실행 대상 코드 블록(34) 내에 장시간 반복하는 루프의 존재 유무, 분리 실행 대상 코드 블록(34) 내에 데이터가 존재하는 지의 유무 중에 적어도 하나를 포함한다.
S93단계의 검증 결과 유효하지 않은 분리 실행 대상 코드 블록(34)이 검출된 경우, 즉 검증에 실패한 경우, S98단계에서 컨텐츠 등록 서버(20)는 검증 실패 결과를 필터링 리스트에 추가하여 해당 분리 실행 대상 코드 블록(34)을 블랙 리스트에 올려서 선정 대상에서 배제시키고, S89단계에 따른 재 프로파일링 및 분석을 수행하여 새로운 분리 실행 대상 코드 블록(34)을 추출한다.
S93단계의 검증 결과 유효한 경우, 즉 검증을 통과한 경우, S101단계에서 컨텐츠 등록 서버(20)는 컨텐츠 제공 단말(10)로 수신한 분리 실행 대상 코드 블록(34)이 유효하다는 검증 통과 결과를 피드백한다. 한편 컨텐츠 등록 서버(20)는 검증 결과 유효하지 않은 경우라도 자체 수정이 가능한 경우 오류를 수정하여 검증을 통과시킬 수도 있다.
이어서 S105단계에서 컨텐츠 등록 서버(20)는 검증된 분리 실행 대상 코드 블록(34)을 저장장치용 코드 블록(27)으로 변환한다. 예컨대 저장장치가 스마트 카드인 경우, 컨텐츠 등록 서버(20)는 검증을 통과한 분리 실행 대상 코드 블록(34)을 Java Byte 코드 블록 또는 ARM용 코드 블록으로 변환할 수 있다.
다음으로 S107단계에서 컨텐츠 등록 서버(20)는 변환한 저장장치용 코드 블록(27)과 서비스용 컨텐츠(32)를 데이터베이스부에 등록한다. 이때 컨텐츠 등록 서버(20)는 해당 컨텐츠(30)의 등록 정보도 함께 등록할 수 있다.
이어서 S109단계에서 컨텐츠 등록 서버(20)는 등록 완료 메시지를 컨텐츠 제공 단말(10)로 전송한다.
그리고 S111단계에서 컨텐츠 제공 단말(10)은 수신한 등록 완료 메시지를 출력한다. 이때 컨텐츠 제공 단말(10)은 컨텐츠 제공자가 확인할 수 있도록 등록 완료 메시지를 표시부(14)에 표시할 수 있다.
한편 S101단계는 S105단계 전에 수행되는 예를 개시하였지만 이것에 한정되는 것이다. 즉 검증 통과 결과는 S93단계에 따라 검증을 통과한 이후의 단계에서 수행될 수 있다. 예컨대 검증 통과 결과는 S105단계가 완료된 이후에 수행될 수도 있고, S109단계에서 등록 완료 메시지를 전송할 때 함께 전송될 수도 있다.
본 실시예에 따른 컨텐츠 등록 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터로 판독 가능한 기록매체에 기록될 수 있다. 기록매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 기록매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 예컨대 기록매체는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치를 포함한다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드 뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 이러한 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
한편, 본 명세서와 도면에 개시된 실시예들은 이해를 돕기 위해 특정 예를 제시한 것에 지나지 않으며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형예들이 실시 가능하다는 것은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게는 자명한 것이다.
본 발명은 분리 실행 기반의 컨텐츠 등록 서버, 그 방법 및 그 방법을 수행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체에 관한 것으로, 컨텐츠에 대한 호스트 단말과 저장장치 간의 분리 실행에 필요한 분리 실행 대상 코드 블록과 서비스용 컨텐츠를 컨텐츠 등록 서버에 쉽게 등록할 수 있으며, 컨텐츠 제공자는 자신이 설정한 보안 수준에 따라 등록할 컨텐츠에서 분리 실행 대상 코드 블록을 추출할 수 있는 보안 방법을 제공할 수 있다. 또한 등록할 컨텐츠에서 추출한 분리 실행 대상 코드 블록을 저장장치용 코드 블록으로 변환하기 전에 추출한 분리 실행 대상 코드 블록에 대한 검증 단계를 수행함으로써, 실제 분리 실행 기반의 컨텐츠의 실행 시 발생될 수 있는 성능 및 안정성 저하 요인을 사전에 제거하여 안정적인 실행 환경을 제공할 수 있는 분리 실행 대상 코드 블록을 제공할 수 있다.
10 : 컨텐츠 제공 단말 20 : 컨텐츠 등록 서버
21 : 송수신부 22 : 웹페이지
23 : 데이터베이스부 25 : 서버제어부
27 : 저장장치용 코드 블록 30 : 컨텐츠
31 : 코드 영역 32 : 서비스용 컨텐츠
33 : 데이터 영역 34 : 분리 실행 대상 코드 블록
35 : 베이식 블록 36 : 스터브 코드
37 : 베이식 블록 그룹
38 : 분리 실행 대상 코드 블록의 리스트
40 : 프로파일링 및 분석 툴 42 : 컨텐츠 호출부
44 : 코드 블록 그룹 선정부 44a : 기초 정보 수집부
44b : 정적 분석부 46 : 추출 및 생성부
51 : 호스트 단말 53 : 저장장치
55 : 네트워크
100,200,300 : 분리 실행 기반의 디지털 저작권 관리 시스템

Claims (30)

  1. 분리 실행 기반의 컨텐츠를 등록하는 컨텐츠 등록 서버로서,
    데이터베이스부;
    컨텐츠 제공 단말과 통신을 수행하는 송수신부;
    상기 송수신부를 통하여 상기 컨텐츠 제공 단말로부터 컨텐츠의 등록 요청 및 상기 컨텐츠에 대해 설정된 보안 수준을 수신하고, 상기 컨텐츠에 대해 설정된 보안 수준에 따라 상기 컨텐츠의 코드 영역에서 추출된 분리 실행 대상 코드 블록과, 상기 분리 실행 대상 코드 블록이 추출된 코드 영역에 스터브 코드가 삽입된 서비스용 컨텐츠로 분리하여 상기 데이터베이스부에 등록하는 서버제어부;
    를 포함하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 등록 서버.
  2. 제1항에 있어서, 상기 서버제어부는,
    상기 송수신부를 통하여 상기 컨텐츠 제공 단말로부터 등록할 컨텐츠에 대한 프로파일링 및 분석을 통하여 분리한 분리 실행 대상 코드 블록과 서비스용 컨텐츠를 수신하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 등록 서버.
  3. 제2항에 있어서, 상기 서버제어부는,
    상기 분리 실행 대상 코드 블록을 실제 저장장치의 실행 환경에 대응하는 테스트 환경에서 실행하여 검증 항목을 기반으로 유효성을 검증하고, 상기 검증 결과 유효하지 않은 분리 실행 대상 코드 블록이 검출된 경우, 상기 컨텐츠 제공 단말로 상기 검증 실패 결과를 피드백하고, 상기 검증 결과 유효한 경우 상기 분리 실행 대상 코드 블록을 등록하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 등록 서버.
  4. 제3항에 있어서, 상기 서버제어부는,
    상기 컨텐츠 제공 단말로부터 상기 전송한 검증 실패 결과를 기반으로 상기 등록할 컨텐츠에 대한 재 프로파일링 및 분석을 통하여 분리한 분리 실행 대상 코드 블록과 서비스용 컨텐츠를 재수신하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 등록 서버.
  5. 제1항에 있어서, 상기 서버제어부는,
    상기 송수신부를 통하여 상기 컨텐츠 제공 단말로부터 등록할 컨텐츠와, 상기 등록할 컨텐츠에 대한 프로파일링 및 분석을 통하여 추출한 분리 실행 대상 코드 블록의 리스트를 수신하고, 상기 수신한 리스트를 기반으로 상기 수신한 컨텐츠로부터 분리 실행 대상 코드 블록을 추출하고, 상기 분리 실행 대상 코드 블록이 추출된 코드 영역에 스터브 코드를 삽입하여 서비스용 컨텐츠를 생성하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 등록 서버.
  6. 제5항에 있어서, 상기 서버제어부는,
    상기 분리 실행 대상 코드 블록을 실제 저장장치의 실행 환경에 대응하는 테스트 환경에서 실행하여 검증 항목을 기반으로 유효성을 검증하고, 상기 검증 결과 유효하지 않은 분리 실행 대상 코드 블록이 검출된 경우, 상기 컨텐츠 제공 단말로 상기 검증 실패 결과를 피드백하고, 상기 검증 결과 유효한 경우 상기 분리 실행 대상 코드 블록을 등록하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 등록 서버.
  7. 제6항에 있어서, 상기 서버제어부는,
    상기 컨텐츠 제공 단말로부터 상기 전송한 검증 실패 결과를 기반으로 상기 등록할 컨텐츠에 대한 재 프로파일링 및 분석을 통하여 추출한 분리 실행 대상 코드 블록의 리스트를 재수신하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 등록 서버.
  8. 제3항 또는 제6항에 있어서, 상기 검증 항목은,
    Floating Point Instruction 유무, SIMD Instruction Set 유무, Initial Context에 포함된 메모리 범위가 임계 용량을 초과하는 지의 유무, 분리 실행 대상 코드 블록 내에 장시간 반복하는 루프의 존재 유무, 분리 실행 대상 코드 블록 내에 데이터가 존재하는 지의 유무 중에 적어도 하나를 포함하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 등록 서버.
  9. 제1항에 있어서, 상기 서버제어부는,
    상기 송수신부를 통하여 상기 컨텐츠 제공 단말로부터 등록할 컨텐츠를 수신하고, 상기 수신한 컨텐츠에 대한 프로파일링 및 분석을 통하여 분리 실행 대상 코드 블록을 추출하고, 상기 분리 실행 대상 코드 블록이 추출된 코드 영역에 스터브 코드를 삽입하여 서비스용 컨텐츠를 생성하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 등록 서버.
  10. 제1항에 있어서, 상기 서버제어부는,
    상기 분리 실행 대상 코드 블록을 프로세서가 구비된 저장장치에서 실행할 수 있는 저장장치용 코드 블록으로 변환하여 상기 데이터베이스부에 등록하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 등록 서버.
  11. 분리 실행 기반의 컨텐츠 등록을 수행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체로서,
    등록할 컨텐츠를 호출하고 보안 수준을 설정하는 호출 단계;
    상기 설정된 보안 수준에 따라 상기 호출한 컨텐츠의 코드 영역에서 분리 실행 대상 코드 블록을 추출하고, 상기 분리 실행 대상 코드 블록이 추출된 코드 영역에 스터브 코드를 삽입하여 서비스용 컨텐츠를 생성하는 추출 및 생성 단계;
    상기 분리 실행 대상 코드 블록과 상기 서비스용 컨텐츠를 컨텐츠 등록 서버로 전송하여 등록을 요청하는 전송 단계;
    를 수행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체.
  12. 분리 실행 기반의 컨텐츠 등록을 수행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체로서,
    등록할 컨텐츠를 호출하는 단계;
    상기 호출한 컨텐츠에 대한 프로파일링 및 분석을 통하여 상기 컨텐츠의 코드 영역에서 분리 실행 대상 코드 블록을 추출하는 추출 단계;
    상기 추출한 분리 실행 대상 코드 블록의 리스트를 생성하는 생성 단계;
    상기 컨텐츠와 상기 생성한 리스트를 컨텐츠 등록 서버로 전송하여 등록을 요청하는 전송 단계;
    를 수행하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체.
  13. 제11항 또는 제12항에 있어서, 상기 호출 단계 이전에,
    상기 컨텐츠 등록 서버로부터 내려받은 프로파일링 및 분석 툴을 실행하는 실행 단계;
    를 더 수행하며,
    상기 호출 단계에서 상기 프로파일링 및 분석 툴에서 등록할 컨텐츠를 호출하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체.
  14. 제13항에 있어서, 상기 호출 단계는,
    상기 등록할 컨텐츠에 대한 보안 수준을 설정하는 보안 수준 설정 단계;
    를 더 포함하며,
    상기 추출 및 생성 단계, 또는 추출 단계에서 상기 설정된 보안 수준에 따라 프로파일링 및 분석을 수행하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체.
  15. 제14항에 있어서, 상기 보안 수준 설정 단계는,
    상기 보안 수준 설정 항목을 표시하는 단계;
    상기 보안 수준 설정 항목 중에서 선택된 보안 수준 설정 항목으로 보안 수준을 설정하는 단계;
    를 포함하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체.
  16. 제15항에 있어서, 상기 보안 수준 설정 항목은,
    베이식 블록 그룹의 호출 빈도, 베이식 블록 그룹의 호출 위치, 호스트 단말의 메모리 참조 빈도, 호스트 단말의 OS API 참조 빈도, 저장장치의 하드웨어 요소 중에 적어도 하나를 포함하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체.
  17. 제11항 또는 제12항에 있어서, 상기 추출 및 생성 단계, 또는 상기 추출 단계는,
    상기 호출한 컨텐츠의 코드 영역에 대한 프로파일링 및 분석을 통하여 복수의 베이식 블록 그룹을 선정하는 선정 단계;
    상기 복수의 베이식 블록 그룹 중에서 분리 실행 대상 코드 블록을 선택하여 상기 컨텐츠의 코드 영역에서 추출하는 추출 단계;
    를 포함하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체.
  18. 제17항에 있어서, 상기 선정 단계는,
    상기 호출한 컨텐츠의 코드 영역에 대한 동적 프로파일링을 통하여 기초 정보를 수집하는 수집 단계;
    상기 수집한 기초 정보를 기반으로 상기 컨텐츠에 대한 정적 분석을 수행하여 복수의 베이식 블록 그룹을 선정하는 베이식 블록 그룹 선정 단계;
    상기 분리 실행 대상 코드 블록이 추출된 상기 코드 영역에 스터브 코드를 삽입하여 서비스용 컨텐츠를 생성하는 단계;
    를 포함하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체.
  19. 제18항에 있어서, 상기 수집 단계에서,
    상기 기초 정보는 상기 코드 블록 추출 장치가 상기 컨텐츠에 대한 런-타임(run-time) 동안 수집한 상기 컨텐츠의 코드 영역에 대한 정보인 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체.
  20. 제18항에 있어서, 상기 베이식 블록 그룹 선정 단계에서,
    상기 수집한 기초 정보의 간접 주소를 컨트롤 플로우(control flow)에 대입하여 상기 컨텐츠의 코드 영역의 분석 범위를 확장하여 정적 분석을 수행하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체.
  21. 제17항에 있어서,
    상기 베이식 블록 그룹은 복수의 베이식 블록을 포함하며, 시작점(entry point)을 통한 제어 신호의 진입 및 상기 복수의 베이식 블록 간의 제어 신호의 이동은 허용하고, 상기 시작점을 제외한 상기 복수의 베이식 블록 내부로의 제어 신호의 진입이 없는 서로 관련된 상기 복수의 베이식 블록의 모임인 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체.
  22. 제21항에 있어서,
    상기 베이식 블록은 단일 입력(single input) 및 단일 출력(single output)의 속성과, 외부에서 내부로의 제어 신호의 진입을 허용하지 않는 속성을 갖는 코드 블록인 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체.
  23. 제11항 또는 제12항에 있어서, 상기 전송 단계에서,
    상기 컨텐츠의 등록 정보를 함께 상기 컨텐츠 등록 서버로 전송하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체.
  24. 제23항에 있어서,
    상기 컨텐츠의 등록 정보는 제목, Mime 타입, 설명서, 컨텐츠 제공자 이름, 과금 정보 중에 적어도 하나를 포함하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체.
  25. 제11항에 있어서, 상기 전송 단계 이후에,
    상기 컨텐츠 등록 서버로부터 상기 전송한 분리 실행 대상 코드 블록 중 유효하지 않은 분리 실행 대상 코드 블록이 포함되어 있다는 검증 실패 결과를 수신하는 수신 단계;
    상기 수신한 검증 실패 결과를 기반으로 상기 등록할 컨텐츠에 대한 재 프로파일링 및 분석을 통하여 다시 분리 실행 대상 코드 블록과 서비스용 컨텐츠를 분리하여 상기 컨텐츠 등록 서버로 재전송하는 재전송 단계;
    를 더 수행하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체.
  26. 제25항에 있어서,
    상기 전송 단계 또는 상기 재전송 단계 이후에 상기 컨텐츠 등록 서버로부터 상기 전송한 분리 실행 대상 코드 블록이 유효하다는 검증 통과 결과를 수신하는 단계;
    상기 컨텐츠 등록 서버로부터 등록 요청한 상기 컨텐츠에 대한 등록 완료 메시지를 수신하는 단계;
    를 더 수행하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체.
  27. 제25항에 있어서, 상기 재전송 단계에서,
    상기 수신한 검증 실패 결과에 포함된 유효하지 않은 분리 실행 대상 코드 블록을 블랙 리스트(black list)에 올려서 선정 대상에서 배제하고 재 프로파일링 및 분석을 수행하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체.
  28. 제12항에 있어서, 상기 전송 단계 이후에,
    상기 컨텐츠 등록 서버로부터 상기 전송한 리스트에 포함된 분리 실행 대상 코드 블록 중 유효하지 않은 분리 실행 대상 코드 블록이 포함되어 있다는 검증 실패 결과를 수신하는 수신 단계;
    상기 수신한 검증 실패 결과를 기반으로 상기 등록할 컨텐츠에 대한 재 프로파일링 및 분석을 통하여 다시 추출한 분리 실행 대상 코드 블록의 리스트를 생성하여 상기 컨텐츠 등록 서버로 재전송하는 재전송 단계;
    를 더 수행하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체.
  29. 제28항에 있어서,
    상기 전송 단계 또는 상기 재전송 단계 이후에 상기 컨텐츠 등록 서버로부터 상기 전송한 분리 실행 대상 코드 블록의 리스트가 유효하다는 검증 통과 결과를 수신하는 단계;
    상기 컨텐츠 등록 서버로부터 등록 요청한 상기 컨텐츠에 대한 등록 완료 메시지를 수신하는 단계;
    를 더 수행하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체.
  30. 제28항에 있어서, 상기 재전송 단계에서,
    상기 수신한 검증 실패 결과에 포함된 유효하지 않은 분리 실행 대상 코드 블록을 블랙 리스트(black list)에 올려서 선정 대상에서 배제하고 재 프로파일링 및 분석을 수행하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체.
KR1020100024585A 2009-07-30 2010-03-19 분리 실행 기반의 컨텐츠 등록 서버, 그 방법 및 그 방법을 수행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체 KR101442000B1 (ko)

Applications Claiming Priority (2)

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

Publications (2)

Publication Number Publication Date
KR20110013176A KR20110013176A (ko) 2011-02-09
KR101442000B1 true KR101442000B1 (ko) 2014-09-24

Family

ID=43772985

Family Applications (5)

Application Number Title Priority Date Filing Date
KR1020100024136A KR101412465B1 (ko) 2009-07-30 2010-03-18 분리 실행 기반의 컨텐츠용 코드 블록의 검증 시스템 및 방법
KR1020100024585A KR101442000B1 (ko) 2009-07-30 2010-03-19 분리 실행 기반의 컨텐츠 등록 서버, 그 방법 및 그 방법을 수행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체
KR1020100027937A KR101441999B1 (ko) 2009-07-30 2010-03-29 분리 실행 기반의 컨텐츠 분리 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록매체
KR20100027946A KR101478034B1 (ko) 2009-07-30 2010-03-29 컨텐츠의 코드 분석 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록매체
KR1020100030170A KR101455668B1 (ko) 2009-07-30 2010-04-02 분리 실행 기반의 컨텐츠용 베이식 블록 그룹 정의 장치, 정의 방법 및 그를 기록한 컴퓨터로 판독 가능한 기록매체

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020100024136A KR101412465B1 (ko) 2009-07-30 2010-03-18 분리 실행 기반의 컨텐츠용 코드 블록의 검증 시스템 및 방법

Family Applications After (3)

Application Number Title Priority Date Filing Date
KR1020100027937A KR101441999B1 (ko) 2009-07-30 2010-03-29 분리 실행 기반의 컨텐츠 분리 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록매체
KR20100027946A KR101478034B1 (ko) 2009-07-30 2010-03-29 컨텐츠의 코드 분석 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록매체
KR1020100030170A KR101455668B1 (ko) 2009-07-30 2010-04-02 분리 실행 기반의 컨텐츠용 베이식 블록 그룹 정의 장치, 정의 방법 및 그를 기록한 컴퓨터로 판독 가능한 기록매체

Country Status (1)

Country Link
KR (5) KR101412465B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130063332A (ko) * 2011-12-06 2013-06-14 주식회사 케이티 사용자 단말의 콘텐트 저장 정보 표시 방법
WO2013101079A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Profiling asynchronous events resulting from the execution of software at code region granularity
KR102043038B1 (ko) * 2017-12-12 2019-11-11 슈어소프트테크주식회사 음성 정보에 기반한 정적 분석 수행 방법 및 장치
KR102441167B1 (ko) * 2018-12-05 2022-09-08 한국전자통신연구원 펑션 실행 장치 및 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006164184A (ja) * 2004-12-10 2006-06-22 Ntt Docomo Inc プログラム分割装置、プログラム実行装置、プログラム分割方法及びプログラム実行方法
JP2006172351A (ja) 2004-12-20 2006-06-29 Hitachi Ltd リムーバブルメディア利用によるコンテンツの使用期限管理方法及びシステム
KR20060093810A (ko) * 2005-02-22 2006-08-28 일공오이닷컴 주식회사 디지털 저작권 관리 방법 및 시스템
KR20070036378A (ko) * 2005-09-29 2007-04-03 한국전자통신연구원 분산 소프트웨어 스트리밍 서비스 방법 및 시스템

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020044301A (ko) * 2000-12-05 2002-06-15 구자홍 무선 인터넷 컨텐츠에 대한 문서 변환 시스템 및 그시스템을 이용한 음성 인터넷 컨텐츠 서비스 방법
JP2004164554A (ja) 2002-09-24 2004-06-10 Hitachi Ltd プログラム実行監視装置および方法
KR100491541B1 (ko) 2003-08-01 2005-05-25 니트젠테크놀러지스 주식회사 네트웍 환경에서의 컨텐츠 동기화 시스템 및 동기화 방법
JP4922951B2 (ja) * 2005-02-11 2012-04-25 シンプレックス メジャー センドリアン ベルハッド ソフトウェア保護方法
US7975257B2 (en) * 2006-06-13 2011-07-05 Microsoft Corporation Iterative static and dynamic software analysis

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006164184A (ja) * 2004-12-10 2006-06-22 Ntt Docomo Inc プログラム分割装置、プログラム実行装置、プログラム分割方法及びプログラム実行方法
JP2006172351A (ja) 2004-12-20 2006-06-29 Hitachi Ltd リムーバブルメディア利用によるコンテンツの使用期限管理方法及びシステム
KR20060093810A (ko) * 2005-02-22 2006-08-28 일공오이닷컴 주식회사 디지털 저작권 관리 방법 및 시스템
KR20070036378A (ko) * 2005-09-29 2007-04-03 한국전자통신연구원 분산 소프트웨어 스트리밍 서비스 방법 및 시스템

Also Published As

Publication number Publication date
KR101412465B1 (ko) 2014-06-30
KR20110013175A (ko) 2011-02-09
KR101455668B1 (ko) 2014-11-03
KR101441999B1 (ko) 2014-09-24
KR101478034B1 (ko) 2015-01-02
KR20110013182A (ko) 2011-02-09
KR20110013183A (ko) 2011-02-09
KR20110013176A (ko) 2011-02-09
KR20110013186A (ko) 2011-02-09

Similar Documents

Publication Publication Date Title
CN109918055B (zh) 一种应用程序的生成方法及设备
CN109002297B (zh) 共识机制的部署方法、装置、设备和存储介质
CN107908485A (zh) 接口参数传递方法、装置、设备及计算机可读存储介质
KR100546742B1 (ko) 타겟 시스템 기반 소스 프로그램 개발장치 및 방법
US20160378989A1 (en) Apparatus and method for monitoring android platform-based application
KR101487176B1 (ko) 분리 실행 기반의 컨텐츠용 코드 블록 제공 시스템, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록매체
CN111831538B (zh) 调试方法、装置以及存储介质
US20060136880A1 (en) System, apparatus and methods for automatic program translation
US20130305096A1 (en) System and method for monitoring web service
CN111414193A (zh) 基于微服务框架的业务系统的实现方法及相关装置
KR101442000B1 (ko) 분리 실행 기반의 컨텐츠 등록 서버, 그 방법 및 그 방법을 수행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체
CN107402792A (zh) 应用软件安装包的集成方法、装置、设备及存储介质
CN112258191A (zh) 数据对账方法、装置、设备及存储介质
CN110806891B (zh) 嵌入式设备软件版本的生成方法及装置
CN112559344A (zh) 远程mock测试方法及系统
CN112445473A (zh) 客户端布局方法与装置、存储介质、电子设备
KR101384536B1 (ko) 스마트 카드에서 호스트 단말의 api 호출 시스템 및 방법, 그 호스트 단말 및 스마트 카드, 이를 위한 기록매체
CN111427770B (zh) 一种资源测试方法及相关设备
KR101383050B1 (ko) 어플리케이션 번역 방법 및 장치
CN113141613A (zh) 一种通信渠道检测方法、装置和电子设备
CN113608996B (zh) 一种镜像编译测试方法、系统、装置及可读存储介质
KR102425978B1 (ko) 클라우드 서비스 플랫폼에서 Composite 웹 UI 제공시스템
CN111935272B (zh) Afc部署方法、装置及计算机可读存储介质
JP5363286B2 (ja) シミュレーションプログラム生成プログラム及びシミュレーションプログラム生成方法
CN114253526A (zh) 在线计价方法、装置、设备及存储介质

Legal Events

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

Payment date: 20170830

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180830

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190819

Year of fee payment: 6