KR20060118540A - 프로그램 데이터 파일 저장 방법 및 인증된 프로그램 실행방법 - Google Patents

프로그램 데이터 파일 저장 방법 및 인증된 프로그램 실행방법 Download PDF

Info

Publication number
KR20060118540A
KR20060118540A KR1020067011314A KR20067011314A KR20060118540A KR 20060118540 A KR20060118540 A KR 20060118540A KR 1020067011314 A KR1020067011314 A KR 1020067011314A KR 20067011314 A KR20067011314 A KR 20067011314A KR 20060118540 A KR20060118540 A KR 20060118540A
Authority
KR
South Korea
Prior art keywords
program
file
certificate
data file
hash
Prior art date
Application number
KR1020067011314A
Other languages
English (en)
Other versions
KR101073170B1 (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 KR20060118540A publication Critical patent/KR20060118540A/ko
Application granted granted Critical
Publication of KR101073170B1 publication Critical patent/KR101073170B1/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/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/84Generation or processing of descriptive data, e.g. content descriptors
    • H04N21/8402Generation or processing of descriptive data, e.g. content descriptors involving a version number, e.g. version number of EPG data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/633Control signals issued by server directed to the network components or client
    • H04N21/6332Control signals issued by server directed to the network components or client directed to client
    • H04N21/6334Control signals issued by server directed to the network components or client directed to client for authorisation, e.g. by transmitting a key
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • 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/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/235Processing of additional data, e.g. scrambling of additional data or processing content descriptors
    • 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/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/235Processing of additional data, e.g. scrambling of additional data or processing content descriptors
    • H04N21/2351Processing of additional data, e.g. scrambling of additional data or processing content descriptors involving encryption of additional data
    • 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/41Structure of client; Structure of client peripherals
    • H04N21/418External card to be used in combination with the client device, e.g. for conditional access
    • H04N21/4181External card to be used in combination with the client device, e.g. for conditional access for conditional access
    • 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/432Content retrieval operation from a local storage medium, e.g. hard-disk
    • H04N21/4325Content retrieval operation from a local storage medium, e.g. hard-disk by playing back content from the storage medium
    • 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/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • 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/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • H04N21/4334Recording operations
    • 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/4345Extraction or processing of SI, e.g. extracting service information from an MPEG stream
    • 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/4348Demultiplexing of additional data and video streams
    • 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/435Processing of additional data, e.g. decrypting of additional data, reconstructing software from modules extracted from the transport stream
    • 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/435Processing of additional data, e.g. decrypting of additional data, reconstructing software from modules extracted from the transport stream
    • H04N21/4351Processing of additional data, e.g. decrypting of additional data, reconstructing software from modules extracted from the transport stream involving reassembling additional data, e.g. rebuilding an executable program from recovered modules
    • 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/435Processing of additional data, e.g. decrypting of additional data, reconstructing software from modules extracted from the transport stream
    • H04N21/4353Processing of additional data, e.g. decrypting of additional data, reconstructing software from modules extracted from the transport stream involving decryption of additional data
    • 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/438Interfacing the downstream path of the transmission network originating from a server, e.g. retrieving encoded video stream packets from an IP network
    • H04N21/4383Accessing a communication channel
    • 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/438Interfacing the downstream path of the transmission network originating from a server, e.g. retrieving encoded video stream packets from an IP network
    • H04N21/4385Multiplex stream processing, e.g. multiplex stream decrypting
    • H04N21/43853Multiplex stream processing, e.g. multiplex stream decrypting involving multiplex stream decryption
    • 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/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
    • H04N21/4433Implementing client middleware, e.g. Multimedia Home Platform [MHP]
    • 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/4437Implementing a Virtual Machine [VM]
    • 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/458Scheduling content for creating a personalised stream, e.g. by combining a locally stored advertisement with an incoming stream; Updating operations, e.g. for OS modules ; time-related management operations
    • H04N21/4586Content update operation triggered locally, e.g. by comparing the version of software modules in a DVB carousel to the version stored locally
    • 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/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/61Network physical structure; Signal processing
    • H04N21/6106Network physical structure; Signal processing specially adapted to the downstream path of the transmission network
    • H04N21/6118Network physical structure; Signal processing specially adapted to the downstream path of the transmission network involving cable transmission, e.g. using a cable modem
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/61Network physical structure; Signal processing
    • H04N21/6156Network physical structure; Signal processing specially adapted to the upstream path of the transmission network
    • H04N21/6168Network physical structure; Signal processing specially adapted to the upstream path of the transmission network involving cable transmission, e.g. using a cable modem
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/16Analogue secrecy systems; Analogue subscription systems
    • H04N7/162Authorising the user terminal, e.g. by paying; Registering the use of a subscription channel, e.g. billing
    • H04N7/163Authorising the user terminal, e.g. by paying; Registering the use of a subscription channel, e.g. billing by receiver means only
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/16Analogue secrecy systems; Analogue subscription systems
    • H04N7/167Systems rendering the television signal unintelligible and subsequently intelligible
    • H04N7/1675Providing digital key or authorisation information for generation or regeneration of the scrambling sequence
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/16Analogue secrecy systems; Analogue subscription systems
    • H04N7/173Analogue secrecy systems; Analogue subscription systems with two-way working, e.g. subscriber sending a programme selection signal
    • H04N7/17345Control of the passage of the selected programme

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Library & Information Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

종래에는, 프로그램의 버전이 업그레이드되었을 때, 새로운 프로그램으로 교체하기 위해 현재 저장된 프로그램 전체가 삭제될 필요가 있고, 기동시 이러한 새로운 프로그램에 대해 인증이 다시 수행될 필요가 있다. 그러나, 이러한 프로그램의 일부만 변경되는 경우에도 프로그램 전체의 저장 및 인증을 필요로하므로, 시간을 소모할 뿐만 아니라 응답성이 저하한다. 이러한 문제를 해결하기 위해서, 본 발명은 새로운 프로그램과 현재 저장된 이전의 프로그램 사이의 차이를 추출하고, 이러한 새로운 프로그램이 저장될 때, 이러한 차이에 대해서만 인증을 수행한 후 새로운 프로그램이 저장된다.

Description

프로그램 데이터 파일 저장 방법 및 인증된 프로그램 실행 방법{PROGRAM DATA FILE STORAGE METHOD AND AUTHENTICATED PROGRAM EXECUTION METHOD}
본 발명은 신용성을 검증한 후 다운로드된 프로그램을 저장하여 신용성이 있는 것으로 검증된 프로그램을 실행시키는 프로그램 데이터 파일 저장 방법 및 인증된 프로그램 실행 방법에 관한 것으로, 특히 프로그램의 업데이트 및 인증에 관한 것이다.
프로그램을 다운로드하여 이러한 프로그램의 신용성을 체크 및 보증하는 디지털 텔레비전의 기능은 DVB-MHP 사양서 "ETSI TS 101 812 V1.2.1 DVB-MHP 사양서 1.0.2" 등에 기술되어 있다. 이러한 DVB-MHP 사양서는 수신되고 있는 방송파에 중첩된 프로그램이 위변조(Tampering)되지 않았는지와 이러한 프로그램이 신뢰성 있는 기관에 의해 발행되었는지 여부를 검증하는 기능을 규정한다. 이 기능은 원래 요구된 바와 같이 동작하지 않아서 디지털 텔레비전에 손상을 주는 재기록된 프로그램과, 거짓된 제3자의 프로그램이 기동되는 것을 방지하는 것을 가능하게 한다.
프로그램을 업데이트하는 기능은 OCAP 사양서 (OCAP 1.0 Profile OC-SP-OCAP1.0-IF-I09-031121)에 기술되어 있다. 이 OCAP 사양서에 따르면, XAIT(프로그램에 대해 기술한 테이블)에서, 프로그램 업그레이드 신호(그 기술내용이 변경될 때마다 프로그램의 버전이 업그레이드된다)가 검출되면, 2차 메모리(예를 들어 플래시 ROM)에 현재 저장된 클래스 파일 및 데이터 파일과 같은 모든 프로그램 파일이 클래스 파일과 데이터 파일과 같은 업그레이드된 프로그램의 파일로 교체된다.
한편, 일본국 공개특허출원번호 2000-259417호는, 실행 주체 또는 실행 환경을 구성하는 또 다른 오프젝트로부터의 요구에 따라 다음의 단계들: 실행 환경을 구성하는 오브젝트를 삭제하는 단계; 및 외부 시스템으로부터 새로운 오브젝트를 취득하는 단계를 실행함으로써 실행 환경을 구성하는 오브젝트를 교체하는 기술을 개시하고 있다.
프로그램이 업그레이드될 경우, 클래스 파일 및 데이터 파일과 같은 파일 모두가 업그레이드되지 않고, 이러한 프로그램은 단지 부분적으로 업그레이드된다. 그러나, 종래의 기술에 따르면, 프로그램이 단지 부분적으로 업그레이드될 필요가 있을 때에도 저장된 프로그램의 파일 모두가 업그레이드된 프로그램의 파일로 교체하기 위해 삭제될 필요가 있다. 저장에 필요한 시간 길이에 비례하여 응답성이 저하되므로, 이것이 종래기술의 문제점이다. 또한, 장치가 파워 온/오프된 후 프로그램을 기동시키기 위해 일단 불휘발성 메모리에 프로그램을 저장하는 경우에, 기동되기 직전에 프로그램의 인증이 수행된다. 이 경우에, 프로그램 기동이 시작되기 전에 암호화된 값의 복호화와 같은 계산을 수행하는 것이 필요하여, 계산에 필요한 시간이 길수록 응답성이 더욱 저하되는 문제점을 일으킨다. 특히, 프로그램이 자주 기동되거나 또는 프로그램의 용량이 큰 경우에, 기동 빈도 및 용량에 비례하여 계산량이 증가하므로 응답성이 더욱더 저하된다.
이러한 문제점을 감안하여, 프로그램 업데이트에 필요한 시간과 프로그램이 기동되기 전에 필요한 시간을 줄이면서도 프로그램의 신용성을 보증할 수 있는 응답성이 향상된 디지털 텔레비전과 같은 프로그램 실행 장치를 제공하는 것이 바람직하다.
본 발명은 프로그램의 버전을 업그레이드할 때 업그레이드 전후의 프로그램 사이의 차이를 추출하고, 프로그램이 저장되기 직전에 이러한 차이만을 인증 및 업데이트하여, 프로그램 기동시 인증을 수행하지 않거나 일부 인증만 수행함으로써, 신용성을 보증함과 더불어 응답성을 향상시킬 수 있는 프로그램 데이터 파일 저장 방법 및 인증된 프로그램 실행 방법을 제공하는 것을 목적으로 한다.
종래의 문제점을 해소하기 위해서, 본 발명에 따른 프로그램 데이터 파일 저장 방법은: 제 1 트랜스포트 스트림에 포함된 제 1 프로그램의 각 데이터 파일을 인증하고, 상기 제 1 프로그램의 각 데이터 파일의 저장에 관한 정보에 따라 상기 제 1 프로그램의 각 인증된 데이터 파일을 방송 수신기에 저장하는 제 1 단계; 제 2 트랜스포트 스트림에 포함된 제 2 프로그램의 각 데이터 파일의 저장에 관한 정보를 수신하는 제 2 단계; 및 상기 제 2 프로그램의 데이터 파일이 상기 제 1 프로그램을 저장시 인증되어 있는 상기 제 1 프로그램의 임의의 데이터 파일과는 상이한 데이터 파일을 포함하는 경우에 실행되는 다음의 단계들을 포함하고, 상기 다음의 단계들은, 2개의 해시값이 일치하는지 여부를 검증하는 단계로서, 상기 해시값들 중 하나는 상기 제 2 프로그램에 포함된 상이한 데이터 파일로부터 계산되며 다른 하나의 해시값은 상기 제 2 프로그램에 포함된 상이한 데이터 파일에 대응하는 해시 파일에 저장된, 제 3 단계; 상기 제 2 프로그램에 포함된 증명서 파일이 유효한지 여부를 검증하는 제 4 단계; 복호화된 값과 해시값이 일치하는지 여부를 검증하는 단계로서, 상기 복호화된 값은 상기 제 2 프로그램의 증명서 파일의 리프 증명서의 공개키를 사용하여 상기 제 2 프로그램에 포함된 서명 파일의 서명값을 복호화함으로써 취득되고, 상기 해시값은 상기 제 2 프로그램의 최상의 디렉토리에 위치된 해시 파일로부터 계산된, 제 5 단계; 및 상기 제 3 단계에서 상기 2개의 해시값이 일치하는 것으로 검증됨; 상기 제 4 단계에서 상기 제 2 프로그램에 포함된 증명서 파일이 유효한 것으로 검증됨; 및 상기 제 5 단계에서 상기 복호화된 값과 상기 해시값이 일치하는 것으로 검증됨이 만족되는 경우에, 상기 제 2 프로그램을 인증하고 상기 제 2 프로그램의 각 데이터 파일의 저장에 관한 정보에 따라 인증된 제 2 프로그램을 저장하는 제 6 단계로 이루어진다.
따라서, 프로그램을 인증 및 업데이트 하는데 필요한 시간을 줄이는 것이 가능해진다.
또한, 상기 제 2 프로그램에 포함된 상이한 데이터 파일은 상기 제 1 프로그램의 저장시에 인증되어 있는 제 1 프로그램의 데이터 파일을 업데이트하는데 사용되는 데이터 파일일 수 있다.
따라서, 버전이 업그레이드되어 있는 제 2 프로그램에 포함된 데이터 파일을 사용하여, 제 1 프로그램에 포함된 데이터 파일을 업데이트하는 것이 가능해진다.
또한, 상기 제 2 프로그램에 포함된 상이한 데이터 파일은 상기 제 1 프로그램의 저장시에 인증되어 있는 제 1 프로그램의 임의의 데이터 파일과는 상이한 새로운 데이터 파일일 수 있다.
따라서, 버전이 업그레이드되어 있는 제 2 프로그램에 새롭게 부가되는 데이터 파일을 저장하는 것이 가능해진다.
또한, 상기 각 프로그램이 디렉토리 구조를 가지는 경우에, 각 디렉토리에 포함된 각 데이터 파일과 상기 각 데이터 파일에 대응하는 해시 파일이 동일한 디렉토리에 위치될 수 있으며, 상기 제 3 단계가 상기 제 2 프로그램에 포함된 상이한 데이터 파일을 포함하는 각 디렉토리에 대해 실행될 수 있다.
따라서, 각 디렉토리에 포함된 각 데이터 파일에 대해, 데이터 파일로부터 계산된 해시값과 상기 데이터 파일에 대응하는 해시 파일에 저장된 해시값이 일치하는지 여부를 체크하는 것이 가능해진다.
또한, 상기 제 4 단계는, 2개의 루트 증명서가 일치하는지 여부를 검증하는 단계로서, 상기 루트 증명서 중 하나는 상기 제 2 프로그램에 포함된 증명서 파일에 있고 다른 하나의 루트 증명서는 상기 방송 수신기에 설치된, 제 7 단계를 포함할 수 있고, 상기 제 4 단계에서, 상기 2개의 루트 증명서가 일치하는 경우에 증명서 파일이 유효한 것으로 검증될 수 있다.
여기서, 상기 제 4 단계는, 상기 제 2 프로그램에 포함된 증명서 파일의 각 증명서의 유효 기간을 검증하는 제 8 단계를 더 포함하고, 상기 제 4 단계에서, 상기 2개의 루트 증명서가 일치함; 및 인증이 수행되는 시각이 증명서 파일의 각 증명서의 유효 기간 내임을 모두 만족하는 경우에 증명서 파일이 유효한 것으로 검증될 수 있다.
따라서, 루트 증명서들이 일치하지 않고 증명서의 유효 기간이 만료한 경우에 프로그램이 저장되는 것을 방지하는 것이 가능해진다.
또한, 본 발명에 따른 인증된 프로그램 실행 방법은: 제 1 트랜스포트 스트림에 포함된 제 1 프로그램의 각 데이터 파일을 인증하고, 상기 제 1 프로그램의 각 데이터 파일의 저장에 관한 정보에 따라 상기 제 1 프로그램의 각 인증된 데이터 파일을 방송 수신기에 저장하는 제 1 단계; 제 2 트랜스포트 스트림에 포함된 제 2 프로그램의 각 데이터 파일의 저장 에 관한 정보를 수신하는 제 2 단계; 및 상기 제 2 프로그램의 데이터 파일이 상기 제 1 프로그램을 저장시 인증되어 있는 제 1 프로그램의 임의의 데이터 파일과는 상이한 데이터 파일을 포함하는 경우에 실행되는 다음의 단계들을 포함하고, 상기 다음의 단계들은, 2개의 해시값이 일치하는지 여부를 검증하는 단계로서, 상기 해시값들 중 하나는 상기 제 2 프로그램에 포함된 상이한 데이터 파일로부터 계산되며 다른 하나의 해시값은 상기 제 2 프로그램에 포함된 상이한 데이터 파일에 대응하는 해시 파일에 저장된, 제 3 단계; 상기 제 2 프로그램에 포함된 증명서 파일이 유효한지 여부를 검증하는 제 4 단계; 복호화된 값과 해시값이 일치하는지 여부를 검증하는 단계로서, 상기 복호화된 값은 상기 제 2 프로그램의 증명서 파일의 리프 증명서의 공개키를 사용하여 상기 제 2 프로그램에 포함된 서명 파일의 서명값을 복호화함으로써 취득되고, 상기 해시값은 상기 제 2 프로그램의 최상의 디렉토리에 위치된 해시 파일로부터 계산된, 제 5 단계; 상기 제 3 단계에서 상기 2개의 해시값이 일치하는 것으로 검증됨; 상기 제 4 단계에서 상기 제 2 프로그램에 포함된 증명서 파일이 유효한 것으로 검증됨; 및 상기 제 5 단계에서 상기 복호화된 값과 상기 해시값이 일치하는 것으로 검증됨이 만족되는 경우에, 상기 제 2 프로그램을 인증하고 상기 제 2 프로그램의 각 데이터 파일의 저장에 관한 정보에 따라 인증된 제 2 프로그램을 저장하는 제 6 단계; 상기 제 2 프로그램이 실행되는 경우에 상기 저장된 제 2 프로그램에 포함된 증명서 파일이 유효한지 여부를 검증하는 제 9 단계; 및 상기 제 9 단계에서 상기 저장된 제 2 프로그램에 포함된 증명서 파일이 유효한 것으로 검증되는 경우에만, 상기 저장된 제 2 프로그램을 다시 인증하여 인증된 제 2 프로그램을 실행하는 실행 단계로 이루어진다.
따라서, 프로그램을 인증 및 업데이트하는데 필요한 시간을 줄임과 더불어 프로그램이 기동되기 전에 필요한 시간을 줄이는 것이 가능해지고, 프로그램의 신용성을 보증한다.
또한, 상기 제 9 단계는, 2개의 루트 증명서가 일치하는지 여부를 검증하는 단계로서, 상기 루트 증명서 중 하나는 상기 저장된 제 2 프로그램에 포함된 증명서 파일에 있고 다른 하나의 루트 증명서는 상기 방송 수신기에 설치되는, 제 10 단계를 포함할 수 있고, 상기 제 9 단계에서, 상기 2개의 루트 증명서가 일치하는 경우에 상기 증명서 파일이 유효한 것으로 검증될 수 있다.
여기서, 상기 제 9 단계는 상기 저장된 제 2 프로그램에 포함된 증명서 파일의 각 증명서의 유효 기간을 검증하는 제 11 단계를 포함할 수 있고, 상기 제 9 단계에서, 상기 2개의 루트 증명서가 일치함; 및 상기 실행이 행해지는 시각이 증명서 파일의 각 증명서의 유효 기간 내임을 모두 만족하는 경우에 증명서 파일이 유효한 것으로 검증될 수 있다.
따라서, 루트 증명서가 일치하지 않고 증명서의 유효 기간이 만료된 경우에 프로그램이 저장되는 것을 방지하는 것이 가능해진다.
상기와 같은 프로그램 데이터 파일 저장 방법 및 인증된 프로그램 실행 방법 뿐만 아니라 상기 프로그램 데이터 파일 저장 방법 및 인증된 프로그램 실행 방법에 포함된 특징적인 단계들을 그들의 개별 유닛으로서 포함하는 프로그램 데이터 파일 저장 장치 및 인증된 프로그램 실행 장치로서, 그리고 그들의 각 단계들을 컴퓨터가 실행하게 하는 프로그램으로서, 본 발명을 구현하는 것이 가능하다. 이러한 프로그램은 CD-ROM과 같은 기록매체 및 인터넷과 같은 전송매체를 통해 배포될 수 있다.
상기의 설명으로부터 명백한 바와 같이, 본 발명에 따른 프로그램 데이터 파일 저장 방법은 프로그램을 인증 및 업데이트하는데 필요한 시간을 줄일 수 있다. 또한, 본 발명에 따른 인증된 프로그램 실행 방법은 프로그램이 기동되기 전에 필요한 시간을 줄이면서, 프로그램의 신용성을 보증할 수 있다.
명세서, 도면 및 청구범위를 포함하는, 2003년 12월 18일에 출원된 일본국 특허 출원 번호 2003-421616, 2004년 4월 6일에 출원된 일본국 특허 출원 번호 2004-111802, 및 2003년 12월 19일에 출원된 미국 가출원 번호 60/530663의 개시내용이 전체적으로 참조로 여기에 병합되었다.
본 발명의 이들 및 그 밖의 목적, 효과 및 구성이 본 발명의 구체적인 실시형태를 도시한 첨부 도면을 참조하여 이루어진 다음의 설명으로부터 명확해질 것이다.
도 1은 본 발명의 제 1 실시형태에 따른 케이블 텔레비전의 구성을 도시한 도면;
도 2는 본 발명에 따른 케이블 텔레비전 시스템에서 헤드 엔드와 단말장치 사이의 통신에 사용되는 주파수대의 사용 예를 도시한 도면;
도 3은 본 발명에 따른 케이블 텔레비전 시스템에서 헤드 엔드와 단말장치 사이의 통신에 사용되는 주파수대의 사용 예를 도시한 도면;
도 4는 본 발명에 따른 케이블 텔레비전 시스템에서 헤드 엔드와 단말장치 사이의 통신에 사용되는 주파수대의 사용 예를 도시한 도면;
도 5는 본 발명에 따른 케이블 텔레비전 시스템에서 단말장치의 구성을 도시한 도면;
도 6은 본 발명에 따른 케이블 텔레비전 시스템에서 단말장치의 외관 예를 도시한 도면;
도 7은 본 발명에 따른 POD(504)의 하드웨어 구성을 도시한 도면;
도 8은 본 발명에 따른 POD(504)에 저장된 프로그램의 구성을 도시한 도면;
도 9는 MPEG 표준에 규정된 패킷의 구성을 도시한 도면;
도 10은 MPEG2 트랜스포트 스트림의 실시예를 도시한 도면;
도 11은 입력유닛(513)이 프론트 패널의 형태로 구성된 경우에 입력 유닛 (513)의 외관 예를 도시한 도면;
도 12는 본 발명에 따른 터미널 장치(500)에 저장된 프로그램의 구성을 도시한 도면;
도 13A는 본 발명에 따른 디스플레이(509)에 의해 디스플레이된 디스플레이 스크린의 실시예를 도시한 도면, 그리고 도 13B는 본 발명에 따른 디스플레이(509)에 의해 디스플레이된 디스플레이 스크린의 실시예를 도시한 도면;
도 14는 본 발명에 따른 2차 저장유닛(510)에 저장된 정보의 실시예를 도시한 도면;
도 15A, 15B, 및 15C는 각각 본 발명의 따른 1차 저장유닛(511)에 저장된 정보의 실시예를 도시한 도면;
도 16은 본 발명에 따른 MPEG2 표준에서 규정된 PAT의 내용을 도시한 개략도;
도 17은 본 발명에 따른 MPEG2 표준에서 규정된 PMT의 내용을 도시한 개략도;
도 18은 본 발명에 따른 AIT의 내용을 도시한 개략도;
도 19는 본 발명에 따른 DSMCC 포맷으로 송신되는 파일 시스템을 도시한 개략도;
도 20은 본 발명에 따른 XAIT의 내용을 도시한 개략도;
도 21은 본 발명에 따른 2차 저장유닛(510)에 저장된 정보의 실시예를 도시한 도면;
도 22A, 22B, 및 22C는 각각 본 발명에 따른 파일 또는 디렉토리의 해시값을 포함하는 파일의 실시예를 도시한 도면;
도 23은 본 발명에 따른 증명서 체인의 구성을 도시한 도면;
도 24는 본 발명에 따른 X.509 증명서의 구성을 도시한 도면;
도 25는 본 발명에 따른 서명 파일의 구성을 도시한 도면;
도 26은 본 발명에 따른 시큐리티 모듈의 구성 요소를 도시한 도면;
도 27은 본 발명에 따른 파일 시스템이 인증될 때 수행되는 동작을 도시한 플로우챠트;
도 28은 본 발명에 따른 프로그램 기동 전치 통지(program pre-activation notification)가 수신될 때 인증이 수행되지 않는 경우의 플로우챠트;
도 29는 본 발명에 따른 파일 시스템에 대해 위변조 체크가 수행될 때 수행되는 동작을 도시한 플로우챠트;
도 30은 본 발명에 따른 서명 파일을 사용하여 위변조 체크가 수행될 때 수행되는 동작을 도시한 플로우챠트;
도 31은 본 발명에 따른 리프 증명서와 중간 증명서 사이의 체인 관계가 체크될 때 수행되는 동작을 도시한 플로우챠트;
도 32는 본 발명에 따른 중간 증명서와 루트 증명서 사이의 체인 관계가 체크될 때 수행되는 동작을 도시한 플로우챠트;
도 33은 본 발명에 따른 루트 증명서의 서명이 체크될 때 수행되는 동작을 도시한 플로우챠트;
도 34는 본 발명에 따른 저장되는 파일을 특정하는데 사용되는 파일의 실시예를 도시한 도면;
도 35는 본 발명에 따른 파일(2130)의 상세를 기술하는 파일 리스트 정보의 실시예를 도시하는 도면;
도 36은 본 발명에 따른 AM의 구성 요소를 도시한 도면;
도 37은 본 발명에 따른 이전에 2차 저장유닛(510)에 저장된 파일(2130)의 상세를 기술하는 파일 리스트 정보의 실시예를 도시한 도면;
도 38은 본 발명에 따른 차이를 추출함으로써 생성되는 파일 리스트 정보의 실시예를 도시한 도면;
도 39는 본 발명에 따른 파일 비교 유닛(3601)에 의해 수행되는 처리를 도시한 플로우챠트;
도 40은 본 발명에 따른 파일 시스템 관리 유닛(3602)에 의해 수행되는 처리를 도시한 플로우챠트;
도 41은 본 발명에 따른 파일 시스템 저장유닛(3603)에 의해 수행되는 처리를 도시한 플로우챠트;
도 42는 본 발명에 따른 AM 및 시큐리티 매니저에 의해 수행되는 처리를 도시한 플로우챠트;
도 43은 본 발명에 따른 XAIT의 내용을 도시한 개략도;
도 44는 본 발명에 따른 2차 저장유닛(510)에 저장된 정보의 실시예를 도시한 도면;
도 45A, 45B, 및 45C는 각각 본 발명에 따른 파일 또는 디렉토리의 해시값을 포함하는 파일의 실시예를 도시한 도면;
도 46은 본 발명에 따른 파일 시스템에 대해 위변조 체크가 수행될 때 수행되는 동작을 도시한 플로우챠트;
도 47은 본 발명에 따른 저장되는 파일을 특정하는데 사용되는 파일의 실시예를 도시한 도면;
도 48은 본 발명에 따른 파일 시스템의 인증이 수행될 때 수행되는 동작을 도시한 플로우챠트;
도 49는 본 발명에 따른 프로그램 기동 전치 통지가 수신될 때 X.509 증명서의 유효성을 체크시에 수행되는 동작을 도시한 플로우챠트;
도 50은 본 발명에 따른 다운로드 모듈로부터 수신되는 코드 파일의 간략화된 구성을 도시한 도면;
도 51A, 51B, 및 51C는 각각 본 발명에 따른 교체되는 터미널 장치가 소유하는 증명서를 도시한 도면;
도 52는 본 발명에 따른 증명서 교체가 수행될 때 수행되는 동작을 도시한 플로우챠트;
도 53은 본 발명에 따른 프로그램 기동 전치 통지가 수신될 때 루트 증명서를 비교시 수행되는 동작을 도시한 플로우챠트;
도 54는 본 발명에 따른 CRL의 구성을 도시한 도면;
도 55는 본 발명에 따른 CRL의 실효된 증명서 리스트를 도시한 개략도;
도 56은 본 발명에 따른 CRL을 포함하는 파일 시스템의 실시예를 도시한 도면;
도 57은 본 발명에 따른 해시값과 서명값에 의거하여 CRL의 유효성이 체크될 때 수행되는 동작을 도시하는 플로우챠트;
도 58은 본 발명에 따른 증명서 사이의 체인 관계와 루트 증명서 사이의 비교에 의거하여 CRL의 유효성이 체크될 때 수행되는 동작을 도시한 플로우챠트;
도 59는 본 발명에 따른 파일 또는 디렉토리의 해시값을 포함하는 파일의 실시예를 도시한 도면;
도 60은 본 발명에 따른 프로그램 저장시 CRL이 존재하는 경우에 인증을 수행하는 동작을 도시한 플로우챠트;
도 61은 프로그램 기동시 CRL이 존재하는 경우에 인증을 수행하는 동작을 도시한 플로우챠트;
도 62는 본 발명에 따른 실효된 증명서의 데이터베이스를 도시한 개략도;
도 63은 본 발명에 따른 저장되는 파일을 특정하는데 사용되는 파일을 포함하는 파일 시스템의 예를 도시한 도면; 및
도 64는 본 발명에 따른 저장되는 파일을 특정하는데 사용되는 파일의 예를 도시한 도면이다.
이하, 본 발명의 실시형태를 도면을 참조하여 설명한다.
(제 1 실시형태)
본 발명에 따른 케이블 텔레비전 시스템의 바람직한 실시예를 도면을 참조하여 설명한다. 도 1은 케이블 시스템을 구성하는 장치 사이의 관계를 도시한 블록도로서, 헤드 엔드(101), 및 3개의 단말장치: 단말장치A(111), 단말장치B(112), 및 단말장치C(113)로 구성된다. 본 실시형태에서는, 3개의 단말장치가 하나의 헤드 엔드에 접속되지만, 임의의 수의 단말장치가 헤드 엔드에 접속되어도 본 발명을 실행할 수 있다.
헤드 엔드(101)는, 복수의 단말장치로, 비디오, 오디오 및 데이터와 같은 방송 신호를 송신하고, 단말장치로부터 송신된 데이터를 수신한다. 이를 실현하기 위해, 헤드 엔드(101), 및 단말장치A(111), 단말장치B(112), 및 단말장치C(113) 사이의 데이터 송신을 위해 주파수대가 분할되어 사용된다.
도 2는 분할된 주파수대의 실시예를 도시한 테이블이다. 대략 2가지 타입의 주파수대: Out of Band(OOB로서 약칭됨)와 In-Band가 존재한다. OOB에는 5∼130MHz의 주파수대가 할당되어 헤드 엔드(101), 및 단말장치A(111), 단말장치B(112), 및 단말장치C(113) 사이의 데이터 교환을 위해 주로 사용된다. In-Band에는 130MHz∼864MHz의 주파수대가 할당되어 비디오와 오디오를 포함하는 방송채널에 주로 사용된다. 변조기술로서 OOB에는 QPSK가 채용되는 반면에 In-Band에는 QAM64가 채용된다. 변조기술은 본 발명에 관련되지 않고 공개된 기술이므로, 여기서는 변조기술의 상세한 설명을 생략한다. 도 3은 OOB 주파수대가 어떻게 사용되는지에 대한 좀더 구체적인 실시예를 도시한다. 70MHz∼74MHz의 주파수대는 헤드 엔드(101)로부터 데이터를 송신하는데 사용된다. 이 경우에, 단말장치A(111), 단말장치B(112), 및 단 말장치C(113) 모두가 헤드 엔드(101)로부터 동일한 데이터를 수신한다. 한편, 단말장치A(111)에서 헤드 엔드(101)로 데이터를 송신하는데 10.0MHz∼10.1MHz의 주파수대가 사용된다. 단말장치B(112)에서 헤드 엔드(101)로 데이터를 송신하는데 10.1MHz∼10.2MHz의 주파수대가 사용된다. 단말장치C(113)에서 헤드 엔드(101)로 데이터를 송신하는데 10.2MHz∼10.3MHz의 주파수대가 사용된다. 따라서, 단말장치A(111), 단말장치B(112), 및 단말장치C(113)로부터 헤드 엔드(101)로 각 단말장치 고유의 데이터를 송신하는 것이 가능해진다.
도 4는 In-Band 주파수대의 사용 예를 도시한다. 150∼156MHz와 156∼162MHz의 주파수대는 각각 텔레비전 채널 1과 텔레비전 채널 2에 할당되고, 그 후의 주파수는 6MHz 간격으로 텔레비전 채널에 할당된다. 310MHz 및 그 후의 주파수는 1MHz 간격으로 라디오 채널에 할당된다. 상기 채널 각각은 아날로그 방송 또는 디지털 방송 어느 쪽으로 사용되어도 좋다. 디지털 방송의 경우에, MPEG2 사양서에 따른 트랜스포트 패킷 포맷으로 데이터가 전송되고, 이 경우에 오디오 및 비디오 데이터에 부가하여, 각종 데이터 방송 시스템용의 데이터가 송신될 수 있다.
헤더 엔드(101)는 각 주파수대역에 적합한 방송신호를 송신하기 위해서 QPSK 변조유닛, QAM 변조유닛 등이 구비된다. 또한, 헤드 엔드(101)는 단말장치로부터 데이터를 수신하기 위해 QPSK 복조유닛이 구비된다. 또한, 상기 변조유닛과 복조유닛에 관계된 다양한 장치가 더 구비된다고 생각된다. 그러나, 본 발명은 주로 단말장치에 관계되므로, 여기서는 이들의 상세한 설명을 생략한다.
단말장치A(111), 단말장치B(112), 및 단말장치C(113)가 헤드 엔드(101)에서 송신된 방송신호를 수신하여 재생한다. 또한, 단말장치A(111), 단말장치B(112), 및 단말장치C(113)가 각 단말장치의 고유 데이터를 헤드 엔드(101)로 송신한다. 본 실시형태에서는, 이들 3개의 단말장치가 동일한 구성을 갖는다.
도 5는 각 단말장치의 하드웨어 구성을 도시하는 블록도이다. 500는 단말장치로서, QAM 복조유닛(501), QPSK 복조유닛(502), QPSK 변조유닛(503), TS 디코더(505), 오디오 디코더(506), 스피커(507), 비디오 디코더(508), 디스플레이(509), 2차 저장유닛(510), 1차 저장유닛(511), ROM(512), 입력유닛(513) 및 CPU(514)로 구성된다. 또한, POD(504)는 단말장치(500)에 착탈 가능하다.
도 6은 박형 텔레비전을 도시한 것으로, 단말장치(500)의 외관 예이다. 단말장치는 다양한 구성으로 실현될 수 있지만, 본 실시형태에서는, OpenCable(R) 및 OCAP에 의거하여 구성된 단말장치가 실시예로서 설명된다.
601은 박형 텔레비전의 스틸 케이스로서, 그 안에 POD(504)를 제외한 단말장치(500)의 모든 구성이 포함된다.
602는 디스플레이로서, 도 5의 디스플레이(509)에 대응한다.
603은 도 5의 입력유닛(513)에 대응하며 복수의 버튼으로 구성된 프론트 패널 유닛이다.
604는 헤드 엔드(101)와 신호를 송수신하기 위해 케이블선이 접속되는 신호입력단자이다. 상기 신호입력단자는 도 5에 도시된 QAM 복조유닛(501), QPSK 복조유닛(502), 및 QPSK 변조유닛(503)에 접속된다.
605는 도 5의 POD(504)에 대응하는 POD 카드이다. POD(504)는, 도 6의 POD 카드(605)의 경우와 같이, 단말장치(500)와 별개로 구현되어 단말장치(500)에 착탈될 수 있다. POD(504)의 상세한 설명은 후술된다.
606은 POD 카드(605)가 삽입되는 삽입 슬롯이다.
도 5를 참조하여, QAM 복조유닛(501)은, CPU(514)에 의해 특정된 주파수를 포함하는 튜닝정보에 따라, 헤드 엔드(101)에서 QAM 변조되어 송신된 신호를 복조하여, POD(504)로 전달한다.
QPSK 복조유닛(502)은 CPU(514)에 의해 특정된 주파수를 포함하는 튜닝정보에 따라, 헤드 엔드(101)에서 QPSK 변조되어 송신된 신호를 복조하여, POD(504)로 전달한다.
QPSK 변조유닛(503)은, CPU(514)에 의해 특정된 주파수를 포함하는 복조 정보에 따라, POD(504)로부터 전달된 신호를 QPSK 복조하여, 헤드 엔드(101)로 송신한다.
도 6에 도시된 바와 같이, POD(504)는 단말장치(500)의 본체로부터 분리가능하다. 단말(500)의 본체와 POD(504) 사이의 접속 인터페이스는, OpenCable(R) CableCARD(R) Interface Specification (OC-SP-CC-IF-I15-031121) 및 이러한 사양서에 의해 참조되는 사양서에 정의되어 있다. 이러한 사양서의 CableCARD는 POD를 지시한다. 여기서는, 상세한 설명을 생략하고, 본 발명에 관련된 구성요소에 대해서만 설명된다.
도 7은 POD(504)의 내부 구성을 도시한 블록도이다. POD(504)는 제 1 디스크램블러 유닛(701), 제 2 디스크램블러 유닛(702), 스크램블러 유닛(703), 1차 저장 유닛(704), 2차 저장유닛(705), 및 CPU(706)로 구성된다.
제 1 디스크램블러 유닛(701)은 CPU(706)로부터의 지시 하에 단말장치(500)의 QAM 복조유닛(501)으로부터 스트램블된 신호를 수신하여, 디스크램블한다. 그 후, 제 1 디스크램블러 유닛(701)이 단말장치(500)의 TS 디코더(505)로 디스크램블된 신호를 송신한다. 키와 같은 디스크램블러에 필요한 정보는 필요에 따라 CPU(706)에 의해 제공된다. 좀더 구체적으로는, 헤드 엔드(101)는 몇 개의 유료 채널을 방송하고, 사용자가 이들 유료 채널을 보기 위한 권리를 구입했을 때, 제 1 디스크램블러 유닛(701)은 CPU(706)로부터 키와 같은 필요한 정보를 수신하여 디스크램블러를 수행한다. 따라서, 사용자가 이들 유료 채널을 볼 수 있다. 키와 같은 필요한 정보가 제공되지 않으면, 제 1 디스크램블러 유닛(701)은 수신된 신호를 디스크램블링하지 않고 TS 디코더(505)에 직접 전달한다.
제 2 디스크램블러 유닛(702)은 CPU(706)으로부터의 지시하에 단말장치(500)의 QPSK 복조유닛(502)으로부터 스크램블된 신호를 수신하여 디스크램블한다. 그 후, 제 2 디스크램블러 유닛(702)이 디스크램블된 데이터를 CPU(706)로 전달한다.
스크램블러 유닛(703)은, CPU(706)로부터의 지시하에, CPU(706)로부터 수신된 데이터를 스크램블하여, 단말장치(500)의 QPSK 변조유닛(503)으로 전송한다.
1차 저장유닛(704)은, 그 구체적인 구성요소가 RAM과 같은 1차 메모리로서, CPU(706)가 처리를 수행할 때 임시로 데이터를 저장하기 위한 것이다.
2차 저장유닛(705)은, 그 구체적인 구성요소가 플래시 ROM과 같은 2차 저장 메모리로서, CPU(706)에 의해 실행되는 프로그램을 저장할 뿐만 아니라 전원이 턴 오프되었을 때도 삭제되지 않아야 하는 데이터를 저장하기 위한 것이다.
CPU(706)는 2차 저장유닛(705)에 저장된 프로그램을 실행한다. 상기 프로그램은 복수의 서브 프로그램으로 구성된다. 도 8은 2차 저장유닛(705)에 저장된 프로그램의 실시예이다. 도 8에서, 프로그램(800)은 메인 프로그램(801), 초기화 서브 프로그램(802), 네트워크 서브 프로그램(803), 재생 서브 프로그램(804), 및 PPV 서브 프로그램(805)으로 구성된다.
여기서, Pay Per View의 약칭인, PPV는 사용자가 영화와 같은 특정 프로그램를 유료로 볼수 있게 하는 서비스를 말한다. 사용자가 자신의 개인 식별 넘버를 입력하면, 사용자가 프로그램을 보기 위한 권리를 구매했다는 사실이 헤드 엔드(101)로 통지되고, 프로그램이 디스크램블된다. 따라서, 사용자가 이러한 프로그램을 볼 수 있다. 이와 같은 프로그램 시청은 사용자가 후일 구매 비용을 지급하여야 한다.
전원이 턴온되었을 때 가장 먼저 CPU(706)에 의해 기동되는 서브 프로그램인, 메인 프로그램(801)이 다른 서브 프로그램을 제어한다.
전원이 턴온되었을 때 메인 프로그램(801)에 의해 기동되는, 초기화 서브 프로그램(802)은 단말장치(50)와 정보교환 등을 수행하여 초기화 처리를 수행한다. 초기화 처리는 OpenCable(R) CableCARD(R) Interface Specification (OC-SP-CC-IF-I15-031121) 및 이 사향서에 의해 참조되는 사양서에 상세히 정의된다. 또한, 초기화 서브 프로그램(802)은 이들 사양서에 정의되지 않은 초기화 처리도 수행한다. 여기서는, 이러한 초기화 처리의 일부가 소개된다. 전원이 턴온되면, 초기화 서브 프로그램(802)은 단말장치(50)의 CPU(514)를 통해 2차 저장유닛(705)에 저장된 제 1 주파수를 QPSK 복조유닛(502)으로 통지한다. QPSK 복조유닛(502)은 제공된 제 1 주파수를 사용하여 튜닝을 수행하여, 그 결과 신호를 제 2 스크램블러 유닛(702)으로 송신한다. 또한, 초기화 서브 프로그램(802)은 2차 저장유닛(705)에 저장된 제 1 키와 같은 디스크램블링 정보를 제 2 디스크램블러 유닛(702)에 제공한다. 결과적으로, 제 2 디스크램블러 유닛(702)은 디스크램블링을 수행하여 초기화 서브 프로그램(802)을 실행하는 CPU(706)로 전달한다. 따라서, 초기화 서브 프로그램(802)이 상기 정보를 수신할 수 있다. 본 실시형태에서는, 초기화 서브 프로그램(802)이 네트워크 서브 프로그램(803)을 통해 정보를 수신한다. 이에 대한 상세한 설명은 후술한다.
또한, 초기화 서브 프로그램(802)은 단말장치(500)의 CPU(514)를 통해 2차 저장유닛(705)에 저장된 제 2 주파수를 QPSK 변조유닛(503)에 통지한다. 초기화 서브 프로그램(802)은 2차 저장유닛(705)에 저장된 스크램블링 정보를 스크램블러 유닛(703)에 제공한다. 초기화 서브 프로그램(802)이, 네트워크 서브 프로그램(803)을 통해, 송신될 필요가 있는 정보를 스크램블러 유닛(703)에 제공하면, 스크램블러 유닛(703)은 제공된 스크램블링 정보를 사용하여 데이터를 스크램블링하여, 스크램블링된 데이터를 QPSK 변조유닛(503)에 제공한다. QPSK 변조유닛(503)은 수신된 스크램블된 정보를 변조하여, 변조된 정보를 헤드 엔드(101)로 전송한다.
결과적으로, 초기화 서브 프로그램(802)이 단말장치(500), 제 2 디스크램블러 유닛(802), 스크램블러 유닛(703), 및 네트워크 서브 프로그램(803)을 통해, 헤드 엔드(101)와 양방향 통신을 수행하는 것이 가능해진다.
메인 프로그램(801) 및 초기화 서브 프로그램(802)과 같은 복수의 서브 프로그램에 의해 사용되는, 네트워크 서브 프로그램(803)은, 헤드 엔드(101)와 양방향 통신을 수행하기 위한 서브 프로그램이다. 좀더 구체적으로는, 네트워크 서브 프로그램(803)은, 네트워크 서브 프로그램(803)을 사용하는 다른 서브 프로그램이 TCP/IP에 따라 헤드 엔드(101)와 양방향 통신을 수행하는 것처럼, 행동한다. TCP/IP는 복수의 단말들 사이에서 정보를 교환할 때 사용되는 프로토콜을 특정하는 공지의 기술이므로, 여기서는 그 상세한 설명을 생략한다. 네트워크 서브 프로그램(803)은, 파워온시에 초기화 서브 프로그램(802)에 의해 기동될 때, 단말장치(500)를 통해, 미리 2차 저장유닛(205)에 저장되어 있는, POD(504)를 식별하기 위한 식별자인 MAC(Media Access Control의 약칭) 어드레스를 헤드 엔드(101)에 통지하여, IP 어드레스를 취득하도록 요구한다. 헤드 엔드(101)는 단말장치(500)를 통해 IP 어드레스를 POD(504)에 통지하고, 네트워크 서브 프로그램(803)은 이러한 IP 어드레스를 1차 저장유닛(704)에 저장한다. 이후, 헤드 엔드(101)와 POD(504)는 이러한 IP 어드레스를 POD(504)의 식별자로서 사용하여 서로 통신한다.
재생 서브 프로그램(804)은 2차 저장유닛(705)에 저장된 제 2 키와 같은 디스크램블링 정보 및 단말장치(500)에 의해 제공된 제 3 키와 같은 디스크램블링 정보를 제 1 디스크램블러 유닛(701)에 제공하여, 디스크램블링이 수행되도록 한다. 또한, 재생 서브 프로그램(804)은, 네트워크 서브 프로그램(803)을 통해, 제 1 디스크램블러 유닛(701)에 입력된 신호가 PPV 채널임을 나타내는 정보를 수신한다. 신호가 PPV 채널이라는 통지에 의해, 재생 서브 프로그램(804)이 PPV 서브 프로그 램(805)을 기동시킨다.
PPV 서브 프로그램(805)은, 기동되면, 단말장치(500)에, 사용자의 프로그램 구매를 촉구하는 메시지를 디스플레이하고, 사용자로부터의 입력을 접수한다. 좀더 구체적으로, 스크린에 디스플레이되기 희망하는 정보가 단말장치(500)의 CPU(514)로 전송되고, 단말장치(500)의 CPU(514)에서 구동하는 프로그램이 단말장치(500)의 디스플레이(509)에 메시지를 보여준다. 그 후, 사용자가 단말장치(500)의 입력유닛(513)을 통해 개인 식별 넘버를 입력하면, 단말장치(500)의 CPU(514)가 접수하여, POD(504)의 CPU(706)에서 구동하는 PPV 서브 프로그램(805)으로 전송한다. PPV 서브 프로그램(805)은, 헤드 엔드(101)로, 네트워크 서브 프로그램(803)을 통해 접수한 개인 식별 넘버를 전송한다. 이러한 개인 식별 넘버가 유효하면, 헤드 엔드(101)는, 네트워크 서브 프로그램(803)을 통해, 제 4 키와 같은 디스크램블링을 위해 필요한 디스크램블링 정보를 PPV 서브 프로그램(805)에 통지한다. PPV 서브 프로그램(805)이 제 4 키와 같은 상기 접수된 디스크램블링 정보를 제 1 디스크램블러 유닛(701)에 제공하고, 그 후 제 1 디스크램블러 유닛(701)이 입력신호를 디스크램블링한다.
도 5를 참조하면, TS 디코더(505)는 POD(504)로부터 접수된 신호에 대한 필터링을 수행하고, 필요한 데이터를 오디오 디코더(506), 비디오 디코더(508), 및 CPU(514)로 전달한다. 여기서, POD(504)로부터 전송된 신호는 MPEG2 트랜스포트 스트림이다. MPEG2 트랜스포트 스트림에 대한 상세한 설명은 MPEG 사양서 ISO/IEC138181-1에 주어져 있고, 따라서 본 실시형태에서는 상세히 설명하지 않는 다. MPEG2 트랜스포트 스트림은 복수의 고정 길이 패킷으로 구성되고, 패킷 ID가 각 패킷에 할당된다. 도 9는 패킷의 구성도이다. 900은 패킷으로서, 고정 길이 188 바이트를 포함한다. 최상위 4 바이트는 패킷을 식별하는 정보를 저장하는 헤더(901)이고, 그 밖의 184 바이트는 운반하고자 하는 정보를 저장하는 페이로드(902)이다. 903은 헤더(901)의 내역을 보여준다. 패킷 ID는 제 1 내지 제 12 비트 ∼ 제 24 비트의 13비트에 포함된다. 도 10은 송신되는 복수의 패킷 열을 도시한 개략도이다. 패킷(1001)은 그 헤더에 패킷 ID "1"를 포함하고, 그 페이로드에 비디오 A의 1번째 정보를 포함한다. 패킷(1002)은 그 헤더에 패킷 ID "2"를 포함하고, 그 페이로드에 오디오 A의 1번째 정보를 포함한다. 패킷(1003)은 그 헤더에 패킷 ID "3"을 포함하고 그 페이로드에 오디오 B의 1번째 정보를 포함한다.
패킷(1004)은 그 헤더에 패킷 ID "1"을 포함하고 그 페이로드에 비디오 A의 2번째 정보를 포함하고, 이것은 패킷(1001)의 후속 정보이다. 마찬가지로, 패킷(1005, 1026, 1027)은 다른 패킷의 후속 데이터를 운반한다. 상기의 방식으로, 동일한 패킷 ID를 가지는, 패킷의 페이로드의 내용을 연결함으로써, 비디오와 오디오를 연속하여 재생할 수 있다.
도 10을 참조하면, CPU(514)가, TS 디코더(505)에, 패킷 ID "1" 및 출력처인 "비디오 디코더(508)"를 지시하면, TS 디코더(505)는 POD(504)로부터 수신된 MPEG2 트랜스포트 스트림으로부터 패킷 ID "1"의 패킷을 추출하여, 비디오 디코더(508)로 전달한다. 도 10에서는, 따라서, 비디오 데이터만 비디오 디코더(508)로 전달된다. 동시에, CPU(514)가, TS 디코더(505)로, 패킷 ID "2" 및 "오디오 디코더 (506)"를 지시하면, TS 디코더(505)는 POD(504)로부터 수신된 MPEG2 트랜스포트 스트림으로부터 패킷 ID "2"의 패킷을 추출하여, 오디오 디코더(506)로 전달한다. 도 10에서는, 오디오 데이터만 비디오 디코더(508)로 전달된다.
패킷 ID에 따라 필요한 패킷만 추출하는 처리는 TS 디코더(505)에 의해 수행되는 필터링에 대응한다. TS 디코더(505)는 CPU(514)로부터의 지시로 하나 이상의 필터링 처리를 동시에 수행할 수 있다.
도 5를 참조하면, 오디오 디코더(506)는 TS 디코더(505)에 의해 제공된 MPEG2 트랜스포트 스트림의 패킷에 내장된 오디오 데이터를 연결하고, 연결된 데이터를 디지털-아날로그 변환하여, 스피커(507)로 출력한다.
스피커(507)는 오디오 디코더(506)에 의해 제공된 신호를 오디오으로서 출력한다.
비디오 디코더(508)는 TS 디코더(505)에 의해 제공된 MPEG2 트랜스포트 스트림의 패킷에 내장된 비디오 데이터를 연결하고, 연결된 데이터를 디지털-아날로그 변환하여, 디스플레이(509)로 출력한다.
디스플레이(509)는, 그 구체적인 구성요소가 CRT 또는 액정 등으로서, 비디오 디코더(508)에 의해 제공된 비디오 신호를 출력하여 CPU(514)에 의해 특정된 메시지 등을 디스플레이한다.
2차 저장유닛(510)은, 구체적인 구성요소가 플래시 메모리, 하드디스크 등으로서, CPU(514)에 의해 특정된 데이터 및 프로그램을 저장 및 삭제한다. 저장된 데이터 및 프로그램은 CPU(514)에 의해 참조된다. 저장된 데이터 및 프로그램은 단말 장치(500)가 파워오프되더라도 저장상태를 유지한다.
1차 저장유닛(511)은, 그 구체적인 구성요소가 RAM 등으로서, CPU(514)에 의해 특정된 데이터 및 프로그램을 임시로 저장하고 삭제한다. 저장된 데이터 및 프로그램은 CPU(514)에 의해 참조된다. 저장된 데이터 및 프로그램은 단말장치(500)가 파워오프되면 삭제된다.
ROM(512)은 읽기만 가능한 메모리 디바이스로서, 그 구체적인 구성요소는 ROM, CD-ROM, 및 DVD 등이다. ROM(512)은 CPU(514)에 의해 실행되는 프로그램을 저장한다.
입력유닛(513)은, 그 구체적인 구성요소가 프론트 패널 또는 리모트 콘트롤러로서, 사용자로부터 입력을 접수한다. 도 11은 프론트 패널 형태로 구성된 경우의 입력유닛(513)의 실시예를 도시한다. 1100은 프론트 패널로서, 도 6에 도시된 프론트 패널 유닛(603)에 대응한다. 이러한 프론트 패널(1100)은 7개의 버튼: 업커서 버튼(1101), 다운커서 버튼(1102), 레프트커서 버튼(1103), 라이트커서 버튼(1104), OK 버튼(1105), 취소버튼(1106), 및 EPG 버튼(1107)으로 구성된다. 사용자가 버튼을 누르면, 이렇게 눌러진 버튼의 식별자가 CPU(514)에 통지된다.
CPU(514)는 ROM(512)에 저장된 프로그램을 실행한다. 이러한 실행되는 프로그램의 지시에 따라, CPU(514)는 QAM 복조유닛(501), QPSK 복조유닛(502), QPSK 변조유닛(503), POD(504), TS 디코더(505), 디스플레이(509), 2차 저장유닛(510), 1차 저장유닛(511), 및 ROM(512)을 제어한다.
도 12는 ROM(512)에 저장되어 CPU(514)에 의해 실행되는 프로그램의 구성예 를 도시한 도면이다.
프로그램(1200)은 복수의 서브 프로그램으로 구성된다. 좀더 구체적으로는, 프로그램(1200)은 OS(1201), EPG(1202), Java(R) VM(1203)(이하 VM(1203)이라 함), 서비스 매니저(1204), 및 Java(R) 라이브러리(1205)(이하 라이브러리(1205)라 함)로 구성된다.
OS(1201)은 단말장치(500)가 파워온되었을 때 CPU(514)에 의해 기동되는 서브 프로그램이다. OS(1201)는 운용시스템의 약칭으로서, 그 실시예는 Linux 등이 있다. OS(1201)는 다른 서브프로그램과 평행하게 서브 프로그램을 실행하기 위한 커널(1201A) 및 라이브러리(1201b)로 구성된 공지 기술의 총칭이고, 따라서 상세한 설명을 생략한다. 본 실시형태에서는, OS(1201)의 커널(1201a)이 EPG(1202)와 VM(1203)을 서브 프로그램으로서 실행한다. 한편, 라이브러리(1201b)는 이들 서브 프로그램에 단말장치(500)의 구성요소를 제어하는데 필요한 복수의 기능을 제공한다.
여기서, 이러한 기능들의 일예로서 튜닝이 소개된다. 튜닝 기능을 사용하여, 주파수를 포함하는 튜닝 정보가 다른 서브 프로그램으로부터 수신된 후 QAM 복조유닛(501)으로 전달된다. 따라서, QAM 복조유닛(501)이 상기 제공된 튜닝 정보에 의거하여 복조를 수행하여 복조된 데이터를 POD(504)로 전달할 수 있다. 결과적으로, 다른 서브 프로그램은 라이브러리(1201b)를 통해 QAM 복조유닛을 제어할 수 있다.
EPG(1202)는 사용자에게 프로그램 리스트를 디스플레이함과 더불어 사용자로부터의 입력을 접수하기 위한 프로그램 디스플레이 유닛(1202a), 및 채널을 선택하 기 위한 재생유닛(1102b)으로 구성된다. 여기서, EPG는 Electric Program Guide의 약칭이다. 단말장치(500)가 파워온되면 EPG(1202)가 기동한다. 기동된 EPG(1202)에서는, 프로그램 디스플레이 유닛(1202a)이 단말장치(500)의 입력유닛(513)을 통해 사용자로부터의 입력을 기다린다. 여기서, 입력유닛(513)이 도 11에 도시된 프론트 패널의 형태를 취하는 경우에, 사용자가 입력유닛(513)의 EPG 버튼(1107)을 누르면, CPU(514)가 이러한 EPG 버튼의 식별자를 통지받는다. EPG(1202)의 프로그램 디스플레이 유닛(1202a)은, CPU(514)에서 구동하는 서브 프로그램으로서, 이 식별자를 접수하여, 디스플레이(509)에 프로그램 정보를 보여준다. 도 13A 및 도 13B는 디스플레이(509)에 디스플레이된 프로그램 테이블의 실시예를 도시한다. 도 13A 참조바람. 프로그램 정보는 그리드 패턴으로 디스플레이(509)에 디스플레이된다. 컬럼(1301)은 시간 정보를 기술한다. 컬럼(1302)는 채널명 "채널 1" 및 컬럼(1301)에서 기술된 각 시간에 대응하는 기간 동안 방송될 프로그램을 기술한다. "채널 1"에서는 프로그램 "뉴스 9"가 9:00 내지 10:30에 방송되고, "영화 AAA"가 10:30 내지 12:00에 "채널 1"에서 방송되는 것을 보여준다. 컬럼(1303)은 컬럼(1302)의 경우처럼, 채널명 "채널 2"와 컬럼(1301)에 기술된 각 시간에 대응하는 기간 동안 방송될 프로그램을 기술한다. 프로그램 "영화 BBB"는 9:00 내지 11:00에 방송되고, "뉴스 11"는 11:00 내지 12:00에 방송된다. 1330은 커서이다. 커서(1330)는 프론트 패널(1100)의 레프트커서(1103) 또는 라이트커서(1104)의 누름에 의해 이동한다. 도 13A에 도시된 상태에서 라이트커서(1104)가 눌러지면, 커서(1330)는 도 13B에 도시된 바와 같이 우측을 향하여 이동한다. 한편, 도 13B에 도시된 상태에서 레프트커 서(1103)가 눌러지면, 커서(1330)는 도 13A에 도시된 바와 같이 좌측을 향해 이동한다.
도 13A에 도시된 상태에서 프론트 패널(1100)의 OK 버튼(1105)이 눌러지면, 프로그램 디스플레이 유닛(1202a)은 "채널 1"의 식별자를 재생 유닛(1102b)에 통지한다. 한편, 도 13B에 도시된 상태에서 프론트 패널(1100)의 OK 버튼(1105)이 눌러지면, 프로그램 디스플레이 유닛(1202a)은 "채널 2"의 식별자를 재생유닛(1102b)에 통지한다.
또한, 프로그램 디스플레이 유닛(1202a)은 디스플레이될 프로그램 정보를 POD(504)를 통해 헤드 엔드(101)로부터 주기적으로 1차 저장유닛(511)에 저장한다. 일반적으로, 헤드 엔드로부터 프로그램 정보를 취득하는데 시간이 걸린다. 그러나, 입력유닛(513)의 EPG 버튼(1107)을 누름에 의해 1차 저장장치(511)에 미리 저장된 프로그램 정보를 디스플레이함으로써 프로그램 테이블을 빠르게 디스플레이하는 것이 가능해진다.
재생유닛(1102b)은 수신된 채널 식별자를 사용하여 채널을 재생한다. 채널 식별자와 채널 사이의 관계는 채널정보로서 2차 저장유닛(510)에 의해 미리 저장된다. 도 14는 2차 저장유닛(510)에 저장된 채널 정보의 실시예를 도시한다. 채널 정보는 표 형태로 저장된다. 컬럼(1401)은 채널의 식별자를 기술한다. 컬럼(1402)은 채널명을 기술한다. 컬럼(1403)은 튜닝 정보를 기술한다. 여기서, 튜닝 정보는 주파수, 전송율, 및 부호화율과 같은 QAM 복조유닛(501)에 제공될 값으로 표현된다. 컬럼(1404)은 프로그램 넘버를 기술한다. 프로그램 넘버는 MPEG2 표준에 의해 규정 된 PMT들을 식별하는데 사용되는 넘버이다. PMT에 대한 설명은 후술한다. 각 라인(1411∼1414)은 각 채널의 식별자, 채널명, 튜닝정보의 세트를 가리킨다. 라인(1411)은 식별자로서 "1", 채널명으로서 "채널 1", 튜닝정보로서 "312MHz"의 주파수, 및 프로그램 넘버로서 "101"을 포함하는 세트를 기술한다. 재생유닛(1102b)는, 채널을 재생하기 위해, 수신된 채널의 식별자를 직접 서비스 매니저로 전달한다.
또한, 재생이 이루어지는 동안, 사용자가 프론트 패널(1100)의 업커서(1101) 및 다운커서(1102)를 누르면, 재생유닛(1102b)은 CPU(514)를 통해 입력유닛(513)으로부터 사용자의 누름 통지를 수신하여, 재생되는 채널을 다른 채널로 전환한다. 우선, 재생유닛(1102b)은, 1차 저장유닛(511)에, 현재 재생되는 채널의 식별자를 저장한다. 도 15A, 15B 및 15C는 1차 저장유닛(511)에 저장된 채널의 식별자의 예를 도시한다. 도 15A는 식별자 "3"이 저장되는 것을 도시하며, 도 14를 참조로, 채널명 "TV 3"의 채널이 재생되고 있음을 보여준다. 도 15A에 도시된 상태에서, 사용자가 업커서(1101)를 누르면, 재생유닛(1102b)은 도 14에 도시된 채널정보를 참조하여, 테이블내의 이전 채널인, "채널 2"의 채널명을 가진 채널을 새롭게 재생하기 위해, "채널 2"의 채널명을 가진 채널의 식별자 "2"를 서비스 매니저로 전달한다. 동시에, 재생유닛(1102b)이 1차 저장유닛(511)에 저장된 채널 식별자 "2"로 식별자를 재기록한다. 도 15B는 이러한 재기록된 채널 식별자를 보여준다. 한편, 도 15A에 도시된 상태에서, 사용자가 다운커서(1102)를 누르면, 재생유닛(1102b)은 도 14에 도시된 채널 정보를 참조하여, 테이블의 다음 채널인, "TV Japan"의 채널명을 가진 채널을 새롭게 재생하기 위해, "TV Japan"의 채널명을 가진 채널의 식별자 "4"를 서비스 매니저로 전달한다. 동시에, 재생유닛(1102b)은 식별자를 1차 저장유닛(511)에 저장된 채널 식별자 "4"로 재기록한다. 도 15C는 이러한 재기록된 채널 식별자를 도시한다.
VM(1203)은 Java(R) 언어로 기록된 프로그램을 순차적으로 해석하여 실행하는 Java(R) 버추얼 머쉰이다. Java(R) 언어로 기록된 프로그램은 하드웨어에 의존하지 않는 바이트 코드라고 알려진 중간 코드로 컴파일된다. Java(R) 버추얼 머쉰은 이러한 바이트 코드를 실행하는 인터프리터이다. 일부의 Java(R) 버추얼 머쉰은 바이트 코드를 CPU(514)에 의해 해석될 수 있는 실행 가능한 형태로 번역하여 CPU(514)로 전달하고, 그것을 실행한다. VM(1203)은 커널(1201a)에 의해 실행될 Java(R) 프로그램을 특정하여 기동한다. 본 실시형태에서, 커널(1201a)은 실행될 Java(R) 프로그램으로서 서비스 매니저(1204)를 지정한다. Java(R) 언어에 대한 상세는 "Java(R) Language Specification" (ISBN 0-201-63451-1)를 포함하는 많은 책에 주어져 있다. 따라서, 여기서는 이에 대한 상세한 설명을 생략한다. 또한, Java(R) VM 자체의 동작에 대한 상세는 "Java(R) Virtual Machine Specification" (ISBN 0-201-63451-X)를 포함하는 많은 책에 주어져 있다. 따라서, 여기서는 이에 대한 상세한 설명을 생략한다.
서비스 매니저(1204)는, Java(R) 언어로 써진 Java(R) 프로그램으로서, VM(1203)에 의해 순차적으로 실행된다. 서비스 매니저(1204)가 JNI(Java Native Interface)를 통해 Java(R) 언어로 써지지 않은 다른 서브 프로그램에 의해 호출되거나 호출하는 것이 가능하다. JNI에 대한 설명은 "Java(R) Native Interface"를 포함하는 많은 책에 주어져 있다. 따라서, 여기서는 이에 대한 상세한 설명을 생략한다.
서비스 매니저(1204)는 JNI를 통해 재생유닛(1102b)으로부터 채널의 식별자를 접수한다.
우선, 서비스 매니저(1204)는 튜닝을 요청하기 위해 라이브러리(1205)의 튜너(1205c)로 채널의 식별자를 전달한다. 튜너(1205c)는 2차 저장유닛(510)에 저장된 채널정보를 참조하여 튜닝정보를 취득한다. 서비스 매니저(1204)가 채널의 식별자 "2"를 튜너(1205c)로 전달한다고 생각하면, 튜너(1205c)는 도 14에 도시된 컬럼(1412)를 참조하여, 채널에 대응하는 튜닝정보 "156MHz,"를 취득한다. 튜너(1205c)는 튜닝정보를 OS(1201)의 라이브러리(1201b)를 통해 QAM 복조유닛(501)으로 전달한다. QAM 복조유닛(501)은 QAM 복조유닛(501)에 주어진 튜닝 정보에 따라 헤드 엔드(101)로부터 전송된 신호를 복조하여, 그 결과 신호를 POD(504)로 전달한다.
다음에, 서비스 매니저(1204)는 디스크램블링을 수행하도록 라이브러리(1205) 내의 CA(1205b)에 요청한다. CA(1205d)는 OS(1201)내의 라이브러리(1201b)를 통해 디스크램블링하는데 필요한 정보를 POD(504)에 제공한다. 이렇게 제공된 정보에 의거하여, POD(504)는 QAM 복조유닛(501)에 의해 제공된 신호를 디스크램블링하여 그 결과 신호를 TS 디코더(505)로 전달한다.
다음에, 서비스 매니저(1204)는 라이브러리(1205) 내의 JMF(1205a)에 채널의 식별자를 제공하여, 비디오 및 오디오의 재생을 요청한다.
우선, JMF(1205a)는, PAT 및 PMT로부터, 재생될 비디오 및 오디오를 특정하 는데 사용되는 패킷 ID들을 취득한다. PAT 및 PMT는 MPEG2 트랜스포트 스트림에 포함된 프로그램 라인업을 도시한 MPEG-2 표준에 의해 정의된 테이블이다. PAT 및 PMT는, 오디오 및 비디오와 함께, MPEG2 트랜스포트 스트림에 포함된 패킷의 페이로드로 운반된다. PAT 및 PMT의 상세한 설명은 사양서를 참조 바람. 여기서는, 단지 PAT 및 PMT를 개략적으로 설명한다.
PAT는, Program Association Table의 약칭으로서, 패킷 ID "0"의 패킷으로 운반된다. PAT를 취득하기 위해서, JMF(1205a)가, TS 디코더(505)로, OS(1201)의 라이브러리(1201b)를 통해 패킷 ID "0"와 CPU(514)를 지정한다. 그 후, TS 디코더(505)는 패킷 ID "0"에 의거하여 필터링을 수행하여 CPU(514)로 전달한다. 따라서, JMF(1205a)는 PAT 패킷을 수집할 수 있다. 도 16은 수집된 PAT 정보의 실시예를 개략적으로 보여주는 테이블을 도시한다. 컬럼(1601)은 프로그램 넘버를 기술한다. 컬럼(1602)은 패킷 ID들을 기술한다. 컬럼(1602)에 개시된 패킷 ID들은 PAT를 취득하는데 사용된다. 각 라인(1611∼1613)은 채널의 프로그램 넘버와 이에 대응하는 패킷 ID의 쌍이다. 여기서는, 3개의 채널이 정의된다. 라인(1611)은 프로그램 넘버 "101" 및 패킷 ID "501"의 쌍을 정의한다. JMF에 제공된 채널 식별자가 "2"라고 생각하면, JMF(1205a)는 도 14의 컬럼(1412)을 참조하여, 이러한 채널 식별자에 대응하는 프로그램 넘버 "102"를 취득한 후, 도 16에 도시된 PAT의 라인(1612)을 참조하여 프로그램 넘버 "102"에 대응하는 패킷 ID "502"를 취득한다. PMT는, Program Map Table의 약칭으로서, PAT에서 특정된 패킷 ID의 패킷으로 운반된다. PMT를 취득하기 위해서, JMF(1205a)는, TS 디코더(505)로, OS(1201)의 라이브러리(1201b)를 통해 패킷 ID와 CPU(514)를 지정한다. 여기서, 특정되는 패킷 ID는 "502"이다. 그 후, TS 디코더(505)는 패킷 ID "502"에 의거하여 필터링을 수행하고, CPU(514)로 전달한다. 따라서, JMF(1205a)는 PMT 패킷을 수집할 수 있다.
도 17은 수집된 PMT 정보의 실시예를 개략적으로 보여주는 테이블을 도시한다. 컬럼(1701)은 스트림 타입을 기술한다. 컬럼(1702)은 패킷 ID를 기술한다. 각 스트림 타입에서 특정된 정보는 컬럼(1702)에서 특정된 패킷 ID의 패킷의 페이로드로 운반된다. 컬럼(1703)은 부가 정보를 기술한다. 각 라인(1711∼1714)은 패킷 ID와 송신되는 정보 타입의 쌍으로서, 엘리먼트리 스트림(elementary stream)으로 알려져 있다. 라인(1711)은 스트림 타입 "오디오"와 패킷 ID "5011"의 쌍으로서, 오디오 데이터가 패킷 ID "5011"의 패킷의 페이로드에 저장됨을 가리킨다. JMF(1205a)는, PMT로부터, 재생될 비디오 및 오디오의 패킷 ID들을 취득한다. 도 17을 참조하면, JMF(1205a)는 라인(1711)으로부터 오디오 패킷 ID "5011"을 취득하고, 라인(1712)로부터 비디오 패킷 ID "5012"를 취득한다.
그 후, JMF(1205a)는, OS(1201)의 라이브러리(1201b)를 통해, 취득된 오디오 패킷 ID와 출력처로서의 오디오 디코더(506)의 쌍 및 비디오 패킷 ID와 출력처로서의 비디오 디코더(508)의 쌍을 TS 디코더(505)에 제공한다. TS 디코더(505)는 이렇게 제공된 패킷 ID 및 출력처에 의거하여 필터링을 수행한다. 여기서, 패킷 ID "5011"의 패킷은 오디오 디코더(506)로 전달되고 패킷 ID "5012"의 패킷은 비디오 디코더(508)로 전달된다. 오디오 디코더(506)는 제공된 패킷에 대해 디지털-아날로그 변환을 수행하여 스피커(507)를 통해 오디오를 재생한다. 비디오 디코더(508)는 제공된 패킷에 대해 디지털-아날로그 변환을 수행하여 디스플레이(509)에 비디오를 디스플레이한다.
마지막으로, 서비스 매니저(1204)는 라이브러리(1205)의 AM(1205b)에 채널 식별자를 제공하여, 데이터 방송 재생을 요청한다. 여기서, 데이터 방송 재생은 MPEG2 트랜스포트 스트림에 포함된 Java(R) 프로그램을 추출하여 VM(1203)이 실행하게 하는 것을 의미한다. MPEG2 트랜스포트 스트림에 Java(R) 프로그램을 내장하는 기술로서, DSMCC로 알려진 방법이 사용되며, 이는 MPEG 사양서 ISO/IEC138181-6에 기술되어 있다. 여기서는 DSMCC의 상세한 설명을 생략한다. DSMCC 사양서는, MPEG2 트랜스포트 스트림의 패킷에서, 컴퓨터에 의해 사용되는 디렉토리 및 파일로 구성된 파일시스템을 부호화하는 방법을 규정한다. 수행될 Java(R) 프로그램에 대한 정보는 AIT 형태로 MPEG2 트랜스포트 스트림의 패킷으로 운반된다. AIT는 Application Information Table의 약칭으로서 DVB-MHP 표준(정식으로는 ETSI TS 101 812 DVB-MHP 사양서 V1.0.2로서 알려짐)의 제 10 장에 정의되어 있다.
우선, AIT를 취득하기 위해서, AM(1205b)은 JMF(1205a)의 경우처럼 PAT 및 PMT를 취득하여, AIT를 저장하는 패킷의 패킷 ID를 취득한다. 제공된 채널 식별자가 "2"이고 도 16에 도시된 PAT와 도 17에 도시된 PMT가 전송되고 있다고 생각하면, AM(1205b)은 JMF(1205a)와 동일한 순서에 따라 도 17에 도시된 PMT를 취득한다. 이어서, AM(1205b)는, PMT로부터, 스트림 타입이 "데이터"이고 부가정보로서 "AIT"를 가지는 엘리먼트리 스트림의 패킷 ID를 추출한다. 도 17에 도시된 바와 같이, 라인(1713)의 엘리먼트리 스트림은 이러한 엘리먼트리 스트림에 대응하고, 따 라서 AM(1205b)은 그로부터 패킷 ID "5013"를 취득한다.
AM(1205b)은 OS(1201)의 라이브러리(1201b)를 통해 AIT의 패킷 ID와 출력처로서 CPU(514)를 TS 디코더(505)에 제공한다. 그 후, TS 디코더(505)는 이렇게 제공된 패킷 ID에 의거하여 필터링을 수행하여 CPU(514)로 전달한다. 따라서, AM(1205b)은 AIT의 패킷을 수집할 수 있다.
도 18은 수집된 AIT 정보의 실시예를 개략적으로 도시한 테이블이다. 컬럼(1801)은 Java(R) 프로그램의 식별자를 기술한다. MHP 사양서에 따르면, 이들 식별자는 어플리케이션 ID로서 정의되어, Java(R) 프로그램이 단말장치(500)의 시큐리티 매니저(1205f)에 의해 인증되어야만 하는 프로그램인지를 식별한다. 식별자의 값이 0x0 내지 0x3fff의 범위내에 있으면 인증을 필요로 하지 않고, 식별자의 값이 0x4000 내지 0x7fff의 범위내에 있으면 인증을 필요로 한다. 식별자값이 첫번째 범위에 있는 Java(R) 프로그램을 "서명되지 않은 프로그램"이라 하고, 식별자값이 두번째 범위에 있는 Java(R) 프로그램을 "서명된 프로그램"이라 한다. 컬럼(1802)은 Java(R) 프로그램을 제어하기 위한 제어정보를 기술한다. 상기 제어정보는 "autostart", "present", 및 "kill"을 포함한다. "autostart"는 단말장치(500)가 자동적으로 프로그램을 즉시 실행하는 것을 의미한다. "present"는 프로그램이 자동적으로 실행되지 않는 것을 의미한다. "kill"은 프로그램이 종료되는 것을 의미한다. 컬럼(1803)은 DSMCC 포맷의 Java(R) 프로그램을 포함하는 패킷 ID들을 추출하는데 사용되는 DSMCC 식별자를 기술한다. 컬럼(1804)은 Java(R) 프로그램의 프로그램명을 기술한다.
각 라인(1811, 1812)은 Java(R) 프로그램에 대한 정보의 세트이다. 라인(1811)에 규정된 Java(R) 프로그램은 식별자 "301", 제어정보 "autostart", DSMCC 식별자 "1", 및 프로그램명 "a/TopXlet"의 세트이다. 라인(1812)에 규정된 Java(R) 프로그램은 식별자 "302", 제어정보 "present", DSMCC 식별자 "1", 및 프로그램명 "b/GameXlet"의 세트이다. 여기서, 이들 2개의 Java(R) 프로그램은 동일한 DSMCC 식별자를 가진다. 이것은 2개의 Java(R) 프로그램이 동일한 DSMCC 방법에 따라 부호화된 파일 시스템에 포함됨을 가리킨다. 여기서, 오직 4개의 정보만 각 Java(R) 프로그램에 대해 특정되지만, 실제로는 더 많은 정보가 특정될 수 있다. 상세는 DVB-MHP 사양서를 참조 바람.
AM(1205b)은 AIT로부터 "autostart" Java(R) 프로그램을 찾아, 대응하는 DSMCC 식별자 및 Java(R) 프로그램명을 추출한다. 도 18을 참조하면, AM(1205b)은 라인(1811)의 Java(R) 프로그램을 추출하여, DSMCC 식별자 "1" 및 Java(R) 프로그램명 "a/TopXlet"를 취득한다.
다음에, AM(1205b)은, PMT로부터, AIT로부터 취득된 DSMCC 식별자를 사용하여, DSMCC 포맷으로 Java(R) 프로그램을 저장하는 패킷의 패킷 ID를 취득한다. 좀더 구체적으로는, AM(1205b)은, PMT로부터, 스트림 타입이 "데이터"이고 부가정보의 DSMCC가 합치하는 엘리먼트리 스트림에 포함된 패킷 ID를 취득한다.
여기서는, 이러한 DSMCC 식별자가 "1"이고 PMT가 도 17에 도시된 것이라고 생각하면, 라인(1714)의 엘리먼트리 스트림은 상기 조건을 만족한다. 따라서, 패킷 ID "5014"가 추출되는 것이다.
AM(1205b)는 OS(1201)의 라이브러리(1201b)를 통해 DSMCC 포맷으로 데이터가 내장된 패킷의 패킷 ID 및 출력처로서 CPU(514)를 TS 디코더(505)에 지시한다. 여기서는, 패킷 ID "5014"가 제공된다. 그 후, TS 디코더(505)는 제공된 패킷 ID에 의거하여 필터링을 수행하여 CPU(514)로 전달한다. 따라서, AM(1205b)은 필요한 패킷을 수집할 수 있다. AM(1205b)은 DSMCC 방식에 따라 수집된 패킷으로부터 파일 시스템을 재구성하고, 재구성된 파일 시스템을 1차 저장유닛(511)에 저장한다. MPEG2 트랜스포트의 패킷으로부터 파일 시스템과 같은 데이터를 추출하여 추출된 데이터를 1차 저장유닛(511)과 같은 저장유닛에 저장하는 처리를, 이하 다운로드라 한다.
도 19는 다운로드된 파일 시스템의 실시예를 도시한다. 도면에서, 원은 디렉토리를 나타내고, 사각형은 파일을 나타내는 것으로, 1901은 루트 디렉토리, 1902는 디렉토리 "a", 1903은 디렉토리 "b", 1904는 파일 "TopXlet.class", 1905는 "GameXlet.class"이다.
이어서, AM(1205b)은, VM(1203)으로, 1차 저장유닛(511)에 다운로드된 파일 시스템 중에서 실행될 Java(R) 프로그램을 전달한다. 여기서, 실행될 Java(R) 프로그램명이 "a/TopXlet"이라고 생각하면, 상기 Java(R) 프로그램명에 ".class"를 덧붙인 파일 "a/TopXlet.class"가 실행될 파일이다. "/"는 디렉토리와 파일명 사이의 구획문자이고, 도 19에 도시된 바와 같이, 파일(1904)은 실행될 Java(R) 프로그램이다. 다음에, AM(1205b)은, Java(R) 프로그램의 식별자를 기술하는 컬럼(1801)이 서명되지 않은 프로그램을 가리키므로 파일(1904)를 VM(1203)으로 전달하고, 이것 은 이러한 Java(R) 프로그램의 인증을 수행하도록 시큐리티 매니저(1205f)에 요청할 필요가 없음을 의미한다.
VM(1203)은 이러한 수신된 Java(R) 프로그램을 실행한다.
다른 채널의 식별자가 수신됨에 따라, 서비스 매니저(1204)는, 동일한 라이브러리(1205)에 포함된 각 라이브러리를 통해, 라이브러리(1205)에 포함된 각 라이브러리를 통해 수행되는 Java(R) 프로그램의 실행 및 비디오와 오디오의 재생을 종료한 다음, 새롭게 수신된 채널 식별자에 의거하여 Java(R) 프로그램의 실행 및 비디오와 오디오의 재생을 수행한다.
라이브러리(1205)는 ROM(512)에 저장된 복수의 Java(R) 라이브러리의 집합이다. 본 실시형태에서, 라이브러리(105)는 JMF(1205a), AM(1205b), 튜너(1205c), CA(1205d), POD Lib(1205e), 시큐리티 매니저(1205f), 다운로드 모듈(1206) 등을 포함한다.
서비스 매니저(1204) 및 다운로드 모듈(1206)은 라이브러리(1205)에 포함된 POD Lib(1205e)를 통해 헤드 엔드(101)와 양방향 통신을 수행한다. 이 양방향 통신은 OS(1201)의 라이브러리(1201b) 및 POD(504)를 통해 QPSK 복조유닛(502) 및 QPSK 변조유닛(503)을 사용하여 POD Lib(1205e)에 의해 실현될 수 있다.
다운로드 모듈(1206)은 이러한 통신을 통해 헤드 엔드(101)로부터 코드 데이터를 수신할 수 있다. 코드 데이터는 X.509 증명서 및/또는 단말장치(500)의 펌웨어를 포함하는 바이너리 데이터를 말한다.
도 20은 헤드 엔드(101)로부터 취득된 XAIT 정보의 실시예를 개략적으로 보 여주는 테이블을 도시한다. 컬럼(2001)은 Java(R) 프로그램의 식별자를 기술한다. 컬럼(2002)은 Java(R) 프로그램을 제어하기 위한 제어정보를 기술한다. 제어정보는 "autostart" 및 "present"를 포함한다. "autostart"는 단말장치(500)가 파워온되면 프로그램이 자동적으로 실행됨을 의미하고, "present"는 프로그램이 자동적으로 실행되지 않음을 의미한다. 컬럼(2003)은 DSMCC 포맷의 Java(R) 프로그램을 포함하는 패킷 ID를 추출하는데 사용되는 DSMCC 식별자를 기술한다. 컬럼(2004)은 Java(R) 프로그램의 프로그램명을 기술한다. 컬럼(2005)은 Java(R) 프로그램의 우선순위를 기술한다. 컬럼(2006)은 Java(R) 프로그램의 버전 넘버를 기술한다. 라인(2011)은 Java(R) 프로그램에 대한 정보의 세트를 가리킨다. 라인(2011)에 정의 된 Java(R) 프로그램은 식별자 "0x7001", 제어정보 "autostart", DSMCC 식별자 "1", 및 프로그램명 "a/xlet1"의 세트이다. 이 Java(R) 프로그램이 서명된 프로그램이라는 것은 그 Java(R) 프로그램 어플리케이션 ID로부터 알 수 있다. 여기서는, 6개의 정보만 Java(R) 프로그램에 대해 특정되었지만, 본 발명은 좀더 많은 정보가 정의될 때에도 수행될 수 있다.
XAIT 정보를 수신하면, AIT 정보로부터 Java(R) 프로그램을 다운로드하기 위한 절차와 동일한 절차에 따라, AM(1205b)가 MPEG2 트랜스포트 스트림으로부터 파일 시스템을 1차 저장유닛(511)에 저장한다.
이후, 파일 시스템이 2차 저장유닛(510)에 저장되지만, 이러한 파일 시스템이 도 34에 도시된 "application description file"을 포함한다면, AM(1205b)은 "application description file"의 기술내용에 따라서 파일 시스템의 특정 파일을 저장한다. AM(1205b)는 파일 시스템을 2차 저장유닛(510)에 저장하기 직전에 시큐리티 매니저(1205f)에 저장 전치 통지를 행한다. 이에 응답하여, 시큐리티 매니저(1205f)가 인증을 수행하고, 기동이 가능하게 되었음을 AM(1205b)에 통지한다. 시큐리티 매니저(1205f)에 의해 기동이 가능하게 되었음이 통지되면, AM(1205b)은, 2차 저장유닛(510)에, 파일 시스템에 포함된 특정 파일을 저장한다. 상기 AM(1205b)와 시큐리티 매니저(1205f)에 의해 수행되는 처리는, 본 발명은 주요 기능으로서, 후에 상세히 기술한다.
다음에, AM(1205b)은, 2차 저장유닛(510)에, XAIT 정보를 다운로드된 파일 시스템의 저장 위치와 연관시킨 결과를 저장한다. 도 21은 XAIT 정보와 다운로드된 파일 시스템이 서로 연관되어 2차 저장유닛(510)에 저장된 실시예를 도시한다.
여기서, OCAP 사양서에 정의된 파일을 실시예로서 설명한다. 도 20과 동일한 도 21의 구성요소에 대한 설명을 생략한다. 컬럼(2101)은 다운로드된 파일 시스템의 저장 위치를 저장한다. 도 21에서, 이러한 저장위치는 화살표로 표시된다. 2110은 다운로드된 파일 시스템으로서, 최상위 디렉토리(루트 디렉토리라고도 함)(2120), 디렉토리 "a"(2121), 디렉토리 "b"(2122), 파일 "ocap.storage"(2130), 파일 "ocap.certificates.1"(2131), 파일 "ocap.signaturefile.1"(2132), 파일 "ocap.hashfile"(2140∼2142), 파일 "xlet1.class"(2150), 및 파일 "sub.class"(2151)이 포함된다.
파일(2130)은 "application description file"로서, 도 34에 도시된 바와 같은 XML(eXtensible Markup Language) 포맷으로 기술된다. 도 35는 파일(2130)의 기 술내용을 보여주는 파일 리스트 정보의 실시예를 도시한 도면이다. 도 35에서 351은 파일(2130)의 기술내용을 가리키는 파일 리스트 정보이다. 컬럼(3511)은 파일명을 기술한다. 컬럼(3512)는 각 파일의 버전 넘버를 기술한다. 여기서는, "application description file"에 대해 2개의 정보만 특정되었지만, 더 많은 정보가 정의되어도 본 발명을 수행하는 것이 가능하다. 컬럼(3512)에 기술된 각 파일의 버전 넘버로서, 이러한 파일을 포함하는 프로그램의 프로그램 넘버(2006)의 값이 기본적으로 주어지고, 그 프로그램의 버전이 업그레이드될 때에도 콘텐츠가 변화하지 않은 컬럼(3512)에 기술된 파일만의 버전 넘버로서, 이러한 업그레이드되기 전의 프로그램의 프로그램 넘버(2006)의 값이 주어진다.
파일(2140∼2142)은 파일명 또는 디렉토리명 및 대응하는 해시값이 포함된 해시 파일이다. 도 22A, 22B, 및 22C는 "ocap.hashfiles"의 상세를 도시한 개략도이다. 도 22A의 221은 "ocap.hashfile"(2116)을 나타내며, 도 22B의 222는 "ocap.hashifle"(2117)을 나타내고, 도 22C의 223은 "ocap.hashfile"(2118)을 나타낸다. 221의 "ocap.hashfile"은 "/" 디렉토리(2120)에 존재하는 것으로, 컬럼(2211)에, 동일한 디렉토리(2120)에 존재하는 "ocap.storage" 파일(2130), "ocap.certificates.1"파일(2131), 및 "a"디렉토리(2121)를 포함한다. 컬럼(2212)은 해시 알고리즘이 컬럼(2213)에 기술된 각 값을 계산하는데 사용됨을 가리킨다. 컬럼(2213)은, 컬럼(2211)의 파일 또는 디렉토리에 관련된 것으로, 컬럼(2212)에 특정된 해시 알고리즘을 사용하여 계산되는 해시값을 포함한다. 일반적으로, 주로 사용되는 해시 알고리즘은 SHA1(Secure Hash algorithm 1) 및 MD5(Message Digest 5)이다. 이들은 임의의 길이의 데이터를 고정 길이의 바이트 값으로 변환하는 공지의 알고리즘으로서, 다음과 같은 특성을 가진다: 변환 후 원데이터를 예측하는 것이 불가능하다; 그리고 이들은 파일이 파손됐는지 위변조됐는지를 체크하는데 사용된다.
한편, 해시값은 해시 알고리즘을 사용하여 생성된 의사 랜덤 넘버이다. 해시 알고리즘이 SHA1일 때, 해시 알고리즘의 길이는 20바이트이고, 해시 알고리즘이 MD5일 때, 해시값의 길이가 16바이트로 변환된다. SHA1 및 MD5에 대한 상세를 위해, "FIPS-PUB 186-2 Secure Hash Standard" 및 "IETF RFC1321"을 각각 참조바람. 여기서, 컬럼(2211)에 기술된 "a"디렉토리에 대응하는 해시값은, "a" 디렉토리에 존재하는 "ocap.hashfile"파일(2141)에 대해 계산된 SHA1 해시값이다.
221의 "ocap.hashfile"의 경우에서처럼, 222의 "ocap.hashfile"은, "xlet1.class"의 파일명, 및 디렉토리 "b"(2122)의 디렉토리명, 해시 알고리즘, 및 해시값을 포함한다. 동일하게, 223의 "ocap.hashfile"은 동일 디렉토리(2122)에 존재하는 "sub.class"파일(2151)의 파일명, 해시 알고리즘, 및 해시값을 포함한다.
여기서는, 본 발명에 관련된 속성만 기술되고, 그래서 OCAP 사양서 "OpenCable(R) Application Platform Specification OCAP 1.0 Profile(OC-SP-OCAP1.0-IF-I09-031121)"이 "ocap.hashfile"에 대한 상세를 위해 참조되어야 한다.
파일(2131)은 증명서 체인이다. 도 23은 "ocap.certificate.1" 파일(2131)의 상세한 구성을 도시하는 도면이다. 231은 "ocap.certificate.x"(x는 양의 정수)의 전형적인 구성을 묘사한 것으로, 루트 증명서(2311), 중간 증명서(2312), 및 리프 증명서(2313)를 포함한다. 이들은, 예를 들어, 루트 증명서(2311)의 소유자가 중간 증명서(2312)를 발행하고, 중간 증명서(2312)의 소유자가 리프 증명서(2313)를 발행하는 연쇄 관계로 존재한다. OCAP 사양서에 따르면, 서명 파일 "ocap.signaturefile.x"에 관계된 증명서 체인은 동일한 값 "x"를 갖는 "ocap.certificate.x"이다.
도 21의 경우에, "ocap.signaturefile.1"에 대응하는 증명서 체인은 "ocap.certificate.1"이다. 또한, 루트 증명서(2311), 중간 증명서(2312), 및 리프 증명서(2313)는 동일한 X.509 증명서 포맷으로 구성된다. X.509 증명서는, ITU-T의 리코멘데이션(recommendation)으로서, 증명서 표현 포맷의 디팩토(de facto) 표준으로서 정보통신산업의 각 분야에서 널리 사용된다. 도 23에서는, 3개의 증명서만 도시되었지만, 복수의 중간 증명서가 존재하는 경우도 있다. 그러나, 이 경우에는, 이들 중간 증명서들이 서로 관련된 연쇄 상태로 존재하여야만 한다.
도 24는 X.509 증명서의 구성을 도시하는 도면이다. 여기서는, 본 발명을 설명하는데 필요한 속성만이 묘사된다. X.509 증명서에 대한 상세를 위해, IETF RFC3280 "Internet X.509 Public Key Infrastructure Certificate and CRL Profile"을 참조 바람. 241은 X.509 증명서의 속성 영역을 가리키고 242는 X.509 증명서의 서명값을 가리킨다. 시리얼 넘버(2411)는 증명서를 식별하기 위한 넘버를 가리키고, 서명 알고리즘(2412)은 서명값(242)을 결정하는데 사용되는 알고리즘을 가리키며, 금회의 업데이트 일시(2413)는 이 X.509 증명서가 유효하게 될 때의 일시을 가리키고, 다음회의 업데이트 일시(2414)는 이 X.509 증명서가 만료할 때의 일시을 가리키며, 발행자명(2415)은 이 X.509 증명서를 발행한 기관의 명칭을 가리키고, 주체명(2416)은 이 X.509 증명서의 소유자를 가리키며, 공개키(2417)는 주체명(2416)의 공개키를 가리키고, 서명값(242)은 이 X.509 증명서의 발행자의 비밀키로 서명(암호화)된 값을 가리킨다. 본 실시형태에서는, 금회의 업데이트 일시(2413)와 다음회의 업데이트 일시(2414)는 일시(日時)의 정보를 필요로 하지만, 시간 정보를 항상 필요로 하는 것은 아니다. 공개키 및 비밀키를 활용하는 시스템으로서, 공개키 암호체계가 전자상거래 등에 널리 사용된다. 공개키 암호체계에서는, 암호화된 텍스트가 평문을 암호화하는데 사용된 키와 상이한 키로 복호화된다. 암호화용 키와 복호화용 키가 서로 다르므로, 복호화용 키로부터 암호화용 키를 추정하는 것이 불가능하다. 이 암호화용 키는 비밀키에 대응하고 이 복호화용 키는 공개키에 대응한다. 공개키 암호체계의 대표적인 실시예로서는 RSA(Rivest-Shamir-Adleman) 및 DSA(Digital Signature Standard)를 들 수 있다.
파일(2132)은 서명파일이다. 도 25는 "ocap.signaturefile.1" 파일(2132)을 도시하는 개략도이다. 251은 X.509 증명서가 관계됨을 식별하기 위한 증명서 식별자를 가리키고, 252는 해시 서명 알고리즘을 가리키며, 253은 252에서 가리켜진 해시 서명 알고리즘을 사용하여 "ocap.hashfile"(2140)로부터 계산된 서명값을 가리킨다.
일단 Java(R) 프로그램이 2차 저장유닛(510)에 저장되면, 채널 변경 및 단말장치(500)의 파워오프와 같은 원인에 의해 Java(R) 프로그램이 1차 저장유닛(511)에서 삭제되는 경우에도, AM(1205b)이 도 20에 도시된 XAIT를 수신하기만 하면 다 운로드를 위해 기다릴 필요없이 이러한 Java(R) 프로그램를 기동시키는 것이 가능하다. 즉, 도 20에서는, 프로그램 "/a/xlet1"의 제어정보(2002)가 "autostart"이다. 그래서, 도 21의 2011에서는, "/a/xlet1"에 대응하는 파일시스템의 저장위치(2101)에 대해 서치가 이루어진 다음 파일(2150)이 VM(1203)으로 전달되면, 이러한 파일 시스템에 저장된 Java(R) 프로그램 "xlet1"이 기동된다.
다음에, AM(1205b) 및 시큐리티 매니저(1205f)에 의해 수행되는 처리에 대해 설명하는데, 이들은 본 발명의 주요 기능으로서, 1차 저장유닛(511)에 저장된 파일 시스템을 인증하여 인증된 파일 시스템을 2차 저장유닛(510)에 저장하기 위한 것이다.
AM(1205b)의 기능을 먼저 설명하고, 시큐리티 매니저(1205f)의 기능을 다음에 설명하며, AM(1205b) 및 시큐리티 매니저(1205f)에 의해 수행되는 처리의 흐름을 마지막으로 설명한다.
먼저, AM(1205b)을 설명한다.
도 36은 1차 저장유닛(511)에 저장된 파일 시스템을 2차 저장유닛(510)에 저장하기 위한 AM(1205b)의 구성요소를 도시한다.
새롭게 다운로드된 Java(R) 프로그램이 저장될 때, 파일 시스템 비교유닛(3601)은 1차 저장유닛(511)에 저장된 파일 시스템의 "/" 디렉토리에 포함된 "ocap.storage"의 기술내용과, Java(R) 프로그램이 저장되는 2차 저장유닛(510)에 저장된 "/" 디렉토리에 포함된 "ocap.storage"의 기술내용을 비교한다. 그 후, 파일 시스템 비교유닛(3601)은 저장될 파일을 가리키는 파일 리스트 정보(이하 단순 히 파일 리스트 정보라 함)를 추출하여, 파일 시스템 관리유닛(3602)으로, 추출된 파일 리스트 정보와 Java(R) 프로그램 식별자(2001)의 쌍을 전달한다. 파일 시스템 관리유닛(3602)은, 파일 시스템 비교유닛(3601)로부터 전달된 파일 리스트 정보를 사용하여, 파일 시스템 저장유닛(3603)으로부터의 질문에 파일 리스트 정보를 제공한다.
파일 시스템 저장유닛(3603)은 파일 리스트 정보를 취득하기 위해서 파일 시스템 관리유닛(3602)에 질문하고, 이러한 취득된 파일 리스트 정보에 의거하여 1차 저장유닛(511)으로부터의 파일을 2차 저장유닛(510)에 저장한다.
예를 들어, 다음의 케이스를 생각해보자: 도 37은 이전의 다운로드 및 인증시에 1차 저장유닛(511)에 저장된 후 2차 저장유닛(510)에 저장된 Java(R) 프로그램의 파일 시스템의 "ocap.storage"에 의거하여 파일 리스트 정보의 상세를 도시한다; 그리고, 도 35는 도 21에 도시된 XAIT 정보에 따라 수행된 다운로드에 의해 1차 저장유닛(511)에 저장된 Java(R) 프로그램의 파일 시스템의 "ocap.storage"에 의거하여 파일 리스트 정보의 상세를 도시한다. 이 경우에, 파일 시스템 비교유닛(3601)은, 파일 시스템 관리 유닛(3602)으로, 도 38에 도시된 파일 리스트 정보와, 1차 저장유닛(511)에 새롭게 저장된 Java(R) 프로그램의 프로그램 식별자(2001)를 전달한다.
도 38에 나타내어진 바와 같이, 도 38의 파일 리스트 정보에 도시된 파일들은 도 37에 도시되었지만 도 35에는 도시되지 않은 파일(즉, "/a/c/ocap.hashfile" 및 "/a/c/sub.class") 및 도 37 및 도 35에 모두 도시되었지만 그 버전 넘버가 상 이한 파일(즉, "/ocap.hashfile", "/ocap.singaturefile. 1", "/a/ocap.hashfile", 및 "/a/xlet.class")이고, 도 37 및 도 35에 공통으로 도시된 파일은 도 38의 파일 리스트 정보에 기술되지 않는다.
파일 시스템 관리유닛(3602)은 Java(R) 프로그램의 프로그램 식별자(2001)와 파일 리스트 정보의 쌍을 관리하고, 파일 시스템 저장유닛(3603)은 파일 시스템 관리 유닛(3602)에 저장될 파일에 대해 질문하여, 수신된 파일 리스트 정보에 따라 파일을 저장한다.
라인(2011)에 정의된 Java(R) 프로그램이 저장되는 경우를 예로 들어서, 파일 시스템 비교유닛(3601), 파일 시스템 관리 유닛(3602), 및 파일 시스템 저장유닛(3603)에 의해 수행되는 상세한 처리를 다음에 설명한다.
도 39는 파일 시스템 비교유닛(3601)에 의해 수행되는 처리를 도시한 플로우챠트이다. 파일 시스템 비교유닛(3601)이 1차 저장유닛(511)에 저장된 파일 시스템의 "/" 디렉토리에 존재하는 "ocap.storage"가 있는지를 체크한다(단계 S391). "ocap.storage"가 존재하면, 파일 시스템 비교 유닛(3601)은 1차 저장유닛(511)에 저장된 "ocap.storage"의 기술내용에 의거하여 파일 리스트 정보(351)를 생성한다(단계 S392).
단계 S391에서의 체크 결과 "ocap.storage"가 존재하지 않으면, 본 실시예에서 처리가 종료되지만, (i) 1차 저장유닛(511)에 저장된 파일 시스템의 파일 구성을 참조하여 생성되는 파일명 컬럼(3511) 및 (ii) 버전 넘버(2006)로부터 생성되는 버전 넘버 컬럼(3512)을 포함하는 파일 리스트 정보(351)를 사용하여 단계 S393 로 이동하는 것도 가능하다.
다음에, 파일 시스템 비교유닛(3601)은 새롭게 다운로드된 Java(R) 프로그램이 저장되는 2차 저장유닛(510)에 저장된 "/" 디렉토리에 존재하는 "ocap.storage"가 있는지를 체크한다(본 실시형태에서는, 도 21에 도시된 Java(R) 프로그램이 새롭게 다운로드된 Java(R) 프로그램으로 교체되는 실시예에 대해 설명한다)(S393). "ocap.storage"이 존재하면, 파일 시스템 비교유닛(3601)은 2차 저장유닛(510)에 저장된 "ocap.storage"의 기술내용에 의거하여 파일 리스트 정보(371)를 생성한다(단계 S394).
단계 S393에서 수행된 체크결과 "ocap.storage"이 존재하지 않으면, 본 실시예에서는 처리가 종료되지만, (i) 2차 저장유닛(510)에 저장된 파일 시스템의 파일 구성을 참조로 생성된 파일명 컬럼(3711)과 (ii) 가장 작은 버전 넘버인 1로부터 생성되는 버전 넘버 컬럼(3712)을 포함하는 파일 리스트 정보(371)를 사용하는 단계 S395로 이동하는 것도 가능하다.
다음에, 파일 비교 유닛(3601)이 파일 리스트 정보(351) 및 파일 리스트 정보(371)를 비교하여 차이를 추출하고, 파일 리스트 정보(381)를 생성한다(단계 S395). 마지막으로, 파일 비교 유닛(3601)이, 파일 관리 유닛(3602)으로, Java(R) 프로그램 식별자(2001) 및 파일 리스트 정보(381)의 쌍을 전달한다(단계 S396).
도 40은 파일 시스템 관리 유닛(3602)에 의해 수행되는 처리를 도시한 플로우챠트이다. Java(R) 프로그램 식별자(2001) 및 파일 리스트 정보에 대한 질문을 수신하면(단계 S401), 파일 시스템 관리 유닛(3602)은, 질문자에게, 수신된 Java(R) 프로그램 식별자(2001)에 대응하는 파일 리스트 정보(381)를 리턴시킨다(단계 S402).
도 41은 파일 시스템 저장유닛(3603)에 의해 수행되는 처리를 도시하는 플로우챠트이다. Java(R) 프로그램 식별자(2001) 및 Java(R) 프로그램을 저장하라는 요구를 수신하면(단계 S411), 파일 시스템 저장유닛(3603)은 파일 시스템 관리 유닛(3602)에 제공된 Java(R) 프로그램 식별자(2001)에 대응하는 파일 리스트 정보(381)를 취득한다. 그 후, 파일 시스템 저장유닛(3603)이 파일 리스트 정보(381)가 취득되었는지 여부를 판정한다(단계 S413). 파일 리스트 정보(381)가 취득되었다고 판정되면(단계 413에서 yes), 파일 시스템 저장유닛(3603)은 버전 넘버(2006)를 상기 취득된 파일 리스트 정보(381)의 컬럼(3812)에 기술된 각 버전 넘버를, 최상위 라인으로부터 시작하여, 비교한다.
버전 넘버(2006)가 크면(단계 S415), 파일 시스템 저장유닛(3603)은 파일 리스트 정보(381)의 현재 라인의 컬럼(3811)에 기술된 파일명에 대응하는 2차 저장유닛(510)에 저장된 파일을 삭제한다. 도 38에 도시된 실시예에서는, 2개의 파일 "/a/c/ocap.hashfile" 및 "/a/c/sub.class"이 삭제된다(단계 S416). 버전 넘버(2006)이 크지 않으면, 파일 시스템 저장유닛(3603)은 현재 비교된 버전 넘버가 버전 넘버(2006)와 같은지를 판정한다(단계 S417). 이들 버전 넘버들이 같으면, 파일 시스템 저장유닛(3603)은, 2차 저장유닛(510)에, 파일 리스트 정보(381)의 현재 라인의 컬럼(3811)에 기술된 파일명에 대응하는 1차 저장유닛(511)에 저장된 파일을 저장한다(단계 S418). 여기서 "store a file"은 이러한 파일이 2차 저장유닛(510) 에 존재하는 경우 "overwrite a file"을 참조하고, 2차 저장유닛(510)에 파일이 존재하지 않는 경우 "additionally store a file"을 참조한다. 또한, 여기에서는 저장 동작 전에, 후술될 인증 동작이 완료되었음을 주목한다. 마지막으로, 파일 시스템 저장유닛(3603)은 파일 리스트 정보의 마지막 라인에 도달하였는지 여부를 판정한다(단계 S419). 마지막 라인이 아닌 경우에는, 파일 시스템 저장유닛(3603)이 단계 S414로 리턴하는 반면에, 마지막 라인이면 처리를 종료한다.
더 많은 버전의 파일을 저장하고 이전 버전의 파일을 삭제할 수 있는 방법인 한, 다른 방법을 사용할 수 있다. 또한, 더 많은 이전 버전의 파일들 사이에 구별하기 위해서, 버전 넘버(2006)와 파일 리스트 정보(381)의 컬럼(3812)에 기술된 버전 넘버를 사용하여 설명이 이루어졌지만, 더 많은 이전 버전의 파일들 사이의 구별이 가능한 한 다른 방법이 사용될 수 있다.
다음에, 시큐리티 매니저(1205f)에 의해 수행되는 일반적인 동작에 대해 설명한다. 예를 들어, 시큐리티 매니저(1205f)가, AM(1205b)으로부터, 라인(2011)에 정의된 Java(R) 프로그램이 이제 막 저장됨을 나타내는 저장 전치 통지를 수신하는 것을 가정한다. 이러한 통지를 수신하면, 시큐리티 매니저(1205f)는 Java(R) 프로그램 식별자(2001)의 값을 체크하여 서명되지 않은 프로그램 또는 서명된 프로그램인지를 판정한다. 여기서는, Java(R) 프로그램이 서명된 프로그램이므로, 시큐리티 매니저(1205f)가 "/" 디렉토리 하위의 파일 시스템의 인증을 수행한다. 파일 시스템을 검증하기 위해서, ocap.hashfile(2140∼2142), ocap.certificates.1(2131) 및 ocap.signaturefile.1(2132)를 사용하여 인증을 수행한다.
도 26은 파일 시스템의 인증을 수행하는 시큐리티 매니저(1205f)의 구성요소를 도시한다.
통지 수신 유닛(261)은, AM(1205f)이 파일 시스템을 이제 막 저장하기 직전에 저장 전치 통지를 수신하여 이러한 사실을 판정 유닛(262)에 통지하기 위한 것이다.
판정 유닛(262)은 인증 결과를 판정한다. 해시 계산 유닛(263)이 파일 시스템의 해시 계산을 하도록 요구하여 해시값을 수신한다. 판정 유닛(262)이, "ocap.hashfile" 파일에 존재하는 해시값(2213, 2223) 중에서, 비교될 값을 추출하여 수신된 해시값과 일치하는지를 체크한다. 일치하지 않으면, 판정 유닛(262)은 위변조되었다고 판정하고, 인증이 실패로 끝난다.
또한, 판정 유닛(262)은 증명서 추출 유닛(265)을 사용하여 각 X.509 증명서를 추출하고, 현재 시각이 각 X.509 증명서의 금회의 업데이트 일시(2413)의 이전이 아님과 더불어 각 X.509 증명서의 다음회의 업데이트 일시(2414) 이후가 아닌지를 판정한다.(즉, 현재 시각이 각 X.509 증명서의 금회의 업데이트 일시(2413)와 다음 회의 업데이트 일시(2414) 사이에 있다). 현재 일시는 OS(1201)의 라이브러리(1201b)로부터 취득된다. 유효기간이 "금회의 업데이트 일시 < 현재의 일시 < 다음회의 업데이트 일시"를 만족하지 않으면, 판정 유닛(262)은 인증 실패라고 판정한다.
또한, 증명서 체인을 인증하기 위해서, 판정 유닛(262)은 각 X.509 증명서의 속성 영역(241)의 해시 계산을 행하도록 해시 계산 유닛(263)에 요청한다. 그 후, 각 X.509 증명서에 포함된 서명값(242)을 복호화하기 위한 계산을 행하도록 서명값 복호화 유닛(264)에 요구하고, 복호화된 값을 해시값 계산 유닛(263)에 의해 취득된 해시값과 비교하여 증명서 체인의 상태를 체크한다. 이들이 일치하지 않으면, 증명서들이 체인 관계가 아니라는 것을 의미하고, 그래서 인증 실패라고 판정된다. 한편, 이러한 값들이 일치하고 증명서들이 체인 관계에 있다고 검증되면, 증명서 체인의 루트 증명서가 단말장치(500)의 2차 저장유닛(510)에 포함되는지가 체크된다. 포함되지 않으면, 비교를 수행할 수 없다는 점에서, 판정 유닛(262)은 인증 실패라고 판정한다.
판정 유닛(262)은 다음의 모두를 만족하면 인증 성공이라고 판정한다: (1) 위변조이 없다; (2) 기간 유효성이 있다; (3) 증명서들이 체인 관계에 있다; 그리고 (4) 루트 증명서들이 일치한다.
판정 유닛(262)이 각 파일의 해시값을 계산하도록 요구하면, 해시 계산 유닛(263)은 OS(1201)의 라이브러리(1201b)로부터 각 파일을 추출하여 이들의 해시 계산을 수행하고, 결과값을 판정 유닛(262)으로 전달한다. 또한, 해시 계산 유닛(231)은 증명서 추출 유닛(265)으로부터 증명서 체인(231)의 각 X.509 증명서를 취득하여, 이들 각각의 속성 영역(241)의 해시 계산을 수행한다.
서명값 복호화 유닛(264)은 판정 유닛(262)에 의해 X.509 증명서 또는 "ocap.signaturefile.x"의 서명값을 복호화하기 위한 계산을 수행하도록 요청받는다. 각 X.509 증명서의 서명을 복호화하기 위한 계산을 수행할 때, 서명값 복호화 유닛(264)은 증명서 추출 유닛(265)으로부터 증명서 체인(231)의 각 X.509 증명서 를 취득한 후, 이들 각각의 서명을 복호화하기 위한 계산을 수행하여 그 결과를 판정 유닛(262)으로 리턴시킨다.
증명서 추출 유닛(265)은, 판정 유닛(262), 해시 계산 유닛(263), 및 서명값 복호화 유닛(264)에 의해 증명서 체인(231)의 각 X.509 증명서를 추출하도록 요구받아, X.509 증명서를 추출하여 리턴시킨다.
도 27은 파일 시스템의 인증을 수행할 때 시큐리티 매니저(1205f)에 의해 수행되는 동작을 요약한 플로우챠트이다. 이 플로우챠트에 의거하여, 파일 시스템이 도 21에 도시된 구성을 가지는 경우에 수행되는 동작에 대해 설명한다. AM(1205b)으로부터 파일 시스템의 저장 전치 통지를 수신하면(단계 S271), 시큐리티 매니저(1205f)는 파일시스템의 최상위 "/" 디렉토리 이하의 파일시스템에 대한 위변조 체크를 수행한다(단계 S272). 위변조 체크시에, 해시값을 비교함으로써, 파일 시스템의 각 디렉토리에 존재하는 파일의 변조 및 변경이 없는지가 검증된다.
도 29 및 도 30은 단계 S272의 상세 플로우챠트이다. 우선, 시큐리티 매니저(1205b)는, 파일 시스템 관리 유닛(3602)으로부터, 프로그램 식별자(2001)에 대응하는 파일 리스트 정보(381)을 취득한다(단계 S290). 다음에, 시큐리티 매니저(1205f)는 파일 시스템의 "/" 디렉토리에 주목하고(단계 S291), 주목된 디렉토리에 포함된 파일이 취득된 파일 리스트 정보(381)에 존재하는지를 판정하기 위한 비교를 행한다(단계 S292). 파일이 존재한다고 판정되면(단계 S293에서 yes), 시큐리티 매니저(1205f)는 파일 "ocap.certificates.1" 및 "ocap.storage"와 디렉토리 "a"의 해시값을 계산한다(단계 S294). 디렉토리 "a"의 해시값은 "/a/ocap.hashfile" 파일 (222)로부터 계산된다. 그 다음, 시큐리티 매니저(1205f)는 단계 S294에서 계산된 각 해시값을 "/ocap.hashfile"의 2213에 기술된 각 해시값과 비교한다(단계 S295). 단계 S296에서는, 임의의 계산된 해시값이 2213의 해시값과 상이하다면, 시큐리티 매니저(1205f)는 위변조가 이루어졌다고 판정한다(단계 S299). 한편, 계산된 해시값 모두가 2213의 해시값과 일치하면, 시큐리티 매니저(1205f)는 단계 S297로 이동한다. 파일이 없다고 판정되면(단계 S293에서 no), 시큐리티 매니저(1205f)는 단계 S297로 이동한다.
단계 S297에서는, 위변조 체크가 완료되지 않은 임의의 서브디렉토리가 존재하는지 체크한다. 현 단계에서, "a" 디렉토리는 "/" 디렉토리의 서브 디렉토리로서 존재한다. 따라서, 단계 S298과 같이 위변조 체크를 수행하기 위해 "a" 디렉토리에 주목하고, "/" 디렉토리에 대해 수행된 것과 동일한 처리가 수행된다. "a" 디렉토리에 대한 위변조 체크가 완료된 다음, "a" 디렉토리의 서브 디렉토리인 "b" 디렉토리에 대해 위변조 체크가 수행된다. 모든 디렉토리의 위변조 체크가 완료된 다음, "/" 디렉토리에 주목하고, 도 30의 단계 S301의 처리가 수행된다. 단계 S301에서는, 리프 증명서(2313)가 증명서 체인(231)인 "/ocap.certificates.1" 파일(2131)로부터 추출된다. 그 후, 단계 S302에서는 공개키(2417)가 추출된 리프 증명서(2313)로부터 취출된다. 이어서, 단계 S303에서는, "/ocap.hashfile" 파일(221)의 해시값이 계산된다.
한편, 단계 S304에서는, "/ocap.certificatefile.1" 파일(2131)의 리프 증명서(2313)에 존재하는 공개키(2417)를 사용하여, "/ocap.signaturefile.1" 파일 (2132)의 서명값(242)을 복호화한다. 단계 S305에서는, 단계 S303에서 계산된 해시값이 단계 S304에서 서명값을 복호화하여 취측된 값과 동일한지를 체크한다. 이들 계산된 값들이 일치하면, "/" 디렉토리 이하의 파일 시스템이 위변조되지 않았다고 판정하는 것이 가능하다(단계 S306). 한편, 계산된 값이 일치하지 않으면, 파일 시스템이 위변조되었다고 판정하는 것이 가능하다(단계 S307). 위변조 체크가 최상위 "/" 디렉토리로 시작하여 서브 디렉토리를 향하여 하강하는 순서로 수행되는 실시예에 대해 설명되었지만, 본 발명은 이것에 제한되지 않는다. 따라서, 최하위 디렉토리로부터 시작하여 최상위 디렉토리를 향하여 상승하는 순서로 처리가 수행될 수 있다. 상기 처리를 통해, 도 27의 단계 S272의 결과가 취득된다.
단계 S273에서는, 단계 S272의 결과가 "위변조 있음"이면, 인증 실패라고 판정하여 이 사실을 통지하고(단계 S279), 그 후 처리가 종료된다. 단계 S272의 결과가 "위변조 없음"이면, 단계 S274의 처리를 실행한다.
다음에, 도 31 내지 도 33을 참조하여, 증명서 체인 인증(단계 S274)에 대해 상세히 설명한다. 먼저 중간 증명서(2312) 및 리프 증명서(2313)에 대해 체크를 수행한다고 가정하면, 그에 대한 플로우챠트는 도 31에 도시된다. 우선, 중간 증명서(2312) 및 리프 증명서(2313)가 증명서 체인(231)으로부터 추출된다(단계 S311). 이렇게 추출된 리프 증명서(2313)로부터, 금회의 업데이트 일시(2413), 다음회의 업데이트 일시(2414), 및 발행자명(2415)이 추출된다(단계 S312). 이들 중에서, 현재 일시가 증명서가 유효한 기간인 상기 금회의 업데이트 일시(2413)와 다음회의 업데이트 일시(2414) 사이에 있는지 판정한다(단계 S313). 증명서가 유효한 기간 밖이라면, 증명서 체인의 인증이 실패로 된다(단계 S319). 한편, 증명서의 유효 기간내라고 판정되면, 중간 증명서(2312)의 주체명(2416) 및 공개키(2417)가 추출되고(단계 S314), 중간 증명서(2312)와 리프 증명서(2313)가 체인 관계에 있는지 여부를 판정하기 위해 중간 증명서(2312)의 주체명(2416)과 리프 증명서(2313)의 발행자명(2416) 사이에 비교가 이루어진다(단계 S315).
이들 증명서가 체인 관계에 있지 않으면, 증명서 체인의 인증은 실패이다. 한편, 이들 사이에 체인 관계가 있으면, 리프 증명서(2313)의 속성 영역(241)의 해시값이 계산된다(단계 S316). 또한, 리프 증명서(2313)의 서명값(242)이 중간 증명서(2312)의 공개키(2417)를 가지고 복호화된다(단계 S317). 단계 S316 및 단계 S317이 완료되면, 각 단계에서 취득된 해시값과 복호화된 서명값이 일치하는지 여부를 체크한다(단계 S318). 이들이 일치하지 않으면, 증명서 체인의 인증이 실패로 된다(단계 S319).
다음에, 루트 증명서(2311) 및 중간 증명서(2312) 사이에 체크가 수행된다. 도 32는 이 처리를 도시하는 플로우챠트이다. 루트 증명서(2311) 및 중간 증명서(2312)가 증명서 체인(231)으로부터 추출되고(단계 S321), 중간 증명서(2312) 및 리프 증명서(2313)에 대해 수행된 체크와 동일한 처리가 루트 증명서(2311)와 중간 증명서(2312)에 대해 수행된다(단계 S322 ∼ 단계 S328).
단계 S328에서 값들이 일치한다고 판정되면, 루트 증명서(2311)에 대해 단독으로 체크가 수행된다. 도 33은 루트 증명서(2311)에 대해 단독으로 수행되는 체크를 보여주는 플로우챠트이다. 단계 S321에서 추출된 루트 증명서(2311)로부터, 금 회의 업데이트 일시(2413), 다음회의 업데이트 일시(2414), 및 발행자명(2415)가 추출된다(단계 S331). 이들 중에서, 현재 일시가 증명서가 유효한 기간인 상기 금회의 업데이트 일시(2413)와 다음회의 업데이트 일시(2414) 사이에 있는지를 판정한다(단계 S332). 증명서가 유효한 기간 밖이면, 증명서 체인의 인증이 실패로 된다. 한편, 증명서의 유효기간내로 판정되면, 루트 증명서(2311)의 속성 영역(241)의 해시값이 계산된다(단계 S334). 또한, 루트 증명서(2311)의 서명값(242)이 루트 증명서(2311)의 공개키(2417)를 사용하여 복호화된다(단계 S335). 단계 S334 및 단계 S335가 완료되면, 각 단계에서 취득된 해시값과 복호화된 서명값이 일치하는지 여부를 체크한다(단계 S336). 이들이 일치하면, 증명서 체인의 인증이 성공이고(S337), 반면에, 이들이 일치하지 않으면, 증명서 체인의 인증이 실패로 된다(단계 S338). 이 점에서, 단계 S274의 처리가 끝난다.
단계 S274의 결과에 따라 단계 S275에서 처리가 다르게 수행된다. 단계 S274의 결과가 "증명서 체인의 인증 실패"이면, 인증 실패라고 판정되어 그에 대한 통지가 이루어지고(단계 S279), 그 후 파일 시스템의 인증이 종료된다. 한편, "증명서 체인의 인증 성공"인 경우에, 단계 S276의 처리가 수행된다.
다음에, 단말장치(500)의 2차 저장유닛(510)에서 "/ocap.certificate.1" 파일(2119)의 루트 증명서(2311)와 동일한 증명서를 검색한다(단계 S276). 동일한 증명서가 2차 저장유닛(510)에 존재하지 않으면, 단계 S277에서 증명서 체인(231)의 인증이 실패라고 판정되어, 이 인증 실패에 대해 통지가 이루어지고(단계 S279), 그 후 처리가 종료된다. 한편, 루트 증명서(2311)가 포함되면, 파일 시스템의 인증 이 성공이라고 판정되어 이 인증 성공에 대해 AM(1205b)으로 통지가 이루어진다(단계 S278). 도 28을 참조하면, 그 후에 Java(R) 프로그램에 대한 기동 전치 통지가 수신되더라도(단계 S281), 아무것도 수행되지 않고 처리가 종료된다.
마지막으로, 도 42를 참조하여, AM(1205b) 및 시큐리티 매니저(1205f)에 의해 수행되는 처리의 플로우챠트를 설명한다. Java(R) 프로그램이 저장될 때, AM(1205b)은 파일 리스트 정보를 추출하도록 파일 시스템 비교 유닛(3601)에 요청한다. 이에 응답하여, 파일 시스템 비교 유닛(3601)은 도 39에 도시된 플로우챠트에 따라 처리를 수행한다(단계 S421). 다음에, AM(1205b)은 시큐리티 매니저(1205f)에게 Java(R) 프로그램을 인증하도록 요청한다(인증 예는 다음과 같다: 추출된 파일 리스트 정보에 따른 (버전이 업그레이드된 파일을 포함하는) 새로운 파일의 인증; 새롭게 다운로드된 Java(R) 프로그램의 "/ocap.hashfile"의 위변조 체크(상기 파일의 인증시에 위변조 체크가 이미 수행되었으면 반드시 다시 수행될 필요는 없다); 및 새롭게 다운로드된 Java(R) 프로그램의 증명서 파일의 루트 인증)(단계 S422). AM(1205b)은 인증이 실패인지 여부를 판정하고(단계 S423), 인증 실패가 아니면(즉, 성공이면)(단계 S423에서 no), AM(1205b)은 파일 시스템 저장유닛(3603)에 Java(R) 프로그램을 저장하도록 요청한다. 이에 응답하여, 파일 시스템 저장유닛(3603)은 도 41에 도시된 플로우챠트에 따라 처리를 수행한다(단계 S424).
설명된 바와 같이, 2차 저장유닛(510)에 현재 저장된 Java(R) 프로그램과 새롭게 저장될 Java(R) 프로그램 사이의 차이를 추출함으로써, 이러한 저장될 Java(R) 프로그램의 전체를 인증 및 저장할 필요가 없다. 또한, 일정 시간 경과후 저장된 Java(R) 프로그램이 기동되면, 저장되기 직전에 그 파일 시스템에 대해 인증이 이미 수행되었으므로, 이러한 기동시에 다시 인증을 수행할 필요가 없다. 좀더 구체적으로는, 프로그램 실행시에, 프로그램을 저장할 때 수행된 인증과 동일한 인증을 다시 수행할 필요가 없고, 예를 들어, 단지 루트 인증만 수행될 수 있다.
파일 시스템 저장유닛(3603)은, 이전 저장시에 2차 저장유닛(510)에 저장된 파일 시스템에 포함된 파일 중 하나와 동일한 파일을 다시 저장하지 않고, 이전 저장시에 2차 저장유닛(510)에 저장된 파일 시스템에 포함된 임의의 파일과 상이한 파일을 저장 및 삭제하도록 유도됨에 주의한다. 그러나, 파일 시스템 저장유닛(3603)은 인증을 다시 수행하지 않고 이러한 상이한 파일을 사용하여 동일한 파일을 덮어쓰기할 수 있다.
(제 2 실시형태)
도면을 참조하여 본 발명에 따른 케이블 텔레비전 시스템의 바람직한 실시형태에 대해 설명한다. 도 1은 케이블 시스템을 구성하는 장치들 사이의 관계를 도시한 블록도로서, 헤드 엔드(101), 및 3개의 터미널 장치: 단말장치A(111), 단말장치B(112), 및 단말장치C(113)가 있다. 본 실시형태에서는, 3개의 단말장치가 하나의 헤드 엔드에 접속되지만, 임의의 수의 단말장치가 헤드 엔드에 접속되어도 본 발명을 수행하는 것이 가능하다.
헤드 엔드(101)는, 복수의 단말장치로, 비디오, 오디오 및 데이터와 같은 방송 신호를 송신하고 단말장치로부터 송신된 데이터를 수신한다. 이를 실현하기 위해서, 헤드 엔드(101)와, 단말장치A(111), 단말장치B(112), 및 단말장치C(113) 사 이의 데이터 송신의 사용을 위해 주파수대가 분할된다. 도 2는 분할된 주파수대의 실시예를 도시한 테이블이다. 대략 2개 타입의 주파수대: Out of Band(OOB로서 약칭됨)와 In-Band가 있다. OOB에는 5∼130MHz의 주파수대가 할당되어 헤드 엔드(101)와, 단말장치A(111), 단말장치B(112), 및 단말장치C(113) 사이의 데이터 교환을 위해 주로 사용된다. In-Band에는 130MHz∼864MHz의 주파수대가 할당되어 비디오와 오디오를 포함하는 방송채널에 주로 사용된다. 변조기술로서 OOB에는 QPSK가 채용되는 반면에 In-Band에는 QAM64가 채용된다. 변조기술들은 본 발명과 관계없고 주지이므로, 여기서는 변조기술의 상세한 설명을 생략한다. 도 3은 OOB 주파수대가 어떻게 사용되는지에 대한 좀더 구체적인 실시예를 도시한다. 70MHz∼74MHz의 주파수대는 헤드 엔드(101)로부터 데이터를 전송하는데 사용된다. 이 경우에, 단말장치A(111), 단말장치B(112), 및 단말장치C(113) 모두가 헤드 엔드(101)로부터 동일한 데이터를 수신한다. 한편, 10.0MHz∼10.1MHz의 주파수대는 단말장치A(111)에서 헤드 엔드(101)로 데이터를 송신하는데 사용된다. 10.1MHz∼10.2MHz의 주파수대는 단말장치B(112)에서 헤드 엔드(101)로 데이터를 송신하는데 사용된다. 10.2MHz∼10.3MHz의 주파수대는 단말장치C(113)에서 헤드 엔드(101)로 데이터를 송신하는데 사용된다. 따라서, 단말장치A(111), 단말장치B(112), 및 단말장치C(113)에서 헤드 엔드(101)로 각 단말장치 고유의 데이터를 송신하는 것이 가능해진다. 도 4는 In-Band 주파수대의 사용 실시예를 도시한다. 150∼156MHz와 156∼162MHz의 주파수대는 각각 텔레비전 채널 1과 텔레비전 채널 2에 할당되고, 그 다음의 주파수가 6MHz 간격으로 텔레비전 채널들에 할당된다. 310MHz 및 그 다음의 주파수는 1MHz 간격으 로 라디오 채널에 할당된다. 상기 채널 각각은 아날로그 방송 또는 디지털 방송 어느 쪽으로도 사용될 수 있다. 디지털 방송의 경우에, MPEG2 사양서에 따른 트랜스포트 패킷 포맷으로 데이터가 전송되고, 이 경우에 오디오 및 비디오 데이터에 부가하여 각종 데이터 방송 시스템용 데이터가 송신될 수 있다.
헤더 엔드(101)는, 각 주파수대역에 적합한 방송신호를 송신하기 위해서, QPSK 변조유닛, QAM 변조유닛 등이 구비된다. 또한, 헤드 엔드(101)는 단말장치로부터 데이터를 수신하기 위한 QPSK 복조유닛이 구비된다. 또한, 상기 헤드 엔드(101)는 상기 변조유닛과 복조유닛에 관계된 다양한 장치가 더 구비된다. 그러나, 본 발명은 단말장치에 주로 관계되므로, 여기서는 이들의 상세한 설명을 생략한다.
단말장치A(111), 단말장치B(112), 및 단말장치C(113)는 헤드 엔드(101)에서 송신된 방송신호를 수신하여 재생한다. 또한, 단말장치A(111), 단말장치B(112), 및 단말장치C(113)는 헤드 엔드(101)로 각 단말장치의 고유 데이터를 송신한다. 본 실시형태에서는, 이들 3개의 단말장치가 동일한 구성을 갖는다.
도 5는 각 단말장치의 하드웨어 구성을 도시하는 블록도이다. 500는 단말장치로서, QAM 복조유닛(501), QPSK 복조유닛(502), QPSK 변조유닛(503), TS 디코더(505), 오디오 디코더(506), 스피커(507), 비디오 디코더(508), 디스플레이(509), 2차 저장유닛(510), 1차 저장유닛(511), ROM(512), 입력유닛(513) 및 CPU(514)로 구성된다. 또한, POD(504)는 단말장치(500)에 착탈 가능하다.
도 6은 박형 텔레비전을 도시하며, 이는 단말장치(500)의 외관예이다. 단말장치는 다양한 구성을 실현될 수 있지만, 본 실시형태에서는, OpenCable(TM) 및 OCAP에 기초하여 구성된 단말장치가 실시예로서 설명된다.
601은 박형 텔레비전의 스틸 케이스로서, 그 안에 POD(504)를 제외한 단말장치(500)의 모든 구성이 포함된다.
602는 디스플레이로서, 도 5의 디스플레이(509)에 대응한다.
603은 복수의 버튼으로 구성된 프론트 패널유닛으로서 도 5의 입력유닛(513)에 대응한다.
604는 헤드 엔드(101)와 신호를 송수신하기 위해 케이블선이 접속되는 신호입력단자이다. 상기 신호입력단자는 도 5에 도시된 QAM 복조유닛(501), QPSK 복조유닛(502), 및 QPSK 변조유닛(503)에 접속된다.
605는 도 5의 POD(504)에 대응하는 POD 카드이다. 도 6의 POD 카드(605)의 경우와 같이, POD(504)는 단말장치(500)와 별개로 구현되어 단말장치(500)에 착탈될 수 있다. POD(504)에 대해 나중에 설명한다.
606은 POD 카드(605)가 삽입되는 삽입 슬롯이다.
도 5를 참조하면, QAM 복조유닛(501)은, CPU(514)에 의해 특정된 주파수롤 포함하는 튜닝정보에 따라, 헤드 엔드(101)에서 QAM 변조되어 전송된 신호를 복조하여, POD(504)로 전달한다.
QPSK 복조유닛(502)은, CPU(514)에 의해 특정된 주파수롤 포함하는 튜닝정보에 따라, 헤드 엔드(101)에서 QPSK 변조되어 전송된 신호를 복조하여, POD(504)로 전달한다.
QPSK 변조유닛(503)은, CPU(514)에 의해 특정된 주파수를 포함하는 복조 정 보에 따라, POD(504)로부터 전달된 신호를 QPSK 복조하여, 헤드 엔드(101)로 송신한다.
도 6에 도시된 바와 같이, POD(504)는 단말장치(500)의 본체로부터 분리가능하다. 단말(500)의 본체와 POD(504) 사이의 접속 인터페이스는, OpenCable(TM) CableCARD(TM) Interface Specification(OC-SP-CC-IF-I15-031121) 및 이러한 사양서 의해 참조된 사양서에 정의된다. 이러한 사양서의 CableCARD는 POD를 지시한다. 여기서는, 상세한 설명을 생략하고, 본 발명에 관련된 구성요소에 대해서만 설명한다.
도 7은 POD(504)의 내부 구성을 도시하는 블록도이다. POD(504)는 제 1 디스크램블러 유닛(701), 제 2 디스크램블러 유닛(702), 스크램블러 유닛(703), 1차 저장유닛(704), 2차 저장유닛(705), 및 CPU(706)로 구성된다.
제 1 디스크램블러 유닛(701)은 CPU(706)의 지시하에 단말장치(500)의 QAM 복조유닛(501)로부터 스크램블된 신호를 수신하고, 이러한 신호를 디스크램블한다. 그 후, 제 1 디스크램블러 유닛(701)은 단말장치(500)의 TS 디코더(505)로 디스크램블된 신호를 송신한다. 키와 같이 디스크램블러에 필요한 정보는 필요에 따라 CPU(706)에 의해 제공된다. 좀더 구체적으로는, 헤드 엔드(101)는 몇 개의 유료 채널을 방송하고, 사용자가 이들 유료 채널을 보기 위한 권리를 구입하면, 제 1 디스크램블러 유닛(701)은 CPU(706)로부터 키와 같은 필요한 정보를 수신하여 디스크램블러를 수행한다. 따라서, 사용자가 이들 유료 채널을 볼 수 있다. 키와 같은 필요한 정보가 제공되지 않으면, 제 1 디스크램블러 유닛(701)은 수신된 신호를 디스크 램블링하지 않고 TS 디코더(505)에 직접 전달한다.
제 2 디스크램블러 유닛(702)은 CPU(706)으로부터의 지시하에 단말장치(500)의 QPSK 복조유닛(502)으로부터 스크램블된 신호를 수신하여, 이러한 신호를 디스크램블한다. 그 후, 제 2 디스크램블러 유닛(702)이 디스크램블된 데이터를 CPU(706)로 전달한다.
스크램블러 유닛(703)은, CPU(706)의 지시하에, CPU(706)로부터 수신된 데이터를 스크램블하여, 단말장치(500)의 QPSK 변조유닛(503)으로 전송한다.
1차 저장유닛(704)은, 그 구체적인 구성요소가 RAM과 같은 1차 메모리로서, CPU(706)가 처리를 수행할 때 임시로 데이터를 저장하기 위한 것이다.
2차 저장유닛(705)은, 그 구체적인 구성요소가 플래시 ROM과 같은 2차 저장 메모리요로서, CPU(706)에 의해 실행되는 프로그램을 저장할 뿐만 아니라 전원이 턴오프되었을 때도 삭제되지 않아야 하는 데이터를 저장하기 위한 것이다.
CPU(706)는 2차 저장유닛(705)에 저장된 프로그램을 실행한다. 상기 프로그램은 복수의 서브 프로그램으로 구성된다. 도 8은 2차 저장유닛(705)에 저장된 프로그램의 실시예를 도시한다. 도 8에서, 프로그램(800)은 메인 프로그램(801), 초기화 서브 프로그램(802), 네트워크 서브 프로그램(803), 재생 서브 프로그램(804), 및 PPV 서브 프로그램(805)을 포함하는 복수의 서브 프로그램으로 구성된다.
여기서, PPV는, Pay Per View의 약칭으로서, 사용자가 영화와 같은 특정 프로그램를 유료로 볼수 있게 하는 서비스를 말한다. 사용자가 자신의 개인 식별 넘 버를 입력하면, 사용자가 프로그램을 보기 위한 권리를 구매했다는 사실이 헤드 엔드(10)로 통지되고, 프로그램이 디스크램블된다. 따라서, 사용자가 이러한 프로그램을 볼 수 있다. 이러한 프로그램 시청은 사용자가 후일 구매 비용을 지급하여야 한다.
메인 프로그램(801)은, 전원이 턴온되었을 때 가장 먼저 CPU(706)에 의해 기동되는 서브 프로그램으로서, 다른 서브 프로그램을 제어한다.
전원이 턴온되면 메인 프로그램(801)에 의해 기동되는 초기화 서브 프로그램(802)은 단말장치(50)와 정보교환 등을 수행하여 초기화 처리를 수행한다. 초기화 처리는 OpenCable(TM) CableCARD(TM) Interface Specification(OC-SP-CC-IF-I15-031121) 및 이러한 사양서에 의해 참조되는 사양서에 상세히 정의된다. 또한, 초기화 서브 프로그램(802)은 이들 사양서에 정의되지 않은 초기화 처리를 수행한다. 여기서는, 이러한 초기화 처리의 일부가 소개된다. 전원이 턴온되면, 초기화 서브 프로그램(802)은 단말장치(50)의 CPU(514)를 통해 2차 저장유닛(705)에 저장된 제 1 주파수를 QPSK 복조유닛(502)에 통지한다. QPSK 복조유닛(502)은 제공된 제 1 주파수를 사용하여 튜닝을 수행하여, 그 결과 신호를 제 2 스크램블러 유닛(702)으로 송신한다. 또한, 초기화 서브 프로그램(802)은 2차 저장유닛(705)에 저장된 제 1 키와 같은 디스크램블링 정보를 제 2 디스크램블러 유닛(702)에 제공한다. 결과적으로, 제 2 디스크램블러 유닛(702)은 디스크램블을 수행하여 초기화 서브 프로그램(802)을 실행하는 CPU(706)로 전달한다. 따라서, 초기화 서브 프로그램(802)가 정보를 수신할 수 있다. 본 실시형태에서는, 초기화 서브 프로그램(802)이 네트워 크 서브 프로그램(803)을 통해 정보를 수신한다. 이에 대한 상세한 설명은 후술한다.
또한, 초기화 서브 프로그램(802)은 단말장치(500)의 CPU(514)를 통해 2차 저장유닛(705)에 저장된 제 2 주파수를 QPSK 변조유닛(503)에 통지한다. 초기화 서브 프로그램(802)은 2차 저장유닛(705)에 저장된 스크램블링 정보를 스크램블러 유닛(703)에 제공한다. 초기화 서브 프로그램(802)이, 네트워크 서브 프로그램(803)을 통해, 송신이 요구된 정보를 스크램블러 유닛9703)에 제공하면, 스크램블러 유닛(703)은 제공된 스크램블링 정보를 사용하여 데이터를 스크램블하여, 스크램블된 데이터를 QPSK 변조유닛(503)에 제공한다. QPSK 변조유닛(503)은 수신된 스크램블된 정보를 변조하여, 변조된 정보를 헤드 엔드(101)로 전송한다.
결과적으로, 초기화 서브 프로그램(802)이 단말장치(500), 제 2 디스크램블러 유닛(702), 스크램블러 유닛(703), 및 네트워크 서브 프로그램(803)을 통해, 헤드 엔드(101)와 양방향 통신을 수행하는 것이 가능해진다.
메인 프로그램(801)과 초기화 서브 프로그램(802)과 같은 복수의 서브 프로그램에 의해 사용되는, 네트워크 서브 프로그램(803)은, 헤드 엔드(101)와 양방향 통신을 수행하기 위한 서브 프로그램이다. 좀더 구체적으로는, 네트워크 서브 프로그램(803)은, 네트워크 서브 프로그램(803)을 사용하는 다른 서브 프로그램이 TCP/IP에 따라서 헤드 엔드(101)와 양방향 통신을 수행하는 것처럼, 행동한다. TCP/IP는 복수의 단말 사이에 정보를 교환할 때 사용되는 프로토콜을 특정한 공지의 기술이므로, 여기서는 상세한 설명을 생략한다. 파워온시에 초기화 서브 프로그 램(802)에 의해 기동되면, 네트워크 서브 프로그램(803)은, 단말장치(500)를 통해, 미리 2차 저장유닛(205)에 저장되어 있고 POD(504)를 식별하기 위한 식별자인 MAC(Media Access Control) 어드레스를 헤드 엔드(101)에 통지하여, IP 어드레스를 취득하도록 요구한다. 헤드 엔드(101)는 단말장치(500)를 통해 IP 어드레스를 POD(504)로 통지하고, 네트워크 서브 프로그램(803)은 이러한 IP 어드레스를 1차 저장유닛(704)에 저장한다. 이후, 헤드 엔드(101)와 POD(504)는 이러한 IP 어드레스를 POD(504)의 식별자로서 사용하여 서로 통신한다.
재생 서브 프로그램(804)은 2차 저장유닛(705)에 저장된 제 2 키와 같은 디스크램블링 정보 및 단말장치(500)에 의해 제공된 제 3 키와 같은 디스크램블링 정보를 제 1 디스크램블러 유닛(701)에 제공하여, 디스크램블링이 수행되도록 한다. 또한, 재생 서브 프로그램(804)은, 네트워크 서브 프로그램(803)을 통해, 제 1 디스크램블러 유닛(701)에 입력된 신호가 PPV 채널임을 나타내는 정보를 수신한다. 상기 신호가 PPV 채널이라는 통지에 의해, 재생 서브 프로그램(804)은 PPV 서브 프로그램(805)을 기동시킨다.
PPV 서브 프로그램(805)은, 기동되면, 단말장치(500)에, 사용자의 프로그램 구매를 촉구하는 메시지를 디스플레이하고, 사용자로부터의 입력을 접수한다. 좀더 구체적으로, 스크린에 디스플레이되기 희망하는 정보가 단말장치(500)의 CPU(514)로 전송되고, 단말장치(500)의 CPU(514)에서 구동되는 프로그램이 단말장치(500)의 디스플레이(509)에 메시지를 보여준다. 그 후, 사용자가 단말장치(500)의 입력유닛(513)을 통해 개인 식별 넘버를 입력하면, 단말장치(500)의 CPU(514)가 받아들여 서, POD(504)의 CPU(706)에서 구동하는 PPV 서브 프로그램(805)으로 전송한다. PPV 서브 프로그램(805)은, 헤드 엔드(101)로, 네트워크 서브 프로그램(803)을 통해 접수한 개인 식별 넘버를 전송한다. 이러한 개인 식별 넘버가 유효하면, 헤드 엔드(101)는, 네트워크 서브 프로그램(803)을 통해, 제 4 키와 같은 디스크램블링을 위해 필요한 디스크램블링 정보를 PPV 서브 프로그램(805)에 통지한다. PPV 서브 프로그램(805)은 제 4 키와 같은 상기 접수된 디스크램블링 정보를 제 1 디스크램블러 유닛(701)에 제공하고, 그 후 제 1 디스크램블러 유닛(701)이 입력신호를 디스크램블링한다.
도 5를 참조하면, TS 디코더(505)는 POD(504)로부터 접수된 신호에 대해 필터링을 수행하고, 필요한 데이터를 오디오 디코더(506), 비디오 디코더(508), 및 CPU(514)로 전달한다. 여기서, POD(504)로부터 전송된 신호는 MPEG2 트랜스포트 스트림이다. MPEG2 트랜스포트 스트림에 대한 상세한 설명은 MPEG 사양서 ISO/IEC138181-1에 주어져 있고, 따라서 본 실시형태에서는 상세히 설명하지 않는다. MPEG2 트랜스포트 스트림은 복수의 고정 길이 패킷으로 구성되고, 패킷 ID가 각 패킷에 할당된다. 도 9는 패킷의 구성도이다. 900은 패킷으로서, 고정 길이 188 바이트를 포함한다. 선두 4 바이트는 패킷을 식별하는 정보를 저장하는 헤더(901)이고, 그 밖의 184 바이트는 운반하고자 하는 정보를 저장하는 페이로드(902)이다. 903은 헤더(901)의 브레이크 다운을 보여준다. 패킷 ID는 제 1 내지 제 12 ∼ 제 24 비트의 13비트에 포함된다. 도 10은 송신되는 복수의 패킷 열을 도시한 개략도이다. 패킷(1001)은 그 헤더에 패킷 ID "1"를 포함하고, 그 페이로드에 비디오 A의 제 1 정보를 포함한다. 패킷(1002)은 그 헤더에 패킷 ID "2"를 포함하고, 그 페이로드에 오디오 A의 제 1 정보를 포함한다. 패킷(1003)은 그 헤더에 패킷 ID "3"을 포함하고 그 페이로드에 오디오 B의 제 1 정보를 포함한다.
패킷(1004)은 그 헤더에 패킷 ID "1"을 포함하고 그 페이로드에 비디오 A의 제 2 정보를 포함하고, 이것은 패킷(1001)의 후속 정보이다. 동일하게, 패킷(1005, 1026, 1027)은 다른 패킷의 후속 데이터를 운반한다. 상기의 방식으로, 동일한 패킷 ID의 패킷의 페이로드의 내용을 연결함으로써, 비디오와 오디오를 차례로 재생할 수 있다.
도 10을 참조하면, CPU(514)가, TS 디코더(505)에, 패킷 ID "1" 및 출력처로서 "비디오 디코더(508)"를 지시하면, TS 디코더(505)는 POD(504)로부터 수신된 MPEG2 트랜스포트 스트림으로부터 패킷 ID "1"의 패킷을 추출하여, 비디오 디코더(508)로 전달한다. 도 10에서는, 따라서, 비디오 데이터만 비디오 디코더(508)로 전달된다. 동시에, CPU(514)가, TS 디코더(505)에, 패킷 ID "2" 및 "오디오 디코더(506)"를 지시하면, TS 디코더(505)는 POD(504)로부터 수신된 MPEG2 트랜스포트 스트림으로부터 패킷 ID "2"의 패킷을 추출하여, 오디오 디코더(506)로 전달한다. 도 10에서는, 오디오 데이터만 비디오 디코더(508)로 전달된다.
패킷 ID에 따라 필요한 패킷만 추출하는 처리는 TS 디코더(505)에 의해 수행되는 필터링에 대응한다. TS 디코더(505)는 CPU(514)로부터의 지시에 의해 하나 이상의 필터링 처리를 동시에 수행할 수 있다.
도 5를 참조하면, 오디오 디코더(506)는 TS 디코더(505)에 의해 제공된 MPEG2 트랜스포트 스트림의 패킷에 내장된 오디오 데이터를 연결하고, 연결된 데이터에 대해 디지털-아날로그 변환을 수행하여, 스피커(507)로 출력한다.
스피커(507)는 오디오 디코더(506)에 의해 제공된 신호를 오디오로 출력한다.
비디오 디코더(508)는 TS 디코더(505)에 의해 제공된 MPEG2 트랜스포트 스트림의 패킷에 내장된 비디오 데이터를 연결하고, 연결된 데이터에 대해 디지털-아날로그 변환을 수행하여, 디스플레이(509)로 출력한다.
디스플레이(509)는, 그 구체적인 구성요소가 CRT 또는 액정 등으로서, 비디오 디코더(508)에 의해 제공된 비디오 신호를 출력하여 CPU(514)에 의해 특정된 메시지 등을 디스플레이한다.
2차 저장유닛(501)은, 그 구체적인 구성요소가 플래시 메모리, 하드디스크 등으로서, CPU(514)에 의해 특정된 데이터 및 프로그램을 저장 및 삭제한다. 저장된 데이터 및 프로그램은 CPU(514)에 의해 참조된다. 저장된 데이터 및 프로그램은 단말장치(500)가 파워오프되더라도 저장상태가 유지된다.
1차 저장유닛(511)은, 그 구체적인 구성요소가 RAM 등으로서, CPU(514)에 의해 특정된 데이터 및 프로그램을 임시로 저장하고 삭제한다. 저장된 데이터 및 프로그램은 CPU(514)에 의해 참조된다. 저장된 데이터 및 프로그램은 단말장치(500)가 파워오프되면 삭제된다.
ROM(512)은 읽기만 가능한 메모리 디바이스로서, 그 구체적인 구성요소는 ROM, CD-ROM, 및 DVD 등이다. ROM(512)은 CPU(514)에 의해 실행되는 프로그램을 저 장한다.
입력유닛(513)은, 그 구체적인 구성요오사 프론트 패널 또는 리모트 콘트롤러로서, 사용자로부터의 입력을 접수한다. 도 11은 프론트 패널 형태로 구성된 경우의 입력유닛(513)의 실시예를 도시한다. 1100은 프론트 패널로서, 도 6에 도시된 프론트 패널 유닛(603)에 대응한다. 이러한 프론트 패널(1100)은 7개의 버튼: 업커서 버튼(1101), 다운커서 버튼(1102), 레프트커서 버튼(1103), 라이트커서 버튼(1104), OK 버튼(1105), 취소버튼(1106), 및 EPG 버튼(1107)으로 구성된다. 사용자가 버튼을 누르면, 이렇게 눌러진 버튼의 식별자가 CPU(514)에 통지된다.
CPU(514)는 ROM(512)에 저장된 프로그램을 실행한다. 이러한 실행되는 프로그램의 지시에 따라, CPU(514)는 QAM 복조유닛(501), QPSK 복조유닛(502), QPSK 변조유닛(503), POD(504), TS 디코더(505), 디스플레이(509), 2차 저장유닛(510), 1차 저장유닛(511), 및 ROM(512)을 제어한다.
도 12는 ROM(512)에 저장되어 CPU(514)에 의해 실행되는 프로그램의 구성예를 도시한 도면이다.
프로그램(1200)은 복수의 서브 프로그램으로 구성된다. 좀더 구체적으로는, 프로그램(1200)은 OS(1201), EPG(1202), JavaVM(1203), 서비스 매니저(1204), Java 라이브러리(1205)로 구성된다.
OS(1201)는 단말장치(500)가 파워온되었을 때 CPU(514)에 의해 기동되는 서브 프로그램이다. OS(1201)는 운용 시스템의의 약칭으로서, 그 예로서 Linux 등이 있다. OS(1201)는 다른 서브 프로그램과 평행하게 서브 프로그램을 실행하기 위한 커널(1201A) 및 라이브러리(1201b)로 구성된 공지 기술의 총칭이고, 따라서 상세한 설명을 생략한다. 본 실시형태에서는, OS(1201)의 커널(1201a)이 EPG(1202)와 JavaVM(1203)을 서브 프로그램으로서 실행한다. 한편, 라이브러리(1201b)는 이들 서브 프로그램에 단말장치(500)의 구성요소를 제어하는데 필요한 복수의 기능을 제공한다.
여기서, 이러한 기능들의 예로서 튜닝이 소개된다. 튜닝 기능을 사용하여, 다른 서브 프로그램으로부터 주파수를 포함하는 튜닝 정보가 수신된 후 QAM 복조유닛(51)으로 전달된다. 따라서, QAM 복조유닛(501)이 제공된 튜닝 정보에 의거하여 복조를 수행하여 복조된 데이터를 POD(504)로 전달할 수 있다. 결과적으로, 다른 서브 프로그램은 라이브러리(1201b)를 통해 QAM 복조유닛을 제어할 수 있다.
EPG(1202)는 사용자에게 프로그램 리스트를 디스플레이함과 더불어 사용자로부터 입력을 접수하기 위한 프로그램 디스플레이 유닛(1202a), 및 채널을 선택하기 위한 재생유닛(1102b)으로 구성된다. 여기서, EPG는 Electric Program Guide의 약칭이다. 단말장치(500)가 파워온되면 EPG(1202)가 기동한다. 기동된 EPG(1202)에서는, 프로그램 디스플레이 유닛(1202a)이 단말장치(500)의 입력유닛(513)을 통해 사용자로부터의 입력을 기다린다. 여기서, 입력유닛(513)이 도 11에 도시된 프론트 패널의 형태를 취하는 경우에는, 사용자가 입력유닛(513)의 EPG 버튼(1107)을 누르면, CPU(514)는 이러한 EPG 버튼의 식별자를 통지받는다. EPG(1202)의 프로그램 디스플레이 유닛(1202a)은, CPU(514)에서 구동하는 서브 프로그램으로서, 이 식별자를 접수하여, 디스플레이(509)에 프로그램 정보를 보여준다. 도 13A 및 도 13B는 디스플레이(509)에 디스플레이된 프로그램 테이블의 실시예를 도시한다. 도 13A 참조 바람. 프로그램 정보는 그리드 패턴으로 디스플레이(509)에 디스플레이된다. 컬럼(1301)은 시간 정보를 기술한다. 컬럼(1302)은 채널명 "채널 1"과 컬럼(1301)에 기술된 각 시간에 대응하는 시간 기간 동안 방송될 프로그램을 기술한다. "채널 1"에서 프로그램 "뉴스 9"가 9:00 내지 10:30에 방송되고, "영화 AAA"가 10:30 내지 12:00에 방송되는 것을 보여준다. 컬럼(1303)은, 컬럼(1302)의 경우처럼, 채널명 "채널 2"와 컬럼(1301)에 기술된 각 시간에 대응하는 시간 간격 동안 방송될 프로그램을 기술한다. 프로그램 "영화 BBB"는 9:00 내지 11:00에 방송되고, "뉴스 11"는 11:00 내지 12:00에 방송된다. 1330은 커서이다. 커서(1330)은 프론트 패널(1100)의 레프트커서(1103) 또는 라이트커서(1104)의 누름에 의해 이동한다. 도 13A에 도시된 상태에서 라이트커서(1104)가 눌러지면, 커서(1330)은 도 13B에 도시된 바와 같이 우측을 향하여 이동한다. 한편, 도 13B에 도시된 상태에서 레프트커서(1103)가 눌러지면, 커서(1330)가 도 13A에 도시된 바와 같이 좌측을 향해 이동한다.
도 13A에 도시된 상태에서 프론트 패널(1100)의 OK 버튼(1105)이 눌러지면, 프로그램 디스플레이 유닛(1202a)은 "채널 1"의 식별자를 재생 유닛(1102b)에 통지한다. 한편, 도 13B에 도시된 상태에서 프론트 패널(1100)의 OK 버튼(1105)이 눌러지면, 프로그램 디스플레이 유닛(1202a)은 "채널 2"의 식별자를 재생유닛(1102b)에 통지한다.
또한, 프로그램 디스플레이 유닛(1202a)은 디스플레이될 프로그램 정보를 POD(504)를 통해 헤드 엔드(101)로부터 주기적으로 1차 저장유닛(511)에 저장한다. 일반적으로, 헤드 엔드로부터 프로그램 정보를 취득하는데 시간이 걸린다. 그러나, 입력유닛(513)의 EPG 버튼(1107)을 누를 시 1차 저장장치(511)에 미리 저장된 프로그램 정보를 디스플레이함으로써 프로그램 테이블을 빠르게 디스플레이하는 것이 가능해진다.
재생유닛(1102b)은 수신된 채널 식별자를 사용하여 채널을 재생한다. 채널 식별자와 채널 사이의 관계는 채널정보로서 2차 저장유닛(510)에 의해 미리 저장된다. 도 14는 2차 저장유닛(510)에 저장된 채널 정보의 실시예를 도시한다. 채널 정보는 표 형태로 저장된다. 컬럼(1401)은 채널의 식별자를 기술한다. 컬럼(1402)은 채널명을 기술한다. 컬럼(1403)은 튜닝 정보를 기술한다. 여기서, 튜닝 정보는 주파수, 전송율, 및 부호화율과 같은 QAM 복조유닛(501)에 제공되는 값으로 표현된다. 컬럼(1404)는 프로그램 넘버를 기술한다. 프로그램 넘버는 MPEG2 표준에 의해 규정된 PMT들을 식별하는데 사용되는 넘버이다. PMT에 대해서는 후술한다. 각 라인(1411∼1414)은 각 채널의 식별자, 채널명, 및 튜닝정보의 세트를 가리킨다. 라인(1411)은 식별자로서 "1", 채널명으로서 "채널 1", 튜닝정보로서 "312MHz"의 주파수, 및 프로그램 넘버로서 "101"을 포함하는 세트를 기술한다. 재생유닛(1102b)는, 채널을 재생하기 위해, 수신된 채널의 식별자를 직접 서비스 매니저로 전달한다.
또한, 재생이 이루어지는 동안, 사용자가 프론트 패널(1100)의 업커서(1101) 및 다운커서(1102)를 누르면, 재생유닛(1102b)은 CPU(514)를 통해 입력유닛(513)으로부터 사용자의 누름 통지를 수신하여, 재생되는 채널을 다른 채널로 전환한다. 우선, 재생유닛(1102b)은, 1차 저장유닛(511)에, 현재 재생되는 채널의 식별자를 저장한다. 도 15A, 15B 및 15C는 1차 저장유닛(511)에 저장된 채널의 식별자의 실시예를 도시한다. 도 15A는 식별자 "3"이 저장되는 것을 도시하며, 도 14를 참조로, 채널명 "TV 3"의 채널이 재생되고 있음을 도시한다. 도 15A에 도시된 상태에서, 사용자가 업커서(1101)를 누르면, 재생유닛(1102b)은 도 14에 도시된 채널정보를 참조하여, 테이블내의 이전 채널인, "채널 2"의 채널명을 가진 채널을 새롭게 재생하기 위해, "채널 2"의 채널명을 가진 채널의 식별자 "2"를 서비스 매니저로 전달한다. 동시에, 재생유닛(1102b)이 식별자를 1차 저장유닛(511)에 저장된 채널 식별자 "2"로 재기록한다. 도 15B는 이러한 재기록 채널 식별자를 도시한다. 한편, 도 15A에 도시된 상태에서, 사용자가 다운커서(1102)를 누르면, 재생유닛(1102b)은 도 14에 도시된 채널 정보를 참조하여, 테이블의 다음 채널인, "TV Japan"의 채널명을 가진 채널을 새롭게 재생하기 위해, "TV Japan"의 채널명을 가진 채널의 식별자 "4"를 서비스 매니저로 전달한다. 동시에, 재생유닛(1102b)은 식별자를 1차 저장유닛(511)에 저장된 채널 식별자 "4"로 재기록한다. 도 15C는 이러한 재기록된 채널 식별자를 도시한다.
JavaVM(1203)은 Java(TM) 언어로 기록된 프로그램을 순차적으로 해석 수행하는 Java 버추얼 머쉰이다. Java 언어로 기록된 프로그램은 하드웨어에 의존하지 않는 바이트 코드라고 알려진 중간 코드로 컴파일된다. Java 버추얼 머쉰은 이러한 바이트 코드를 실행하는 인터프리터이다. 일부의 Java 버추얼 머쉰은 바이트 코드를 CPU(514)에 의해 해석될 수 있는 실행가능한 형태로 번역하고 CPU(514)로 전달하여 실행한다. JavaVM(1203)은 커널(1201a)에 의해 실행될 Java 프로그램을 특정 하여 기동한다. 본 실시형태에서는, 커널(1201a)이 실행될 Java 프로그램으로서 서비스 매니저(1204)를 지정한다. Java 언어에 대한 상세는 "Java Language Specification" (ISBN 0-201-63451-1)를 포함하는 많은 책에 주어져 있다. 따라서, 여기서는 이에 대한 상세한 설명을 생략한다. 또한, Java VM 자체의 동작에 대한 상세는 "Java Virtual Machine Specification" (ISBN 0-201-63451-X)를 포함하는 많은 책에 주어져 있다. 따라서, 여기서는 이에 대한 상세한 설명을 생략한다.
Java 언어로 기록된 Java 프로그램인, 서비스 매니저(1204)는 JavaVM(1203)에 의해 순차적으로 실행된다. 서비스 매니저(1204)는 JNI(Java Native Interface)를 통해 Java 언어로 기술되지 않은 다른 서브 프로그램을 호출하거나 호출받는 것이 가능하다. JNI에 대한 설명은 "Java Native Interface"를 포함하는 많은 책에 주어져 있다. 따라서, 여기서는 이에 대한 상세한 설명을 생략한다.
서비스 매니저(1204)는 JNI를 통해 재생유닛(1102b)으로부터 채널의 식별자를 접수한다.
우선, 서비스 매니저(1204)는 튜닝을 요청하기 위해 Java 라이브러리(1205)의 튜너(1205c)로 채널의 식별자를 전달한다. 튜너(1205c)는 2차 저장유닛(510)에 저장된 채널정보를 참조하여 튜닝정보를 취득한다. 서비스 매니저(1204)가 채널의 식별자 "2"를 튜너(1205c)로 전달하면, 튜너(1205c)는 도 14에 도시된 컬럼(1412)를 참조하여, 채널에 대응하는 튜닝정보 "156MHz,"를 취득한다. 튜너(1205c)는 튜닝정보를 OS(1201)의 라이브러리(1201b)를 통해 QAM 복조유닛(501)으로 전달한다. QAM 복조유닛(501)은 QAM 복조유닛(501)에 주어진 튜닝 정보에 따라 헤드 엔드 (101)로부터 전송된 신호를 복조하여, 그 결과 신호를 POD(504)로 전달한다.
다음에, 서비스 매니저(1204)는 디스크램블링을 수행하도록 Java 라이브러리(1205) 내의 CA(1205b)에 요청한다. CA(1205d)는 OS(1201)내의 라이브러리(1201b)를 통해 디스크램블링하는데 필요한 정보를 POD(504)에 제공한다. 이렇게 제공된 정보에 의거하여, POD(504)는 QAM 복조유닛(501)에 의해 제공된 신호를 디스크램블링하고 그 결과 신호를 TS 디코더(505)로 전달한다.
다음에, 서비스 매니저(1204)는 Java 라이브러리(1205) 내의 JMF(1205a)에 채널의 식별자를 제공하여, 비디오 및 오디오의 재생을 요청한다.
우선, JMF(1205a)는, PAT 및 PMT로부터, 재생될 비디오 및 오디오를 특정하는데 사용되는 패킷 ID들을 취득한다. PAT 및 PMT는 MPEG2 트랜스포트 스트림에 포함된 프로그램 라인업을 도시한 MPEG-2 표준에 의해 정의된 테이블이다. PAT 및 PMT는, 오디오 및 비디오와 함께, MPEG2 트랜스포트 스트림에 포함된 패킷의 페이로드로 운반된다. PAT 및 PMT의 상세한 설명은 사양서를 참조 바람. 여기서는, 단지 PAT 및 PMT를 개략적으로 설명한다. PAT는, Program Association Table의 약칭으로서, 패킷 ID "0"의 패킷으로 운반된다. PAT를 취득하기 위해서, JMF(1205a)가, TS 디코더(505)로, OS(1201)의 라이브러리(1201b)를 통해 패킷 ID "0"와 CPU(514)를 지정한다. 그 후, TS 디코더(505)는 패킷 ID "0"에 의거하여 필터링을 수행하여 CPU(514)로 전달한다. 따라서, JMF(1205a)는 PAT 패킷을 수집할 수 있다. 도 16은 수집된 PAT 정보의 실시예를 개략적으로 보여주는 테이블을 도시한다. 컬럼(1601)은 프로그램 넘버를 기술한다. 컬럼(1602)은 패킷 ID들을 기술한다. 컬럼(1602)에 도시된 패킷 ID들은 PAT를 취득하는데 사용된다. 각 라인(1611∼1613)은 채널의 프로그램 넘버와 이에 대응하는 패킷 ID의 쌍이다. 여기서는, 3개의 채널이 정의된다. 라인(1611)은 프로그램 넘버"101" 및 패킷 ID "501"의 쌍이다. JMF(1205a)에 제공된 채널 식별자가 "2"이면, JMF(1205a)는 도 14의 컬럼(1412)을 참조하여, 이러한 채널 식별자에 대응하는 프로그램 넘버 "102"를 취득한 후, 도 16에 도시된 PAT의 라인(1612)을 참조하여 프로그램 넘버 "102"에 대응하는 패킷 ID "502"를 취득한다. PMT는, Program Map Table의 약칭으로서, PAT에서 특정된 패킷 ID의 패킷으로 운반된다. PMT를 취득하기 위해서, JMF(1205a)는, TS 디코더(505)로, OS(1201)의 라이브러리(1201b)를 통해 패킷 ID와 CPU(514)를 지시한다. 여기서, 특정되는 패킷 ID는 "502"이다. 그 후, TS 디코더(505)는 패킷 ID "502"에 의거하여 필터링을 수행하여 CPU(514)로 전달한다. 따라서, JMF(1205a)는 PMT 패킷을 수집할 수 있다. 도 17은 수집된 PMT 정보의 실시예를 개략적으로 보여주는 테이블을 도시한다. 컬럼(1701)은 스트림 타입을 기술한다. 컬럼(1702)은 패킷 ID들을 기술한다. 각 스트림 타입에서 특정된 정보는 컬럼(1702)에서 특정된 패킷 ID의 패킷의 페이로드로 운반된다. 컬럼(1703)은 부가 정보를 기술한다. 각 라인(1711∼1714)은 패킷 ID와 송신되는 정보의 타입의 쌍으로서, 엘리먼트리 스트림(elementary stream)으로 알려져 있다. 라인(1711)은 스트림 타입 "오디오"와 패킷 ID "5011"의 쌍으로서, 오디오 데이터가 패킷 ID "5011"의 패킷의 페이로드에 저장됨을 가리킨다. JMF(1205a)는, PMT로부터, 재생될 비디오 및 오디오의 패킷 ID들을 취득한다. 도 17을 참조하면, JMF(1205a)는 라인(1711)으로부터 오디오 패킷 ID "5011"을 취득하 고, 라인(1712)로부터 비디오 패킷 ID "5012"를 취득한다.
그 후, JMF(1205a)는, OS(1201)의 라이브러리(1201b)를 통해, 취득된 오디오 패킷 ID와 출력처로서 오디오 디코더(506)의 쌍 및 비디오 패킷 ID와 출력처로서 비디오 디코더(508)의 쌍을 TS 디코더(505)에 제공한다. TS 디코더(505)는 이렇게 제공된 패킷 ID 및 출력처에 의거하여 필터링을 수행한다. 여기서, 패킷 ID "5011"의 패킷은 오디오 디코더(506)로 전달되고 패킷 ID "5012"의 패킷은 비디오 디코더(508)로 전달된다. 오디오 디코더(506)는 제공된 패킷에 대해 디지털-아날로그 변환을 수행하여 스피커(507)를 통해 오디오를 재생한다. 비디오 디코더(508)는 제공된 패킷에 대해 디지털-아날로그 변환을 수행하여 디스플레이(509)에 비디오를 디스플레이한다.
마지막으로, 서비스 매니저(1204)는 Java 라이브러리(1205)의 AM(1205b)에 채널 식별자를 제공하여, 데이터 방송 재생을 요청한다. 여기서, 데이터 방송 재생은 MPEG2 트랜스포트 스트림에 포함된 Java 프로그램을 추출하여 JavaVM(1203)이 실행하게 하는 것을 의미한다. MPEG2 트랜스포트 스트림에 Java 프로그램을 내장하는 기술로서, DSMCC로 알려진 방법이 사용되며, 이는 MPEG 사양서 ISO/IEC138181-6에 기술되어 있다. 여기서는 DSMCC의 상세한 설명을 생략한다. DSMCC 사양서는, MPEG2 트랜스포트 스트림의 패킷에서, 컴퓨터에 의해 사용되는 디렉토리 및 파일을 포함하는 파일시스템을 부호화하는 방법을 규정한다. 수행될 Java 프로그램에 대한 정보는 AIT 형태로 MPEG2 트랜스포트 스트림의 패킷으로 운반된다. AIT는 Application Information Table의 약칭으로서 DVB-MHP 표준(정식으로는 ETSI TS 101 812 DVB-MHP 사양서 V1.0.2로 알려짐)의 제 10 장에 정의되어 있다.
우선, AIT를 취득하기 위해서, AM(1205b)은 JMF(1205a)의 경우처럼 PAT 및 PMT를 취득하여, AIT를 저장하는 패킷의 패킷 ID를 취득한다. 제공된 채널 식별자가 "2"이고 도 16에 도시된 PAT와 도 17에 도시된 PMT가 전송되고 있으면, AM(1205b)은 JMF(1205a)와 동일한 절차에 따라 도 17에 도시된 PMT를 취득한다. 이어서, AM(1205b)는, PMT로부터, 스트림 타입이 "데이터"이고 부가정보로서 "AIT"를 가지는 엘리먼트리 스트림의 패킷 ID를 추출한다. 도 17에 도시된 바와 같이, 라인(1713)의 엘리먼트리 스트림은 이러한 엘리먼트리 스트림에 대응하고, 따라서 AM(1205b)은 그로부터 패킷 ID "5013"을 취득한다.
AM(1205b)은 OS(1201)의 라이브러리(1201b)를 통해 AIT의 패킷 ID와 출력처로서 CPU(514)를 TS 디코더(505)에 제공한다. 그 후, TS 디코더(505)는 이렇게 제공된 패킷 ID에 의거하여 필터링을 수행하여 CPU(514)로 전달한다. 따라서, AM(1205b)은 AIT의 패킷을 수집할 수 있다. 도 18은 수집된 AIT 정보의 실시예를 개략적으로 도시한 테이블이다. 컬럼(1801)은 Java 프로그램의 식별자를 기술한다. MHP 사양서에 따르면, 이들 식별자는 어플리케이션 ID로서 정의되어, Java 프로그램이 단말장치(500)의 시큐리티 매니저(1205f)에 의해 인증되어야만 하는 프로그램인지를 식별한다. 식별자의 값이 0x0 내지 0x3fff의 범위내에 있으면 인증을 필요로 하지 않고, 식별자의 값이 0x4000 내지 0x7fff의 범위내에 있으면 인증을 필요로 한다. 식별자값이 첫번째 범위내에 있는 Java 프로그램을 "서명되지 않은 프로그램"이라 하고, 식별자값이 두번째 범위내에 있는 Java 프로그램을 "서명된 프로 그램"이라 한다. 컬럼(1802)은 Java 프로그램을 제어하기 위한 제어정보를 기술한다. 상기 제어정보는 "autostart", "present", 및 "kill"을 포함한다. "autostart"는 단말장치(500)가 자동적으로 프로그램을 즉시 실행하는 것을 의미한다. "present"는 프로그램이 자동적으로 실행되지 않는 것을 의미한다. "kill"은 프로그램이 종료되는 것을 의미한다. 컬럼(1803)은 DSMCC 포맷의 Java 프로그램을 포함하는 패킷 ID들을 추출하는데 사용되는 DSMCC 식별자를 기술한다. 컬럼(1804)은 Java 프로그램의 프로그램명을 기술한다. 각 라인(1811, 1812)은 Java 프로그램에 대한 정보의 세트이다. 라인(1811)에 규정된 Java 프로그램은 식별자 "301", 제어정보 "autostart", DSMCC 식별자 "1", 및 프로그램명 "a/TopXlet"의 세트이다. 라인(1812)에 규정된 Java 프로그램은 식별자 "302", 제어정보 "present", DSMCC 식별자 "1", 및 프로그램명 "b/GameXlet"의 세트이다. 여기서, 이들 2개의 Java 프로그램은 동일한 DSMCC 식별자를 가진다. 이것은 2개의 Java 프로그램이 동일한 DSMCC 방법에 따라 부호화된 파일 시스템에 포함됨을 가리킨다. 여기서, 오직 4개의 정보만 각 Java 프로그램에 대해 특정되지만, 실제로는 더 많은 정보가 특정될 수 있다. 상세는 DVB-MHP 사양서를 참조 바람.
AM(1205b)은 AIT로부터 "autostart" Java 프로그램을 찾아, 대응하는 DSMCC 식별자 및 Java 프로그램명을 추출한다. 도 18을 참조하면, AM(1205b)은 라인(1811)의 Java 프로그램을 추출하여, DSMCC 식별자 "1" 및 Java 프로그램명 "a/TopXlet"를 취득한다.
다음에, AM(1205b)은, PMT로부터, AIT로부터 취득된 DSMCC 식별자를 사용하 여, DSMCC 포맷으로 Java 프로그램을 저장하는 패킷의 패킷 ID를 취득한다. 좀더 구체적으로는, AM(1205b)은, PMT로부터, 스트림 타입이 "데이터"이고 부가정보의 DSMCC가 일치하는 엘리먼트리 스트림에 포함된 패킷 ID를 취득한다.
여기서, 이러한 DSMCC 식별자가 "1"이고 PMT가 도 17에 도시된 것이면, 라인(1714)의 엘리먼트리 스트림은 상기 조건을 만족한다. 따라서, 패킷 ID "5014"가 추출되는 것이다.
AM(1205b)는 OS(1201)의 라이브러리(1201b)를 통해 DSMCC 포맷으로 데이터가 내장된 패킷의 패킷 ID 및 출력처로서 CPU(514)를 TS 디코더(505)에 지시한다. 여기서, 패킷 ID "5014"가 제공된다. 그 후, TS 디코더(505)는 제공된 패킷 ID에 의거하여 필터링을 수행하여 CPU(514)로 전달한다. 따라서, AM(1205b)은 필요한 패킷을 수집할 수 있다. AM(1205b)은 DSMCC 방식에 따라 수집된 패킷으로부터 파일 시스템을 재구성하고, 재구성된 파일 시스템을 1차 저장유닛(511)에 저장한다. MPEG2 트랜스포트의 패킷으로부터 파일 시스템과 같은 데이터를 추출하여 추출된 데이터를 1차 저장유닛(511)과 같은 저장유닛에 저장하는 처리를, 이하 다운로드라 한다.
도 19는 다운로드된 파일 시스템의 실시예를 도시한다. 도면에서, 원은 디렉토리를 나타내고, 사각형은 파일을 나타내는데, 1901은 루트 디렉토리, 1902는 디렉토리 "a", 1903은 디렉토리 "b", 1904는 파일 "TopXlet.class", 1905는 파일 "GameXlet.class"이다.
이어서, AM(1205b)은, JavaVM(1203)으로, 1차 저장유닛(511)에 다운로드된 파일 시스템 중에서 실행될 Java 프로그램을 전달한다. 여기서, 실행될 Java 프로 그램명이 "a/TopXlet"이면, 상기 Java 프로그램명에 ".class"를 덧붙인 파일 "a/TopXlet.class"가 실행될 파일이다. "/"는 디렉토리와 파일명 사이의 구획문자이고, 도 19에 도시된 바와 같이, 파일(1904)은 실행될 Java 프로그램이다. 다음에, AM(1205b)은, Java 프로그램의 식별자를 기술하는 컬럼(1801)이 서명되지 않은 프로그램을 가리키므로 파일(1904)를 JavaVM(1203)으로 전달하고, 이러한 Java 프로그램의 인증을 수행하도록 시큐리티 매니저(1205f)에 요청할 필요가 없음을 의미한다.
JavaVM(1203)은 이러한 수신된 Java 프로그램을 실행한다.
다른 채널의 식별자를 수신함에 따라, 서비스 매니저(1204)는, 동일한 라이브러리(1205)에 포함된 각 라이브러리를 통해, 라이브러리(1205)에 포함된 각 라이브러리를 통해 수행되는 Java 프로그램의 실행 및 비디오와 오디오의 재생을 종료한 다음, 새롭게 수신된 채널 식별자에 의거하여 Java 프로그램의 실행 및 비디오와 오디오의 재생을 수행한다.
Java 라이브러리(1205)는 ROM(512)에 저장된 복수의 Java 라이브러리의 집합이다. 본 실시형태에서, Java 라이브러리(105)는 JMF(1205a), AM(1205b), 튜너(1205c), CA(1205d), POD Lib(1205e), 시큐리티 매니저(1205f), 다운로드 모듈(1206) 등을 포함한다.
서비스 매니저(1204) 및 다운로드 모듈(1206)은 Java 라이브러리(1205)에 포함된 POD Lib(1205e)를 통해 헤드 엔드(101)와 양방향 통신을 수행한다. 이 양방향 통신은 OS(1201)의 라이브러리(1201b) 및 POD(504)를 통해 QPSK 복조유닛(502) 및 QPSK 변조유닛(503)을 사용하여 POD Lib(1205e)에 의해 실현될 수 있다.
다운로드 모듈(1206)은 이러한 통신을 통해 헤드 엔드(101)로부터 코드 데이터를 수신할 수 있다. 코드 데이터는 X.509 증명서 및/또는 단말장치(500)의 펌웨어를 포함하는 바이너리 데이터를 말한다. 도 50은 본 발명에 관련된 부분만 기술한 코드 데이터를 도시한 개략도이다. 코드 데이터(5000)를 수신하면, 다운로드 모듈(1206)이 그 안에 포함되어 있다면 루트 증명서(5001)를 추출하여, 시큐리티 매니저(1205f)로 전달한다. 5002는 펌웨어와 같은 다른 데이터를 가리킨다.
AM(1205b)이, 헤드 엔드(101)로부터, 단말장치(500)가 2차 저장유닛(510)에 저장해야만 하는 Java 프로그램에 대한 정보를 수신한다. 이러한 정보를 XAIT 정보라 한다. XAIT 정보는 헤드 엔드(101)와 POD(504) 사이에 임의의 형태로 송신된다. 본 발명은 XAIT로서 요구된 정보가 포함되는 한, 송신 포맷에 상관없이 수행될 수 있다.
도 43은 헤드 엔드(101)로부터 취득된 XAIT 정보의 실시예를 개략적으로 도시한 테이블이다. 컬럼(4301)은 Java 프로그램의 식별자를 기술한다. 컬럼(4302)은 Java 프로그램을 제어하기 위한 제어정보를 기술한다. 제어정보는 "autostart" 및 "present"를 포함한다. "autostart"는 단말장치(500)가 파워온되면 자동적으로 실행되는 프로그램을 의미하고, "present"는 프로그램이 자동적으로 실행되지 않는 것을 의미한다. 컬럼(4303)은 DSMCC 포맷의 Java 프로그램을 포함하는 패킷 ID를 추출하는데 사용되는 DSMCC 식별자를 기술한다. 컬럼(4304)은 Java 프로그램의 프로그램명을 기술한다. 컬럼(4305)은 Java 프로그램의 우선순위를 기술한다. 각 라 인(4311, 4312)은 각 Java 프로그램에 대한 정보의 세트이다. 라인(4311)에 정의된 Java 프로그램은 식별자 "0x7001", 제어정보 "autostart", DSMCC 식별자 "1", 및 프로그램명 "a/PPV1Xlet"의 세트이다. 그 Java 프로그램 어플리케이션 ID로부터 이 Java 프로그램이 서명된 프로그램이라는 것을 알 수 있다. 여기서는, 5개의 정보만 각 Java 프로그램에 대해 특정되지만, 본 발명은 더 많은 정보가 정의될 때에도 수행될 수 있다.
XAIT 정보를 수신하면, AIT 정보로부터 Java 프로그램을 다운로드하기 위한 것과 동일한 절차에 따라, AM(1205b)이 MPEG2 트랜스포트 스트림으로부터 파일 시스템을 1차 저장유닛(511)에 저장한다. 이후, 파일 시스템을 2차 저장유닛(510)에 저장하기 직전에 AM(1205b)이 시큐리티 매니저(105f)에 저장 전치 통지를 수행한다. 이때, 본 발명에 따른 시큐리티 매니저(1205f)에 의해 인증 동작이 시작되는데, 그 상세는 후술한다. 시큐리티 매니저(1205f)로부터 기동이 가능하다고 통지되면, AM(1205b)이 파일 시스템을 2차 저장유닛(510)에 저장한다. 다음에, AM(1205b)은, 2차 저장유닛(510)에, 다운로드된 파일 시스템의 저장 위치와 XAIT 정보를 연관시켜서 저장한다. 도 44는 XAIT 정보와 다운로드된 파일 시스템이 서로 연관되어 2차 저장유닛(510)에 저장된 실시예를 도시한다. 여기서, OCAP 사양서에 정의된 파일을 예로서 설명한다. 도 43과 동일한 도 44의 구성요소에 대한 설명을 생략한다. 컬럼(4401)은 다운로드된 파일 시스템의 저장 위치를 저장한다. 도면에서, 이러한 저장위치는 화살표로 지시된다. 4410은 다운로드된 파일 시스템으로서, 최상위 디렉토리(4411), 디렉토리 "a"(4412), 디렉토리 "b"(4413), 파일 "PPV1Xlet.class"(4414), 파일 "PPV2Xlet.class"(4415), 파일 "ocap.hashfile"(4416∼4418), 파일 "ocap.certificate.1"(4419), 및 파일 "ocap.signaturefile.1"(4420)이 포함된다.
파일(4416∼4418)은 파일명 또는 디렉토리명 및 대응하는 해시값이 포함된 해시 파일이다. 도 45A, 45B 및 45C는 "ocap.hashfile"들의 상세를 도시하는 개략도이다. 도 45A에서 451은 "ocap.hashfile"(4416)을 나타내며, 도 45B의 452는 "ocap.hashifle"(4417)을 나타내고, 도 45C의 453은 "ocap.hashfile"(4418)을 나타낸다. 451의 "ocap.hashfile"은 "/" 디렉토리(4411)에 존재하는 것으로, 컬럼(4511)에, 동일한 디렉토리(4411)에 존재하는 "ocap.certificate.1" 파일(4419), "ocap.signaturefile.1" 파일(4420), "a" 디렉토리(4412), 및 "b" 디렉토리(4413)를 포함한다. 컬럼(4512)은 해시 알고리즘이 컬럼(4513)에 기술된 각 값을 계산하는데 사용됨을 가리킨다. 컬럼(4513)은 컬럼(4511)의 파일 또는 디렉토리에 관련된 것으로, 컬럼(4512)에 특정된 해시 알고리즘을 사용하여 계산되는 해시값을 포함한다. 현재, 주로 사용되는 해시 알고리즘은 SHA1(Secure Hash Algorithm 1) 및 MD5(Message Digest 5)이다. 이들은 임의의 길이의 데이터를 고정 길이의 바이트 값으로 변환하는 공지의 알고리즘으로서, 다음과 같은 특성을 가진다: 변환 후 원데이터를 예측하는 것이 불가능하다; 그리고 파일이 파손됐는지 위변조됐는지를 체크하는데 이들이 사용된다. 한편, 해시값은 해시 알고리즘의 사용에 의해 생성된 의사 랜덤 넘버이다. 해시 알고리즘이 SHA1일 때, 해시값의 길이는 20 바이트이고, 해시 알고리즘이 MD5일 때, 해시값의 길이가 16 바이트로 변환된다. SHA1 및 MD5에 대한 상세를 위해, "FIPS-PUB 186-2 Secure Hash Standard" 및 "IETF RFC1321"을 각각 참조바람. 여기서, 컬럼(4511)에 기술된 각 디렉토리 "a"와 "b"에 대응하는 해시값은, "a" 디렉토리에 존재하는 "ocap.hashfile" 파일(4417)과 "b" 디렉토리에 존재하는 "ocap.hashfile" 파일(4418)에 대해 각각 계산된 SHA1 해시값들이다.
451의 "ocap.hashfile"의 경우에서 처럼, 452의 "ocap.hashfile"은, 동일한 디렉토리(4412)에 존재하는, "PPV1Xlet.class" 파일(4414)의 파일명, 해시 알고리즘, 및 해시값을 포함한다. 동일하게, 453에는 동일 디렉토리(4413)에 존재하는 "PPV2Xlet.class" 파일(4415)의 파일명, 해시 알고리즘, 및 해시값이 포함된다.
여기서는, 본 발명에 관련된 속성만 기술되고, 그래서 OCAP 사양서 "OpenCable(TM) Application Platform Specification OCAP 1.0 Profile(OC-SP-OCAP1.0-IF-I09-031121)"이 "ocap.hashfile"에 대한 상세를 위해 참조되어야만 한다.
파일(4419)은 증명서 체인이다. 도 23은 "ocap.certificate.1" 파일(4419)의 상세한 구성을 도시하는 도면이다. 231은 "ocap.certificate.x"(x는 양의 정수)의 전형적 구성을 묘사한 것으로, 루트 증명서(2311), 중간 증명서(2312), 및 리프 증명서(2313)를 포함한다. 이들은, 예를 들어, 루트 증명서(2311)의 소유자가 중간 증명서(2312)를 발행하고, 중간 증명서(2312)의 소유자가 리프 증명서(2313)를 발행하는 체인 관계에 있다. OCAP 사양서에 따르면, 서명 파일 "ocap.signaturefile.x"에 관계된 증명서 체인은 동일한 값 "x"를 갖는 "ocap.certificate.x"이다. 도 44의 경우에, "ocap.signaturefile.1"에 대응하는 증명서 체인은 "ocap.certificate.1"이다. 또한, 루트 증명서(2311), 중간 증명서(2312), 및 리프 증명서(2313)는 동일한 X.509 증명서 포맷으로 구성된다. X.509 증명서는, ITU-T의 리코멘데이션으로서, 증명서 표현 포맷의 디팩토(de facto) 표준으로서 정보통신산업의 각 분야에서 널리 사용된다. 도 23에서는, 3개의 증명서만 도시되었지만, 복수의 중간 증명서가 존재하는 경우도 있다. 그러나, 이 경우에는, 이들 중간 증명서들이 서로 관련된 체인 상태로 있어야만 한다.
도 24는 X.509 증명서의 구성을 도시하는 도면이다. 여기서는, 본 발명을 설명하는데 필요한 속성만을 설명한다. X.509 증명서에 대한 상세는, IETF RFC3280 "Internet X.509 Public Key Infrastructure Certificate and CRL Profile"을 참조 바람. 241는 X.509 증명서의 속성영역을 가리키고, 242는 X.509 증명서의 서명값을 가리킨다. 시리얼 넘버(2411)는 증명서를 식별하기 위한 넘버를 가리키고, 서명 알고리즘(2412)은 서명값(242)을 결정하는데 사용되는 알고리즘을 가리키며, 금회의 업데이트 일시(2413)는 이 X.509 증명서가 유효하게 될 때의 일시를 가리키고, 다음회의 업데이트 일시(2414)는 이 X.509 증명서가 만료할 때의 일시를 가리키며, 발행자명(2415)은 이 X.509 증명서를 발행한 기관의 명칭을 가리키고, 주체명(2416)은 이 X.509 증명서의 소유자를 가리키며, 공개키(2417)는 주체명(2416)의 공개키를 가리키고, 서명값(242)은 이 X.509 증명서의 발행자의 비밀키로 서명(암호화)된 값을 가리킨다. 이 실시형태에서는, 금회의 업데이트 일시(2413)와 다음회의 업데이트 일시(2414)는 일시의 정보를 필요로 하지만, 금회의 업데이트 일시(2413)와 다음회의 업데이트 일시(2414)는 시간 정보를 항상 필요로 하는 것은 아 니다. 공개키 및 비밀키를 활용하는 시스템으로서, 공개키 암호체계가 전자상거래 등에 널리 사용된다. 공개키 암호체계에 있어서, 암호화된 텍스트가 평문을 암호화하는데 사용된 키와 상이한 키로 복호화된다. 암호화용 키와 복호화용 키가 서로 다르므로, 복호화용 키로부터 암호화용 키를 추정하는 것이 불가능하다. 이 암호화용 키는 비밀키에 대응하고 이 복호화영 키는 공개키에 해당한다. 공개키 암호체계의 대표적인 예는 RSA(Rivest-Shamir-Adleman) 및 DSA(Digital Signature Standard)를 포함한다.
파일(4420)은 서명파일이다. 도 25는 "ocap.signaturefile.1" 파일(4420)을 도시하는 개략도이다. 251은 X.509 증명서가 관계됨을 식별하기 위한 증명서 식별자를 가리키고, 252는 해시 서명 알고리즘을 가리키며, 253은 252에서 지시된 해시 서명 알고리즘을 사용하여 "ocap.hashfile"(4416)로부터 계산된 서명값을 가리킨다.
일단 Java 프로그램이 2차 저장유닛(510)에 저장되면, 채널 변경 및 단말장치(500)의 파워오프와 같은 원인에 의해 Java 프로그램이 1차 저장유닛(511)에서 삭제되는 경우에도, AM(1205b)이 도 20에 도시된 XAIT를 수신하기만 하면 다운로드를 위해 기다릴 필요없이 이러한 Java 프로그램을 기동시키는 것이 가능하다. 즉, 도 43에서는, 프로그램 "/a/PPV1Xlet"의 제어정보(4302)가 "autostart"이다. 그래서, 도 44의 4311에서는, "/a/PPV1Xlet"에 대응하는 파일시스템의 저장위치(4401)에 대해 검색이 이루어진 다음 파일(4414)이 JavaVM(1203)으로 전달되면, 이러한 파일 시스템에 저장된 Java 프로그램 "PPV1Xlet"이 기동된다.
다음에, 본 발명의 주요 기능성인 시큐리티 매니저(1205f)에 대해 설명한다.
시큐리티 매니저(1205f)가, 서비스 매니저(1204)로부터, 도 43의 4304에서 지시된 "/a/PPV1Xlet" 및 "/b/PPVXlet2"가 이제 막 저장되려고 함을 나타내는 저장 전치 통지를 수신한다. 이러한 통지를 수신하면, 시큐리티 매니저(1250f)는 Java 프로그램 식별자(4301)의 값을 체크하여 서명되지 않은 프로그램 또는 서명된 프로그램인지를 판정한다. 여기서는, Java 프로그램이 서명된 프로그램이므로, 시큐리티 매니저(1205f)는 "/" 디렉토리 이하의 파일 시스템의 인증을 수행한다. 파일 시스템을 검증하기 위해서, 도 44에 도시된, ocap.hashfiles(4416∼4418), ocap.certificate.1(4419) 및 ocap.signaturefile.1(4420)를 사용하여 인증을 수행한다.
도 26은 파일 시스템의 인증을 수행하기 위한 시큐리티 매니저(1205f)의 구성요소를 도시한다.
통지 수신 유닛(261)은, AM(1205f)이 이제 파일 시스템을 막 저장하기 직전에 저장 전치 통지를 수신하고 이러한 사실을 판정 유닛(262)에 통지하기 위한 것이다.
판정 유닛(262)은 인증 결과를 판정한다. 해시 계산 유닛(263)이 파일 시스템의 해시 계산을 요구하여 해시값을 수신한다. 판정 유닛(262)이, "ocap.hashfile" 파일에 존재하는 해시값(4513, 4523, 4533) 중에서, 비교될 값을 추출하여 수신된 해시값과 일치하는지를 체크한다. 일치하지 않으면, 판정 유닛(262)은 위변조되었다고 판정하고, 인증이 실패로 끝난다.
또한, 판정 유닛(262)은 증명서 추출 유닛(265)을 사용하여 각 X.509 증명서를 추출하고, 현재시간이 각 X.509 증명서의 금회의 업데이트 일시(2413) 이전이 아니고 각 X.509 증명서의 다음회의 업데이트 일시(2414) 이후가 아닌지를 판정한다(즉, 현재시간이 각 X.509 증명서의 금회의 업데이트 일시(2413)와 다음회의 업데이트 일시(2414) 사이에 있다). 현재 일시는 OS(1201)의 라이브러리(1201b)부터 취득된다. 유효기간이 "금회의 업데이트 일시 < 현재의 일시 < 다음회의 업데이트 일시"를 만족하지 않으면, 판정 유닛(262)은 인증 실패라고 판정한다.
또한, 증명서 체인을 인증하기 위해서, 판정 유닛(262)은 각 X.509 증명서의 속성 영역(241)의 해시 계산을 행하도록 해시 계산 유닛(263)에 요청한다. 그 후, 각 X.509 증명서에 포함된 서명값(242)을 복호화하기 위한 계산을 행하도록 서명값 복호화 유닛(264)에 요구하고, 복호화된 값을 해시값 계산 유닛(263)에 의해 취득된 해시값과 비교하여 증명서 체인의 상태를 체크한다. 이들이 일치하지 않으면, 증명서가 체인 관계가 아님을 의미하므로, 인증 실패라고 판정된다. 한편, 이러한 값들이 일치하고 증명서들이 체인 관계에 있다고 검증되면, 증명서 체인의 루트 증명서가 단말장치(500)의 2차 저장유닛(510)에 포함되는지가 체크된다. 포함되지 않으면, 비교를 수행할 수 없다는 점에서, 판정 유닛(262)은 인증 실패라고 판정한다.
판정 유닛(262)는 다음의 모두를 만족하면 인증 성공이라고 판정한다: (1) 위변조이 없다; (2) 기간 유효성이 있다; (3) 증명서들이 체인 관계에 있다; (4) 루트 증명서들이 일치한다.
각 파일의 해시값을 계산하도록 판정 유닛(262)에 의해 요구되면, 해시 계산 유닛(263)은 OS(1201)의 라이브러리(1201b)로부터 각 파일을 추출하여 이들의 해시 계산을 수행하고, 결과값을 판정 유닛(262)으로 전달한다. 또한, 해시 계산 유닛(233)은 증명서 추출 유닛(265)으로부터 증명서 체인(231)의 각 X.509 증명서를 취득하여, 이들 각각의 속성 영역(241)의 해시 계산을 수행한다.
서명값 복호화 유닛(264)은 판정 유닛(262)에 의해 X.509 증명서 또는 "ocap.signaturefile.x"의 서명값을 복호화하는 계산을 수행하도록 요청받는다. 각 X.509 증명서의 서명을 복호화하기 위해 계산을 수행할 때, 서명값 복호화 유닛(264)은 증명서 추출 유닛(265)으로부터 증명서 체인(231)의 각 X.509 증명서를 취득한 후, 이들 각각의 서명을 복호화하기 위한 계산을 수행하여 판정 유닛(262)으로 리턴시킨다.
증명서 추출 유닛(265)은, 판정 유닛(262), 해시 계산 유닛(263), 및 서명값 복호화 유닛(264)에 의해 증명서 체인(231)의 각 X.509 증명서를 추출하도록 요청받아, X.509 증명서를 추출하여 리턴시킨다.
도 27은 파일 시스템의 인증을 수행할 때 시큐리티 매니저(1205f)에 의해 수행되는 동작을 요약한 플로우챠트이다. 이 플로우챠트에 의거하여, 파일 시스템이 도 21에 도시된 구성을 가지는 경우에 수행되는 동작에 대해 설명한다. AM(1205b)으로부터 파일 시스템의 저장 전치 통지를 수신하면(단계 S271), 시큐리티 매니저(1205f)는 파일시스템의 최상위 "/" 디렉토리 하위의 파일 시스템에 대한 위변조 체크를 수행한다(단계 S272). 위변조 체크시에, 해시값을 비교함으로써, 파일 시스 템의 각 디렉토리에 존재하는 파일의 변조 또는 변경이 없는지가 검증된다.
도 46 및 도 30은 단계 S272의 상세 플로우챠트이다. 우선, 단계 S461에 도시된 바와 같이, 해시값이 "/" 디렉토리에 존재하는 각 디렉토리 "a" 및 "b"와 각 파일 "ocap.certificate.1" 및 "ocap.signaturefile.1"에 대해 계산된다. 디렉토리 "a" 및 "b"의 해시값이 "/a/ocap.hashfile" 파일(452)과 "/b/ocap.hashfile" 파일(453)로부터 각각 계산됨에 주의한다. 단계 S463에서는, 단계 S462에서 계산된 해시값이 "/ocap.hashfile"의 4513에 기술된 각 해시값과 비교된다. 단계 S464에서는, 임의의 계산된 해시값이 4513의 해시값과 상이하면, 위변조가 이루어졌다고 판정한다(단계 S467). 한편, 계산된 해시값 모두가 4513의 해시값과 일치하면, 시큐리티 매니저(1205f)는 단계 S465로 이동한다. 단계 S465에서는, 위변조 체크가 완료되지 않은 임의의 서브디렉토리가 존재하는지 체크한다. 현 단계에서, 디렉토리 "a" 및 "b"는, 위변조 체크가 아직 수행되지 않은, "/" 디렉토리의 서브 디렉토리로서 존재한다. 따라서, 이들 디렉토리 "a" 및 "b"에 대해 위변조 체크를 수행할 필요가 있다. 우선, 단계 S466에서 "a" 디렉토리에 주목하고, "/" 디렉토리에 대해 수행된 것과 동일한 처리가 수행된다. "a" 디렉토리에 대한 위변조 체크가 완료된 후, "b" 디렉토리에 대한 위변조 체크가 수행된다. 디렉토리 "a" 및 "b"에 대한 위변조 체크가 완료되면, 그 후 "/" 디렉토리에 주목하여, 도 30의 단계 S301에 대한 처리가 수행된다. 단계 S301에서는, 리프 증명서(2313)가 증명서 체인(231)인 "/ocap.certificate.1"로부터 추출된다. 그 후, 단계 S302에서는 공개키(2417)가 추출된 리프 증명서(2313)로부터 취출된다. 이어서, 단계 S303에서는, "/ocap.hashfile" 파일(451)의 해시값이 계산된다. 한편, 단계 S304에서는, "/ocap.certificatefile.1" 파일(4419)의 리프 증명서(2313)에 존재하는 공개키(2417)를 사용하여, "/ocap.signaturefile.1" 파일(4420)의 서명값(242)을 복호화한다. 단계 S305에서는, 단계 S303에서 계산된 해시값이 단계 S304에서 서명값을 복호화하여 취득된 값과 같은지를 체크한다. 이들 계산된 값들이 일치하면, "/" 디렉토리 하위의 파일 시스템이 위변조되지 않았다고 판정하는 것이 가능하다(단계 S306). 한편, 계산된 값이 일치하지 않으면, 파일 시스템이 위변조되었다고 판정하는 것이 가능하다(단계 S307). 위변조 체크가 최상위 "/" 디렉토리로부터 시작하여 서브디렉토리를 향하여 하강하는 순서로 수행되는 실시예에 대해 설명하였지만, 본 발명은 이것에 제한되지 않는다. 따라서, 최하위 디렉토리로부터 시작하여 최상위 디렉토리를 향하여 상승하는 순서로 처리가 수행될 수 있다. 상기 처리를 통해, 도 27의 단계 S272의 결과가 취득된다.
단계 S273에서는, 단계 S272의 결과가 "위변조 있음"이면, 인증 실패라고 판정하여 이 사실을 통지하고(단계 S279), 그 후 처리가 종료된다. 단계 S272의 결과가 "위변조 없음"이면, 단계 S274의 처리를 실행한다.
다음에, 도 31 내지 도 33을 참조하여, 증명서 체인 인증(단계 S274)에 대해 상세히 설명한다. 먼저, 중간 증명서(2312) 및 리프 증명서(2313)에 대해 체크를 수행한다고 생각하면, 그에 대한 플로우챠트는 도 31에 도시된다. 우선, 중간 증명서(2312) 및 리프 증명서(2313)가 증명서 체인(231)으로부터 추출된다(단계 S311). 이렇게 추출된 리프 증명서(2313)로부터, 금회의 업데이트 일시(2413), 다음회의 업데이트 일시(2414), 및 발행자명(2415)이 추출된다(단계 S312). 이들 중에서, 현재 일시가 상기 금회의 업데이트 일시(2413)와 다음회의 업데이트 일시(2414) 사이에 있어 증명서가 유효한지 판정한다(단계 S313). 증명서가 유효 기간 밖이라면, 증명서 체인의 인증이 실패로 된다(단계 S319). 한편, 증명서의 유효 기간내라고 판정되면, 중간 증명서(2312)의 주체명(2416) 및 공개키(2417)가 추출되고(단계 S314), 중간 증명서(2312)와 리프 증명서(2313)가 체인 관계에 있는지 여부를 판정하기 위해 중간 증명서(2312)의 주체명(2416)과 리프 증명서(2313)의 발행자명(2415) 사이에 비교가 이루어진다(단계 S315). 이들 증명서들이 체인 관계에 있지 않으면, 증명서 체인의 인증은 실패이다. 한편, 이들 사이에 체인 관계가 있으면, 리프 증명서(2313)의 속성 영역(241)의 해시값이 계산된다(단계 S316). 또한, 리프 증명서(2313)의 서명값(242)이 중간 증명서(2312)의 공개키(2417)로 복호화된다(단계 S317). 단계 S316 및 단계 S317이 완료되면, 각 단계에서 취득된 해시값과 복호화된 서명값이 일치하는지 여부를 체크한다(단계 S318). 이들이 일치하지 않으면, 증명서 체인의 인증이 실패로 된다(단계 S319).
다음에, 루트 증명서(2311)와 중간 증명서(2312) 사이에 체크가 수행된다. 도 32는 이 처리를 도시하는 플로우챠트이다. 루트 증명서(2311)와 중간 증명서(2312)는 증명서 체인(231)으로부터 추출되고(단계 S321), 중간 증명서(2312) 및 리프 증명서(2313)에 대해 수행되는 체크와 동일한 처리가 루트 증명서(2311)와 중간 증명서(2312)에 대해 수행된다(단계 S322 ∼ 단계 S328).
단계 S328에서 값들이 일치한다고 판정되면, 루트 증명서(2311)에 대해 단독 으로 체크가 수행된다. 도 33은 루트 증명서(2311)에 대해 단독으로 수행될 체크를 보여주는 플로우챠트이다. 단계 S321에서 추출된 루트 증명서(2311)로부터, 금회의 업데이트 일시(2413), 다음회의 업데이트 일시(2414), 및 발행자명(2415)가 추출된다(단계 S331). 이들 중에서, 현재 일시가 상기 금회의 업데이트 일시(2413)와 다음회의 업데이트 일시(2414) 사이에 있어 증명서가 유효한지를 판정한다(단계 S332). 증명서가 유효한 기간 밖이면, 증명서 체인의 인증이 실패로 된다. 한편, 증명서의 유효기간내로 판정되면, 루트 증명서(2311)의 속성 영역(241)의 해시값이 계산된다(단계 S334). 또한, 루트 증명서(2311)의 서명값(242)이 루트 증명서(2311)의 공개키(2417)로 복호화된다(단계 S335). 단계 S334 및 단계 S335가 완료되면, 각 단계에서 취득된 해시값과 복호화된 서명값이 일치하는지 여부를 체크한다(단계 S336). 이들이 일치하면, 증명서 체인의 인증이 성공이고(S337), 이들이 일치하지 않으면, 증명서 체인의 인증이 실패로 된다(단계 S338). 이 점에서, 단계 S274의 처리가 끝난다.
단계 S274의 결과에 따라 단계 S275에서 처리가 다르게 수행된다. 단계 4의 결과가 "증명서 체인의 인증 실패"이면, 인증 실패라고 판정되어 그에 대한 통지가 이루어지고(단계 S279), 그 후 파일 시스템의 인증이 종료된다. 한편, "증명서 체인의 인증 성공"인 경우에, 단계 S276의 처리가 수행된다.
다음에, 단말장치(500)의 2차 저장유닛(510)에서 "/ocap.certificate.1" 파일(2119)의 루트 증명서(2311)과 동일한 증명서를 검색한다(단계 S276). 동일한 증명서가 2차 저장유닛(510)에 존재하지 않으면, 단계 S277에서 증명서 체인(231)의 인증이 실패라고 판정되어, 이 인증 실패에 대해 통지가 이루어지고(단계 S279), 그 후 처리가 종료된다. 한편, 루트 증명서(2311)가 포함되면, 파일 시스템의 인증이 성공이라고 판정되어 이 인증 성공에 대해 AM(1205b)으로 통지가 이루어진다(단계 S278). 그 후에, 도 28을 참조하여, Java 프로그램에 대한 기동 전치 통지가 수신되더라도(단계 S281), 아무것도 수행되지 않고 처리가 종료된다.
제 2 실시형태에서는, 파일 시스템이 저장되기 직전에 이미 인증되므로, 일정 시간 후 저장된 Java 프로그램이 기동될 때, 인증을 수행할 필요가 없다.
여기서, 도 47에 도시된 "application description file"이 파일 시스템에 존재하고, 그 안에 기술된 파일만 저장되는 경우에 대해 설명한다.
OCAP 사양서에 따르면, 예를 들어, "application description file"이 XML(eXtensible Markup Language) 포맷으로 기술된다. 도 47은 "application description file"의 일예를 도시한다. 도 47에서는, 도 44에 도시된 "PPV2Xlet.class"(4415)의 기술내용이 없다. 따라서, 이 경우에는, "PPV2Xlet.class" (4415)은 저장 타겟으로서 포함되지 않는다. 이 경우, S462에서, "PPV2Xlet.class" (4415)에 대해 해시값이 계산되지 않고, 그래서 S463에서 "ocap.hashfile"에 기술된 4533의 해시값과 비교되지 않는다. 단계 S464에서는, 저장 타겟으로서 포함되지 않은 파일이 활용되지 않음을 규정함으로써 S465의 처리로의 천이가 이루어질 수 있다.
(제 3 실시형태)
파일 시스템에 포함된 Java 프로그램(PPV1Xlet.class (4414) 또는 PPV2Xlet.class (4415))이 파일 시스템이 저장된 후 일정 기간 후에 기동되면, "/ocap.certificate.1" 파일(4419)에 포함된 X.509 증명서 중 하나의 유효성이 만료할 가능성이 있다(즉, Java 프로그램의 기동 일시 > 다음회의 업데이트 일시(2414)). 그러나, 제 2 실시형태는, 이미 만료된 X.509 증명서가 증명서 체인(231)에 포함되더라도, Java 프로그램이 기동될 수 있게 한다.
그래서, 본 실시형태는, 제 2 실시형태에, Java 프로그램의 기동시, 증명서 체인(231)에 포함된 각 증명서(2311, 2312 및 2313)의 유효성이 만료되지 않음을 검증하는 기능을 부가하여 이루어진다. 도 26은 본 실시형태의 구성요소를 도시한다. 본 실시형태에 필요한 구성요소(261∼265)는 제 2 실시형태에서 이미 설명되었고, 따라서 여기서는 그 설명을 하지 않는다.
플로우챠트로서, 도 27의 플로우챠트가 도 48의 플로우챠트로 교체되고 도 49의 플로우챠트가 부가된다.
도 48을 참조하면, 파일 시스템이 저장되기 직전에 수행되는 처리(단계 S481 내지 단계 S487)는 제 2 실시형태에 설명된 처리(단계 S271 내지 단계 S277)와 동일하고, 따라서, 그 설명을 생략한다. 인증 실패가 아니면, 도 49에 도시된 플로우챠트로 처리가 진행한다. Java 프로그램인 PPV1Xlet.class (4414)가 일정 기간 후 기동됨이 통지되면(단계 S491), 각 X.509 증명서, 즉, 루트 증명서(2311), 중간 증명서(2312), 및 리프 증명서(2313)이 "ocap.certificate.1" 파일(4419)로부터 추출된다(단계 S492). 그 후, 추출된 X.509 증명서들이 리프 증명서에서 시작하여 루트 증명서까지 하나씩 차례로 선택되고(단계 S493), 현재 일시가 각 선택된 X.509 증 명서의 금회의 업데이트 일시(2413)와 다음회의 업데이트 일시(2414) 사이에 있는지를 체크한다(단계 S494). 현재 일시가 금회의 업데이트 일시(2413)와 다음회의 업데이트 일시(2414) 사이에 있지 않으면, 인증 실패라고 판정하고 이러한 사실에 대해 통지가 이루어진다(단계 S497). 이외의 경우에는, 모든 X.509 증명서들에 대해 체크가 수행됐는지 여부를 체크한다(단계 S495). 모든 X.509 증명서에 대해 체크가 이루어지지 않았으면, 처리가 S493으로 리턴되어, 그 이하의 처리가 반복된다. 한편, 단계 S495에서 모든 X.509 증명서들이 이미 체크되었으면, 인증 성공이라고 판정하여, 이 인증 성공에 대해 통지가 이루어지고(단계 S496), 그 후 처리가 종료한다. 도 49의 플로우챠트에 도시된 처리를 부가함으로써, AM(1205b)에 인증 실패를 통지하는 것이 가능해져 유효 기간이 만료된 Java 프로그램이 기동되지 않는다. 시큐리티 매니저(1205f)에 의해 인증 실패가 통지되면, AM(1205b)은 이러한 Java 프로그램을 JavaVM(1203)으로 전달하지 않고 기동을 중단한다.
(제 4 실시형태)
제 2 실시형태에 설명된 바와 같이, 2차 저장유닛(510)은 루트 증명서인 X.509 증명서를 포함하고, 이것은 증명서 체인(231)의 루트 증명서(2311)와 비교된다. 2차 저장유닛((510)에 저장된 루트 증명서는, 해킹 등에 의해 증명서의 신용성이 저하되는 경우에 대비하여, 새로운 X.509 증명서로 교체된다(이하 증명서 교체라 한다). 새로운 X.509 증명서는 헤드 엔드(101)로부터 단말장치(500)로 송신되어 다운로드 모듈(106)을 통해 시큐리티 매니저(1205f)로 분배된다.
도 51A, 51B, 및 51C는 각각 시큐리티 매니저(1205f)에 의해 교체(증명서 교 체)되는 2차 저장유닛(510)의 루트 증명서를 도시한다. 이 경우에, 증명서A(5101)는 교체될 이전의 증명서이고, 증명서B(5102)는 새로운 증명서이다. 도 51A의 51-1은 증명서 교체가 행해지기 전에 2차 저장유닛(510)에 저장된 증명서를 도시하고, 도 51B의 51-2는 교체되는 도중의 증명서를 도시하며, 도 51C에서의 51-3은 증명서 교체가 행해진 후에 2차 저장유닛(510)에 저장된 증명서를 도시한다.
제 2 실시형태 및 제 3 실시형태에서는, Java 프로그램이 저장된 후 증명서 교체가 행해질 때, Java 프로그램의 기동시에 새로운 증명서에 대한 고려가 이루어지지 않는다. 예를 들어, 시큐리티 매니저(1205f)가 그 저장 전치 통지에 응답하여 Java 프로그램을 인증하고 있을 때 증명서 체인(231)의 루트 증명서(2311)가 증명서A(5101)와 일치하고, 증명서A(5101)가 증명서B(5102)로 교체된 후 시큐리티 매니저(1205f)가 Java 프로그램에 대한 기동 전치 통지를 수신한다고 생각하자. 이 시점에서, 2차 저장유닛(510)은 증명서 체인(231)의 루트 증명서(2311)와 일치하는 임의의 증명서를 포함하지 않으므로, 이러한 증명서가 신용성 없음을 의미한다. 그러나, 제 2 실시형태 및 제 3 실시형태에서는, Java 프로그램의 기동 직전에 루트 증명서들 사이에 비교가 이루어지지 않으므로(즉, 증명서 체인(231)의 루트 증명서(2311)가 증명서B(5102)와 비교되지 않는다), AM(1205b)에 인증 실패 통지가 이루어지지 않는다. 결과적으로, AM(1205b)은 Java 프로그램이 기동되게 한다.
그래서, 본 실시형태에는 Java 프로그램 기동시에 증명서 교체를 고려하여 루트 증명서의 비교를 수행하는 기능이 부가된다.
도 26은 본 실시형태의 구성요소를 도시한다. 구성요소(261∼265)는 이미 설 명되었고 따라서 그 설명을 생략한다. 증명서 교체 유닛(266), 증명서 교체 특정 유닛(267), 및 증명서 수신 유닛(268)이 부가된다.
증명서 교체 특정 유닛(267)이 수신된 증명서 이전의 증명서가 2차 저장유닛(510)에 저장되었다고 판정하면, 증명서 교체 유닛(266)은 이러한 이전의 증명서를 새로운 증명서로 교체한다. 한편, 증명서 교체 특정 유닛(267)이 이전의 증명서가 저장되지 않다고 판정하면, 증명서 교체 유닛(266)은 새로운 증명서를 2차 저장유닛(510)에 저장한다.
증명서 교체 특정 유닛(267)은 증명서 수신 유닛(268)에 의해 수신된 증명서를 수신한다. 그 후, OS(1201)의 라이브러리(1201b)를 사용하여, 발행자가 동일하고 수신된 증명서 이전의 임의의 증명서가 있는지를 찾기 위해 2차 저장유닛(510)에 저장된 증명서를 체크한다.
증명서 수신 유닛(268)은, 다운로드 모듈(1206)이 헤드 엔드(101)로부터 이로한 새로운 증명서를 수신할 때, 새로운 증명서를 수신한다. 증명서를 수신하면, 증명서 수신 유닛(268)은 증명서 교체 유닛(266) 및 증명서 교체 특정 유닛(267)으로 전달한다.
또한, 도 52 및 도 53이 도 48의 플로우챠트에 이어서 부가된다.
도 52는 증명서 교체를 수행할 때의 플로우챠트이고, 도 53은 증명서 교체가 수행된 후 Java 프로그램을 기동시킬 때의 플로우챠트이다. 도 52를 참조하면, 증명서 교체 요구가 수신되면(단계 S521), 이러한 수신된 증명서의 발행자명이 추출된다(단계 S522). 교체될 필요가 있는 이전의 증명서가 단말장치(500)의 2차 저장 유닛(510)에 존재하는지 체크되고(단계 S523), 이전의 증명서가 존재할 때만, 이러한 증명서가 삭제된다. 그 다음, 수신된 증명서는 2차 저장유닛(510)에 저장된다(단계 S525). 일정 기간의 시간 후 Java 프로그램의 기동 통지가 수신되면(단계 S531), 2차 저장유닛(510)에서 증명서 체인(231)의 루트 증명서(2311)와 일치하는 증명서를 검색되고(단계 S532), 존재하면(단계 S533), 인증 성공이라고 판정하여 이 사실에 대한 통지가 이루어진다(단계 S534). 일치하는 증명서가 없으면(단계 S533), 증명 실패라고 판정하여 이 사실에 대한 통지가 이루어진다(단계 S535). 단계 S534에서 인증 성공이라고 판정되기 전에, 증명서 체인의 각 X.509 증명서가 "금회의 업데이트 일시 < 현재 일시 < 다음회의 업데이트 일시"를 만족함을 검증한 후 인증 성공이라고 결론내리는 것도 가능하다.
또한, 루트 증명서들이 일치하는지 체크하는 것에 부가하여, 단계 S532 이전에, 증명서 체인의 증명서들이 체인 관계인지 여부를 알기 위해 도 31∼ 도 33에 도시된 체크를 수행한 후 인증 성공/실패를 판정하는 것도 가능하다.
또한, 상기에서는 교체되어야 하는 증명서가 발행자명에 의거하여 특정된 경우에 대해 설명하였지만, 증명서는 주체명과 같은 또 다른 속성값에 의거하여 특정될 수도 있다.
(제 5 실시형태)
파일 시스템에 포함된 Java 프로그램(PPV1Xlet.class (4414) 또는 PPV2Xlet.class (4415))이 이러한 파일 시스템이 저장된 다음 일정 기간 후 기동될 때, "/ocap.certificate.1"에 포함된 임의의 X.509 증명서의 유효성이 만료되고 루 트 증명서가 교체되는 것 이외의 이유에 의해 증명서가 실효(失效)되는 경우가 있다. 본 구성은 실효된 증명서가 존재하는 경우에도 Java 프로그램이 기동될 수 있게 한다.
여기서, CRL(Certificate Revocation List)이 널리 알려진 증명서의 실효(失效) 장치이다. 도 54는 CRL의 구성을 도시한 도면이다. 여기서는, 본 발명을 설명하는데 필요한 속성들만 도시되었다. CRL의 상세에 대해서는, IETFRF C3280 "Internet X.509 Public Key Infrastructure Certificate and CRL Profile"을 참조 바람. 541은 CRL의 속성 영역을 가리키고, 542는 서명값(543)의 서명 알고리즘을 가리키며, 543은 CRL의 서명값을 가리킨다. 발행자명(5411)은 이 CRL의 발행자를 가리키고, 금회의 업데이트 일시(5412)는 CRL이 유효하게 될 때의 일시를 가리키며, 다음회의 업데이트 일시(5413)는 CRL의 유효성이 만료될 때의 일시를 가리키고, 실효된 증명서 리스트(5414)는 실효된 X.509 증명서에 대한 정보를 가리킨다. 도 55는 실효된 증명서 리스트(5414)의 구성을 도시한 도면이다. 여기서도, 본 발명을 설명하는데 필요한 속성만 도시된다. 복수의 실효된 X.509 증명서에 대한 정보는 실효된 증명서 리스트(5414)에 저장된다. 도 55의 경우에는, 실효된 "certificate A"(551)에 대한 정보로서, 증명서를 고유 식별하기 위한 시리얼 넘버(5511) 및 "certificate A" (551)이 실효됐을 때의 일시(5512)가 포함된다. 다른 실효된 증명서들도 551과 같다.
도 56은 CRL을 포함하는 파일 시스템의 구성 실시예이다. "/" 디렉토리(561), "a" 디렉토리(562), "SimpleXlet.class" 파일(563), "ocap.hashfile" 파일 (564∼565), "ocap.certificate.1" 파일(566), "ocap.signaturefile.1" 파일(567), "ocap.crl.2" 파일(568), 및 "ocap.certificate.2" 파일(569)가 내부에 저장된다. CRL을 포함하지 않는 파일 시스템의 인증은 제 1 실시형태에 설명된 바와 같다. 그래서, 본 실시형태에서는 CRL 포맷으로 구성된 "ocap.crl.2" 파일(568) 및 이러한 파일의 증명서 체인인 "ocap.certificate. 2" 파일(569)에 대해 주목한다. OCAP 사양서에 따르면, "ocap.crl.x"의 증명서 체인은 "ocap.certificate.x"이다. 도 56의 경우에는, "ocap.crl.2"의 증명서 체인은 "ocap.certificate.2"이다.
도 59는 "ocap.hashfile" 파일(564)을 도시하는 개략도이다. 591은 ocap.hashfile(564)의 상세를 보여준다. 591의 ocap. hashfile은 "/" 디렉토리(561)에 존재하는 것으로, 동일한 디렉토리(561)에 존재하는, "ocap.certificate.1" 파일(566), "ocap.signatrefile.1" 파일(567), "a" 디렉토리(562), "ocap.crl.2" 파일(568), 및 "ocap.certificate.2" 파일(569)의 각각에 관련된 해시값을 포함한다.
도 57은 CRL의 인증을 설명하기 위한 플로우챠트이다. 파일 시스템이 도 56에 도시된 구성을 가지는 실시예에 대해 다음에 설명한다. 우선, 금회의 업데이트 일시(5412)와 다음회의 업데이트 일시(5413)가 CRL로부터 추출되고(단계 S571), 현재 일시가 상기 금회의 업데이트 일시(5412)와 다음회의 업데이트 일시(5413) 사이에 있는지 체크한다(단계 S572). 없으면, 이 CRL은 무효한 것으로 판정된다(단계 S577). 현재 일시가 그들 사이에 있으면, "ocap.crl.2" 파일(568)의 서명값을 검증하기 위해 속성 영역(541)의 해시값이 계산된다(단계 S573). 동시에, 리프 증명서 (2313)의 공개키(2417)가, 증명서 체인인, "ocap.certificate.2" 파일(569)로부터 추출되고(단계 S574), "ocap.crl.2" 파일(568)의 서명값(543)이 추출된 공개키(2417)로 복호화된다(단계 S575). 다음에, 단계 S573에서 취득된 해시값이 단계 S575에서 취득된 복호화된 값과 같은지를 체크한다(단계 S576). 이들이 같지 않으면, CRL이 무효하다고 판정한다(단계 S577). 이들이 같으면, 도 58을 참조하여, 증명서 체인인 "ocap.certificate.2" 파일(569)에 대해 인증을 수행한다(단계 S581). 증명서 체인을 인증하는 방법은, 도 31 내지 도 33에 도시된 것과 동일하며, 따라서 여기서는 설명하지 않는다. 이어서, 증명서 체인의 인증이 성공인지 여부를 판정하고(단계 S582), 인증 실패이면, 이 CRL이 무효한 것으로 판정된다(단계 S586). 한편, 인증이 성공이면, 2차 저장유닛(510)에서 루트 증명서와 동일한 증명서를 검색한다(단계 S583). 여기서, 일치하는 루트 증명서가 없으면, 인증 실패이고 이 CRL이 무효하다고 판정하고(단계 S586), 반면에 일치하는 루트 증명서가 포함되면, 인증 성공이고 CRL이 유효하다고 판정한다(단계 S585).
CRL에 따라 증명서가 실효됨에도 불구하고 Java 프로그램이 기동되는 문제점에 대한 해결 방안을 다음에 설명한다. 이를 뒷받침하기 위해, 본 실시형태는, Java 프로그램에 대한 기동 통지가 이루어질 때, Java 프로그램을 인증하는데 사용되는 증명서가 CRL에서 실효된 것인지 여부를 판정하는 기능이 추가되었다.
도 26은 본 실시형태의 구성 요소를 도시한다. 일부 부가가 이루어진 262와 아직 설명되지 않은 269를 제외하고, 상기에서 설명된 구성 요소에 대해서는 설명하지 않는다.
판정 유닛(262)은, 또한 CRL을 인증할 수 있는 것으로, CRL에 의해 실효될 증명서를 특정하도록 증명서 실효 특정 유닛(269)에 요구한다. 다음에, 통지 수신 유닛(261)이 증명서 실효 특정 유닛(269)에 의해 특정된 실효된 증명서에 관련되는 Java 프로그램의 기동 전치 통지를 수신하면, 판정 유닛(262)은 인증 실패라고 판정한다. 한편, 판정 유닛(262)이 CRL을 인증하는데 실패했고 따라서 이러한 CRL이 무효하다고 판정된 상태에서 통지 수신 유닛(261)이 Java 프로그램의 기동 전치 통지를 수신하면, 판정 유닛(262)은 인증 성공이라고 판정한다.
판정 유닛(262)이 CRL의 인증 성공을 인식하면, 증명서 실효 특정 유닛(269)은 증명서 추출 유닛(265)에 의해 추출된 X.509 증명서 중 하나가 실효된 증명서라고 특정한다.
플로우챠트로서, 도 60 및 도 61이 부가된다. 이들 플로우챠트에 따라 다음의 설명이 이루어진다. 도 44에 도시된 파일 시스템의 저장 전치 통지가 지금 이루어졌다고 가정하면, 도 48의 플로우챠트에 도시된 처리가 시작되고, 단계 S487의 처리가 적당한 때에 완료된다. 그 후 도 56에 도시된 다른 파일 시스템의 저장 전치 통지가 접수되었다고 가정하면, 도 57의 플로우챠트에 도시된 처리가 완료된 후 단계 S6001 내지 단계 S6007이 실행된다. 단계 S6001 내지 단계 6007의 처리는 단계 S481 내지 단계 S487과 동일한다. 단계 S6008에 도달되었을 때 그리고 "ocap.crl.2" 파일(563)의 인증(도 57 및 도 58의 플로우챠트)이 성공이면, 이러한 파일에 포함된 실효된 증명서에 대한 정보가 실효된 증명서들의 데이터 베이스에 기록된다. 도 62는 실효된 증명서들의 데이터 베이스를 도시한 개략도이다. 발행자 명은 컬럼(621)에 저장되고, 증명서 시리얼 넘버는 컬럼(622)에 저장되며, 실효 일시는 컬럼(623)에 저장된다. 여기서, "PPV1Xlet.class" (4414)에 대한 기동 전치 통지가 접수되면(단계 S611), "ocap.certificate.1" 파일(4419)의 증명서 체인(231)에 포함된 임의의 X.509 증명서가 실효된 증명서들의 데이터베이스에 포함되는지를 체크한다(단계 S613). 임의의 증명서들이 적용되면, 인증 실패라고 판정하여 이에 대해 통지한다(단계 S616). 한편, 적용가능한 증명서가 없으면, 전체 증명서 체인에 대해 체크를 행하고(단계 S614), 인증 성공 판정 통지가 이루어진다(단계 S615). 상기 처리를 통해, 검증시 증명서가 유효하지만 Java 프로그램의 기동시까지 CRL에 의해 실효된 파일 시스템에 대해 파일의 인증이 실패라고 판정함으로써, 기동되지 않아야 하는 Java 프로그램이 기동되는 문제점을 해결할 수 있다.
제 1 내지 제 5 실시형태에서는, Java 프로그램의 기동 전치 통지가 수신되면, 각 디렉토리에 배치된 "ocap.hashfile"을 사용하여 파일 시스템의 트리 구조가 정확한지 여부를 확인하도록 검증을 더 수행하는 것도 가능하다.
또한, 간소화를 위해 증명서 체인에 1개의 중간 증명서만 있지만, 복수의 중간 증명서가 있을 수 있다. 그러나, 모든 중간 증명서는 그 증명서 체인의 인증이 수행될 때 체인 관계에 있을 필요가 있다.
또한, 다음의 처리가 기재 순서로 기술되었지만, 본 발명은 이러한 순서에 제한되지 않는다: 위변조의 존재 여부 체크; 증명서 체인의 인증; 2차 저장유닛이 증명서 체인의 루트 증명서와 동일한 루트 증명서를 포함하는지를 확인하기 위한 체크.
또한, 파일 시스템의 저장에 대해, 시큐리티 매니저(1205f)는 OS의 라이브러리(1201b)를 사용하여 저장할 수 있다. 또한, 제 1 내지 제 5 실시형태는 "application description file"이 파일 시스템의 최상위 디렉토리 "/"에 제공된 경우에도 적용 가능하며, 그 내용으로서, 파일 시스템의 일부만이 저장될 파일로서 지시된다. 그래서, 저장될 파일만 취급된다면 문제가 발생하지 않는다.
또한, 상기에서는 프로그램이 저장 타겟으로서 기술되었지만, 프로그램 이외의 데이터가 저장 타겟이 될 수 있으므로, 제 1 내지 제 5 실시형태가 데이터에도 적용될 수 있다.
또한, 적어도 하나의 "ocap.certificate.x" 파일의 인증이 성공될 필요가 있는 경우에, 하나 이상의 "ocap.certificate.x"가 "ocap.signaturefile.x"에 대응할 가능성이 있다.
또한, "ocap.certificate.x"가 증명서 체인의 실시예로서 제공되고, "ocap.hashfile"이 해시값을 가지는 파일의 실시예로서 제공되며, "/" 디렉토리의 "ocap.hashfile"이 위변조되었는지 여부를 체크하기 위한 파일의 실시예로서 "ocap.signaturefile.x"이 제공되었지만, 본 발명은 이들 파일명에 제한되지 않는다.
또한, 인증 실패의 경우에, 재다운로드 후, 인증이 다시 수행될 수 있다.
또한, 인증 실패의 경우에, 저장된 프로그램뿐만 아니라 인증을 위해 사용된 증명서 체인, 서명 파일, 해시 파일이 저장영역의 충분한 용량 확보를 위해 삭제될 수 있다.
여기서는, 프로그램을 구성하는 파일 시스템이 도 63에 도시된 구성을 가지는 경우에 대해 설명되었고, 도 64에 도시된 "application description file"의 경우처럼 인증을 위해 사용될 파일에 대해 설명하지 않았다. 도 63에 도시된 6311 내지 6320은 도 44에 도시된 4411 내지 4420와 동등하다. 6321은 저장될 파일을 설명하는 "application description file"을 나타낸다. 도 64의 "application description file"에는, 인증을 위해 필요한 "ocap.certificate.1" (6319), "ocap.signaturefile.1" (6320), 및 "ocap.hashfile" (6317)에 대한 설명이 없다. 이 경우에는, 도 64에 도시된 바와 같이 파일이 저장되면, 인증을 수행하는데 필요한 파일이 저장되지 않는다. 그래서, 제 3, 제 4, 제 5 실시형태에서 제공된 인증은 기동시에 수행될 수 없다. 저장된 프로그램이 기동되면, 도 63에 도시된 파일은, 프로그램이 저장되기 전의 파일을 도시하는 것으로, 다운로드용으로 준비되며, 저장된 파일은 프로그램을 구성하는 파일로서 사용될 수 있고 인증을 위해 사용되는 파일이 인증에 사용하기 위해 다시 다운로드될 수 있다.
그러나, 도 63에 도시된 파일은, 프로그램이 저장되기 전의 파일을 보여주는 것으로, 다운로드될 수 없는 경우가 있을 수 있다. 따라서, "application description file"에 기술되어 있지 않더라도, 인증을 위해 필요한 파일이 프로그램 기동시에 수행될 인증의 사용을 위해 저장될 수 있다.
비록, 상기에서는 본 발명의 일부 예시적인 실시형태만 설명하였지만, 당업자라면 본 발명의 신규한 가르침 및 이점으로부터 실질적으로 벗어나지 않고 본 발명의 예시적인 실시형태에서 많은 변형이 가능함을 쉽게 인정할 것이다. 따라서, 이러한 모든 변형은 본 발명의 범위내에 포함된다.
본 발명에 따른 프로그램 데이터 파일 저장 방법 및 인증된 프로그램 실행 방법은 디지털 텔레비전 수신기 및 이동 전화기와 같은, 프로그램을 다운로드하여 실행하는 프로그램 실행 장치에 적용할 수 있다.

Claims (24)

  1. 제 1 트랜스포트 스트림에 포함된 제 1 프로그램의 각 데이터 파일을 인증하고, 상기 제 1 프로그램의 각 데이터 파일의 저장에 관한 정보에 따라 상기 제 1 프로그램의 각 인증된 데이터 파일을 방송 수신기에 저장하는 제 1 단계;
    제 2 트랜스포트 스트림에 포함된 제 2 프로그램의 각 데이터 파일의 저장에 관한 정보를 수신하는 제 2 단계; 및
    상기 제 2 프로그램의 데이터 파일이 상기 제 1 프로그램을 저장시 인증되어 있는 상기 제 1 프로그램의 임의의 데이터 파일과는 상이한 데이터 파일을 포함하는 경우에 실행되는 다음의 단계들을 포함하고,
    상기 다음의 단계들은,
    2개의 해시값이 일치하는지 여부를 검증하는 단계로서, 상기 해시값들 중 하나는 상기 제 2 프로그램에 포함된 상이한 데이터 파일로부터 계산되며 다른 하나의 해시값은 상기 제 2 프로그램에 포함된 상이한 데이터 파일에 대응하는 해시 파일에 저장된, 제 3 단계;
    상기 제 2 프로그램에 포함된 증명서 파일이 유효한지 여부를 검증하는 제 4 단계;
    복호화된 값과 해시값이 일치하는지 여부를 검증하는 단계로서, 상기 복호화된 값은 상기 제 2 프로그램의 증명서 파일의 리프 증명서의 공개키를 사용하여 상기 제 2 프로그램에 포함된 서명 파일의 서명값을 복호화함으로써 취득되고, 상기 해시값은 상기 제 2 프로그램의 최상의 디렉토리에 위치된 해시 파일로부터 계산된, 제 5 단계; 및
    상기 제 3 단계에서 상기 2개의 해시값이 일치하는 것으로 검증됨; 상기 제 4 단계에서 상기 제 2 프로그램에 포함된 증명서 파일이 유효한 것으로 검증됨; 및 상기 제 5 단계에서 상기 복호화된 값과 상기 해시값이 일치하는 것으로 검증됨이 만족되는 경우에, 상기 제 2 프로그램을 인증하고 상기 제 2 프로그램의 각 데이터 파일의 저장에 관한 정보에 따라 인증된 제 2 프로그램을 저장하는 제 6 단계로 이루어진, 프로그램 데이터 파일 저장 방법.
  2. 청구항 1에 있어서,
    상기 제 2 프로그램에 포함된 상이한 데이터 파일은 상기 제 1 프로그램을 저장시에 인증되어 있는 제 1 프로그램의 데이터 파일을 업데이트하는데 사용되는 데이터 파일인, 프로그램 데이터 파일 저장 방법.
  3. 청구항 1에 있어서,
    상기 제 2 프로그램에 포함된 상이한 데이터 파일은 상기 제 1 프로그램을 저장시에 인증되어 있는 제 1 프로그램의 임의의 데이터 파일과는 상이한 새로운 데이터 파일인, 프로그램 데이터 파일 저장 방법.
  4. 청구항 1에 있어서,
    상기 각 프로그램이 디렉토리 구조를 가지는 경우에,
    각 디렉토리에 포함된 각 데이터 파일과 상기 각 데이터 파일에 대응하는 해시 파일이 동일한 디렉토리에 위치되고,
    상기 제 3 단계가 상기 제 2 프로그램에 포함된 상이한 데이터 파일을 포함하는 각 디렉토리에 대해 실행되는, 프로그램 데이터 파일 저장 방법.
  5. 청구항 1에 있어서,
    상기 제 6 단계에서는, 상기 제 3 단계에서 상기 2개의 해시값이 일치하는 것으로 검증되지 않음; 상기 제 4 단계에서 상기 제 2 프로그램에 포함된 증명서 파일이 유효한 것으로 검증되지 않음; 및 상기 제 5 단계에서 상기 복호화된 값과 상기 해시값이 일치하는 것으로 검증되지 않음 중에서 적어도 하나가 만족되는 경우에, 상기 제 2 프로그램이 저장되지 않는, 프로그램 데이터 파일 저장 방법.
  6. 청구항 1에 있어서,
    상기 제 6 단계에서, 상기 제 2 프로그램의 데이터 파일이 상기 제 1 프로그램의 임의의 데이터 파일과 동일한 데이터 파일을 포함하는 경우에, 상기 제 2 프로그램에 포함된 동일한 데이터 파일이 상기 방송 수신기에 저장되지 않는, 프로그램 데이터 파일 저장 방법.
  7. 청구항 1에 있어서,
    상기 제 6 단계에서, 상기 제 2 프로그램의 데이터 파일이 상기 제 1 프로그램의 임의의 데이터 파일과 동일한 데이터 파일을 포함하는 경우에, 상기 제 1 프로그램의 데이터 파일이 상기 제 2 프로그램에 포함된 동일한 데이터 파일에 의해 덮어 써져 상기 방송 수신기에 저장되는, 프로그램 데이터 파일 저장 방법.
  8. 청구항 1에 있어서,
    상기 제 4 단계는,
    2개의 루트 증명서가 일치하는지 여부를 검증하는 단계로서, 상기 루트 증명서 중 하나는 상기 제 2 프로그램에 포함된 증명서 파일에 있고 다른 하나의 루트 증명서는 상기 방송 수신기에 설치된, 제 7 단계를 포함하고,
    상기 제 4 단계에서, 상기 2개의 루트 증명서가 일치하는 경우에 상기 증명서 파일이 유효한 것으로 검증되는, 프로그램 데이터 파일 저장 방법.
  9. 청구항 8에 있어서,
    상기 제 4 단계는,
    상기 제 2 프로그램에 포함된 증명서 파일의 각 증명서의 유효 기간을 검증하는 제 8 단계를 더 포함하고,
    상기 제 4 단계에서, 상기 2개의 루트 증명서가 일치함; 및 인증이 수행되는 시각이 증명서 파일의 각 증명서의 유효 기간 내임을 모두 만족하는 경우에 증명서 파일이 유효한 것으로 검증되는, 프로그램 데이터 파일 저장 방법.
  10. 제 1 트랜스포트 스트림에 포함된 제 1 프로그램의 각 데이터 파일을 인증하고, 상기 제 1 프로그램의 각 데이터 파일의 저장에 관한 정보에 따라 상기 제 1 프로그램의 각 인증된 데이터 파일을 방송 수신기에 저장하는 제 1 단계;
    제 2 트랜스포트 스트림에 포함된 제 2 프로그램의 각 데이터 파일의 저장 에 관한 정보를 수신하는 제 2 단계; 및
    상기 제 2 프로그램의 데이터 파일이 상기 제 1 프로그램을 저장시 인증되어 있는 제 1 프로그램의 임의의 데이터 파일과는 상이한 데이터 파일을 포함하는 경우에 실행되는 다음의 단계들을 포함하고,
    상기 다음의 단계들은,
    2개의 해시값이 일치하는지 여부를 검증하는 단계로서, 상기 해시값들 중 하나는 상기 제 2 프로그램에 포함된 상이한 데이터 파일로부터 계산되며 다른 하나의 해시값은 상기 제 2 프로그램에 포함된 상이한 데이터 파일에 대응하는 해시 파일에 저장된, 제 3 단계;
    상기 제 2 프로그램에 포함된 증명서 파일이 유효한지 여부를 검증하는 제 4 단계;
    복호화된 값과 해시값이 일치하는지 여부를 검증하는 단계로서, 상기 복호화된 값은 상기 제 2 프로그램의 증명서 파일의 리프 증명서의 공개키를 사용하여 상기 제 2 프로그램에 포함된 서명 파일의 서명값을 복호화함으로써 취득되고, 상기 해시값은 상기 제 2 프로그램의 최상의 디렉토리에 위치된 해시 파일로부터 계산 된, 제 5 단계;
    상기 제 3 단계에서 상기 2개의 해시값이 일치하는 것으로 검증됨; 상기 제 4 단계에서 상기 제 2 프로그램에 포함된 증명서 파일이 유효한 것으로 검증됨; 및 상기 제 5 단계에서 상기 복호화된 값과 상기 해시값이 일치하는 것으로 검증됨이 만족되는 경우에, 상기 제 2 프로그램을 인증하고 상기 제 2 프로그램의 각 데이터 파일의 저장에 관한 정보에 따라 인증된 제 2 프로그램을 저장하는 제 6 단계;
    상기 제 2 프로그램이 실행되는 경우에 상기 저장된 제 2 프로그램에 포함된 증명서 파일이 유효한지 여부를 검증하는 제 9 단계; 및
    상기 제 9 단계에서 상기 저장된 제 2 프로그램에 포함된 증명서 파일이 유효한 것으로 검증되는 경우에만, 상기 저장된 제 2 프로그램을 다시 인증하여 인증된 제 2 프로그램을 실행하는 실행 단계로 이루어진, 인증된 프로그램 실행 방법.
  11. 청구항 10에 있어서,
    상기 제 9 단계는,
    2개의 루트 증명서가 일치하는지 여부를 검증하는 단계로서, 상기 루트 증명서 중 하나는 상기 저장된 제 2 프로그램에 포함된 증명서 파일에 있고 다른 하나의 루트 증명서는 상기 방송 수신기에 설치된, 제 10 단계를 포함하고,
    상기 제 9 단계에서, 상기 2개의 루트 증명서가 일치하는 경우에 상기 증명서 파일이 유효한 것으로 검증되는, 인증된 프로그램 실행 방법.
  12. 청구항 11에 있어서,
    상기 제 9 단계는 상기 저장된 제 2 프로그램에 포함된 증명서 파일의 각 증명서의 유효 기간을 검증하는 제 11 단계를 포함하고,
    상기 제 9 단계에서, 상기 2개의 루트 증명서가 일치함; 및 상기 실행이 행해지는 시각이 증명서 파일의 각 증명서의 유효 기간 내임을 모두 만족하는 경우에 증명서 파일이 유효한 것으로 검증되는, 인증된 프로그램 실행 방법.
  13. 청구항 10에 있어서,
    상기 제 2 프로그램에 포함된 상이한 데이터 파일은 상기 제 1 프로그램을 저장시에 인증되어 있는 제 1 프로그램의 데이터 파일을 업데이트하는데 사용되는 데이터 파일인, 인증된 프로그램 실행 방법.
  14. 청구항 10에 있어서,
    상기 제 2 프로그램에 포함된 상이한 데이터 파일은 상기 제 1 프로그램을 저장시에 인증되어 있는 제 1 프로그램의 임의의 데이터 파일과는 상이한 새로운 데이터 파일인, 인증된 프로그램 실행 방법.
  15. 청구항 10에 있어서,
    상기 각 프로그램이 디렉토리 구조를 가지는 경우에,
    각 디렉토리에 포함된 각 데이터 파일과 상기 각 데이터 파일에 대응하는 해 시 파일이 동일한 디렉토리에 위치되고,
    상기 제 3 단계가 상기 제 2 프로그램에 포함된 상이한 데이터 파일을 포함하는 각 디렉토리에 대해 실행되는, 인증된 프로그램 실행 방법.
  16. 청구항 10에 있어서,
    상기 제 6 단계에서는, 상기 제 3 단계에서 상기 2개의 해시값이 일치하는 것으로 검증되지 않음; 상기 제 4 단계에서 상기 제 2 프로그램에 포함된 증명서 파일이 유효한 것으로 검증되지 않음; 및 상기 제 5 단계에서 상기 복호화된 값과 상기 해시값이 일치하는 것으로 검증되지 않음 중에서 적어도 하나가 만족되는 경우에, 상기 제 2 프로그램이 저장되지 않는, 인증된 프로그램 실행 방법.
  17. 청구항 10에 있어서,
    상기 제 6 단계에서, 상기 제 2 프로그램의 데이터 파일이 상기 제 1 프로그램의 임의의 데이터 파일과 동일한 데이터 파일을 포함하는 경우에, 상기 제 2 프로그램에 포함된 동일한 데이터 파일이 상기 방송 수신기에 저장되지 않는, 인증된 프로그램 실행 방법.
  18. 청구항 10에 있어서,
    상기 제 6 단계에서, 상기 제 2 프로그램의 데이터 파일이 상기 제 1 프로그램의 임의의 데이터 파일과 동일한 데이터 파일을 포함하는 경우에, 상기 제 1 프 로그램의 데이터 파일이 상기 제 2 프로그램에 포함된 동일한 데이터 파일에 의해 덮어 써져 상기 방송 수신기에 저장되는, 인증된 프로그램 실행 방법.
  19. 청구항 10에 있어서,
    상기 제 4 단계는,
    2개의 루트 증명서가 일치하는지 여부를 검증하는 단계로서, 상기 루트 증명서 중 하나는 상기 제 2 프로그램에 포함된 증명서 파일에 있고 다른 하나의 루트 증명서는 상기 방송 수신기에 설치된, 제 7 단계를 포함하고,
    상기 제 4 단계에서, 상기 2개의 루트 증명서가 일치하는 경우에 상기 증명서 파일이 유효한 것으로 검증되는, 인증된 프로그램 실행 방법.
  20. 청구항 19에 있어서,
    상기 제 4 단계는,
    상기 제 2 프로그램에 포함된 증명서 파일의 각 증명서의 유효 기간을 검증하는 제 8 단계를 더 포함하고,
    상기 제 4 단계에서, 상기 2개의 루트 증명서가 일치함; 및 인증이 수행되는 시각이 증명서 파일의 각 증명서의 유효 기간 내임을 모두 만족하는 경우에 증명서 파일이 유효한 것으로 검증되는, 인증된 프로그램 실행 방법.
  21. 제 1 트랜스포트 스트림에 포함된 제 1 프로그램의 각 데이터 파일을 인증하 고, 상기 제 1 프로그램의 각 데이터 파일의 저장에 관한 정보에 따라 상기 제 1 프로그램의 각 인증된 데이터 파일을 방송 수신기에 저장하도록 동작 가능한 제 1 저장유닛;
    제 2 트랜스포트 스트림에 포함된 제 2 프로그램의 각 데이터 파일의 저장에 관한 정보를 수신하도록 동작 가능한 저장 정보 수신 유닛; 및
    상기 제 2 프로그램의 데이터 파일이 상기 제 1 프로그램을 저장시 인증되어 있는 제 1 프로그램의 임의의 데이터 파일과는 상이한 데이터 파일을 포함하는 경우에 그 동작을 행하는 다음의 유닛들을 포함하고,
    상기 다음의 유닛들은,
    2개의 해시값이 일치하는지 여부를 검증하도록 동작 가능한 유닛으로서, 상기 해시값들 중 하나는 상기 제 2 프로그램에 포함된 상이한 데이터 파일로부터 계산되며 다른 하나의 해시값은 상기 제 2 프로그램에 포함된 상이한 데이터 파일에 대응하는 해시 파일에 저장된, 제 1 검증 유닛;
    상기 제 2 프로그램에 포함된 증명서 파일이 유효한지 여부를 검증하도록 동작 가능한 제 2 검증 유닛;
    복호화된 값과 해시값이 일치하는지 여부를 검증하도록 동작 가능한 유닛으로서, 상기 복호화된 값은 상기 제 2 프로그램의 증명서 파일의 리프 증명서의 공개키를 사용하여 상기 제 2 프로그램에 포함된 서명 파일의 서명값을 복호화함으로써 취득되고, 상기 해시값은 상기 제 2 프로그램의 최상의 디렉토리에 위치된 해시 파일로부터 계산된, 제 3 검증 유닛; 및
    상기 제 1 검증 유닛에 의해 상기 2개의 해시값이 일치하는 것으로 검증됨; 상기 제 2 검증 유닛에 의해 상기 제 2 프로그램에 포함된 증명서 파일이 유효한 것으로 검증됨; 및 상기 제 3 검증 유닛에 의해 상기 복호화된 값과 상기 해시값이 일치하는 것으로 검증됨이 만족되는 경우에, 상기 제 2 프로그램을 인증하고 상기 제 2 프로그램의 각 데이터 파일의 저장에 관한 정보에 따라 인증된 제 2 프로그램을 저장하도록 동작 가능한 제 2 저장유닛으로 이루어진, 프로그램 저장 장치.
  22. 제 1 트랜스포트 스트림에 포함된 제 1 프로그램의 각 데이터 파일을 인증하고, 상기 제 1 프로그램의 각 데이터 파일의 저장에 관한 정보에 따라 상기 제 1 프로그램의 각 인증된 데이터 파일을 방송 수신기에 저장하도록 동작 가능한 제 1 저장유닛;
    제 2 트랜스포트 스트림에 포함된 제 2 프로그램의 각 데이터 파일의 저장에 관한 정보를 수신하도록 동작 가능한 저장 정보 수신 유닛; 및
    상기 제 2 프로그램의 데이터 파일이 상기 제 1 프로그램을 저장시 인증되어 있는 제 1 프로그램의 임의의 데이터 파일과는 상이한 데이터 파일을 포함하는 경우에 그 동작을 행하는 다음의 유닛들을 포함하고,
    상기 다음의 유닛들은,
    2개의 해시값이 일치하는지 여부를 검증하도록 동작 가능한 유닛으로서, 상기 해시값들 중 하나는 상기 제 2 프로그램에 포함된 상이한 데이터 파일로부터 계산되며 다른 하나의 해시값은 상기 제 2 프로그램에 포함된 상이한 데이터 파일에 대응하는 해시 파일에 저장된, 제 1 검증 유닛;
    상기 제 2 프로그램에 포함된 증명서 파일이 유효한지 여부를 검증하도록 동작 가능한 제 2 검증 유닛;
    복호화된 값과 해시값이 일치하는지 여부를 검증하도록 동작 가능한 유닛으로서, 상기 복호화된 값은 상기 제 2 프로그램의 증명서 파일의 리프 증명서의 공개키를 사용하여 상기 제 2 프로그램에 포함된 서명 파일의 서명값을 복호화함으로써 취득되고, 상기 해시값은 상기 제 2 프로그램의 최상의 디렉토리에 위치된 해시 파일로부터 계산된, 제 3 검증 유닛;
    상기 제 1 검증 유닛에 의해 상기 2개의 해시값이 일치하는 것으로 검증됨; 상기 제 2 검증 유닛에 의해 상기 제 2 프로그램에 포함된 증명서 파일이 유효한 것으로 검증됨; 및 상기 제 3 검증 유닛에 의해 상기 복호화된 값과 상기 해시값이 일치하는 것으로 검증됨이 만족되는 경우에, 상기 제 2 프로그램을 인증하고 상기 제 2 프로그램의 각 데이터 파일의 저장에 관한 정보에 따라 인증된 제 2 프로그램을 저장하도록 동작 가능한 제 2 저장유닛;
    상기 제 2 프로그램이 실행되는 경우에 상기 저장된 제 2 프로그램에 포함된 증명서 파일이 유효한지 여부를 검증하도록 동작 가능한 제 4 검증 유닛; 및
    상기 제 4 검증 유닛에 의해 상기 저장된 제 2 프로그램에 포함된 증명서 파일이 유효한 것으로 검증되는 경우에만, 상기 저장된 제 2 프로그램을 다시 인증하여 인증된 제 2 프로그램을 실행하도록 동작 가능한 실행 유닛으로 이루어진, 인증된 프로그램 실행 장치.
  23. 제 1 트랜스포트 스트림에 포함된 제 1 프로그램의 각 데이터 파일을 인증하고, 상기 제 1 프로그램의 각 데이터 파일의 저장에 관한 정보에 따라 상기 제 1 프로그램의 각 인증된 데이터 파일을 방송 수신기에 저장하는 제 1 단계;
    제 2 트랜스포트 스트림에 포함된 제 2 프로그램의 각 데이터 파일의 저장에 관한 정보를 수신하는 제 2 단계; 및
    상기 제 2 프로그램의 데이터 파일이 상기 제 1 프로그램을 저장시 인증되어 있는 상기 제 1 프로그램의 임의의 데이터 파일과는 상이한 데이터 파일을 포함하는 경우에 실행되는 다음의 단계들을 포함하고,
    상기 다음의 단계들은,
    2개의 해시값이 일치하는지 여부를 검증하는 단계로서, 상기 해시값들 중 하나는 상기 제 2 프로그램에 포함된 상이한 데이터 파일로부터 계산되며 다른 하나의 해시값은 상기 제 2 프로그램에 포함된 상이한 데이터 파일에 대응하는 해시 파일에 저장된, 제 3 단계;
    상기 제 2 프로그램에 포함된 증명서 파일이 유효한지 여부를 검증하는 제 4 단계;
    복호화된 값과 해시값이 일치하는지 여부를 검증하는 단계로서, 상기 복호화된 값은 상기 제 2 프로그램의 증명서 파일의 리프 증명서의 공개키를 사용하여 상기 제 2 프로그램에 포함된 서명 파일의 서명값을 복호화함으로써 취득되고, 상기 해시값은 상기 제 2 프로그램의 최상의 디렉토리에 위치된 해시 파일로부터 계산 된, 제 5 단계; 및
    상기 제 3 단계에서 상기 2개의 해시값이 일치하는 것으로 검증됨; 상기 제 4 단계에서 상기 제 2 프로그램에 포함된 증명서 파일이 유효한 것으로 검증됨; 및 상기 제 5 단계에서 상기 복호화된 값과 상기 해시값이 일치하는 것으로 검증됨이 만족되는 경우에, 상기 제 2 프로그램을 인증하고 상기 제 2 프로그램의 각 데이터 파일의 저장에 관한 정보에 따라 인증된 제 2 프로그램을 저장하는 제 6 단계로 이루어진, 단계들을 컴퓨터가 실행하도록 하는 프로그램.
  24. 제 1 트랜스포트 스트림에 포함된 제 1 프로그램의 각 데이터 파일을 인증하고, 상기 제 1 프로그램의 각 데이터 파일의 저장에 관한 정보에 따라 상기 제 1 프로그램의 각 인증된 데이터 파일을 방송 수신기에 저장하는 제 1 단계;
    제 2 트랜스포트 스트림에 포함된 제 2 프로그램의 각 데이터 파일의 저장 에 관한 정보를 수신하는 제 2 단계; 및
    상기 제 2 프로그램의 데이터 파일이 상기 제 1 프로그램을 저장시 인증되어 있는 제 1 프로그램의 임의의 데이터 파일과는 상이한 데이터 파일을 포함하는 경우에 실행되는 다음의 단계들을 포함하고,
    상기 다음의 단계들은,
    2개의 해시값이 일치하는지 여부를 검증하는 단계로서, 상기 해시값들 중 하나는 상기 제 2 프로그램에 포함된 상이한 데이터 파일로부터 계산되며 다른 하나의 해시값은 상기 제 2 프로그램에 포함된 상이한 데이터 파일에 대응하는 해시 파 일에 저장된, 제 3 단계;
    상기 제 2 프로그램에 포함된 증명서 파일이 유효한지 여부를 검증하는 제 4 단계;
    복호화된 값과 해시값이 일치하는지 여부를 검증하는 단계로서, 상기 복호화된 값은 상기 제 2 프로그램의 증명서 파일의 리프 증명서의 공개키를 사용하여 상기 제 2 프로그램에 포함된 서명 파일의 서명값을 복호화함으로써 취득되고, 상기 해시값은 상기 제 2 프로그램의 최상의 디렉토리에 위치된 해시 파일로부터 계산된, 제 5 단계;
    상기 제 3 단계에서 상기 2개의 해시값이 일치하는 것으로 검증됨; 상기 제 4 단계에서 상기 제 2 프로그램에 포함된 증명서 파일이 유효한 것으로 검증됨; 및 상기 제 5 단계에서 상기 복호화된 값과 상기 해시값이 일치하는 것으로 검증됨이 만족되는 경우에, 상기 제 2 프로그램을 인증하고 상기 제 2 프로그램의 각 데이터 파일의 저장에 관한 정보에 따라 인증된 제 2 프로그램을 저장하는 제 6 단계;
    상기 제 2 프로그램이 실행되는 경우에 상기 저장된 제 2 프로그램에 포함된 증명서 파일이 유효한지 여부를 검증하는 제 9 단계; 및
    상기 제 9 단계에서 상기 저장된 제 2 프로그램에 포함된 증명서 파일이 유효한 것으로 검증되는 경우에만, 상기 저장된 제 2 프로그램을 다시 인증하여 인증된 제 2 프로그램을 실행하는 실행 단계로 이루어진, 단계들을 컴퓨터가 실행하도록 하는 프로그램.
KR1020067011314A 2003-12-18 2006-06-09 프로그램 데이터 파일 저장 방법 및 인증된 프로그램 실행방법 KR101073170B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
JPJP-P-2003-00421616 2003-12-18
JP2003421616 2003-12-18
US53066303P 2003-12-19 2003-12-19
US60/530,663 2003-12-19
JPJP-P-2004-00111802 2004-04-06
JP2004111802 2004-04-06
PCT/JP2004/019125 WO2005060255A1 (en) 2003-12-18 2004-12-15 Method for storing, authenticalting and executing an application program

Publications (2)

Publication Number Publication Date
KR20060118540A true KR20060118540A (ko) 2006-11-23
KR101073170B1 KR101073170B1 (ko) 2011-10-12

Family

ID=34704872

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067011314A KR101073170B1 (ko) 2003-12-18 2006-06-09 프로그램 데이터 파일 저장 방법 및 인증된 프로그램 실행방법

Country Status (6)

Country Link
US (1) US8086862B2 (ko)
JP (1) JP2007515092A (ko)
KR (1) KR101073170B1 (ko)
CN (3) CN100562096C (ko)
CA (1) CA2548546A1 (ko)
WO (1) WO2005060255A1 (ko)

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001066986A (ja) * 1999-08-26 2001-03-16 Sony Corp 送信装置および方法、受信装置および方法、通信システム、並びにプログラム格納媒体
US7912220B2 (en) * 2001-02-05 2011-03-22 Broadcom Corporation Packetization of non-MPEG stream data in systems using advanced multi-stream POD interface
US7478433B2 (en) * 2003-06-19 2009-01-13 Panasonic Corporation Program execution system having authentication function
JP2005056305A (ja) * 2003-08-07 2005-03-03 Matsushita Electric Ind Co Ltd メモリ領域に分割領域を持つ情報記憶装置
KR20110031506A (ko) * 2003-12-18 2011-03-28 파나소닉 주식회사 애플리케이션 프로그램을 인증 및 실행하는 방법
EP1594250A1 (en) * 2004-05-03 2005-11-09 Thomson Licensing Distributed management of a certificate revocation list
US8201191B2 (en) 2004-06-30 2012-06-12 Time Warner Cable Inc. Apparatus and methods for implementation of network software interfaces
CN101814310B (zh) * 2004-07-22 2012-11-28 松下电器产业株式会社 重放装置和重放方法
JP5013477B2 (ja) 2004-11-09 2012-08-29 トムソン ライセンシング 別個の記憶媒体上のコンテンツの結合
CN101853340B (zh) * 2005-02-14 2012-03-14 松下电器产业株式会社 应用程序执行装置、应用程序执行方法和程序
US20060236375A1 (en) 2005-04-15 2006-10-19 Tarik Hammadou Method and system for configurable security and surveillance systems
US7649949B2 (en) * 2005-07-28 2010-01-19 Sony Corporation Multipurpose television module
US7593469B2 (en) * 2005-07-28 2009-09-22 Sony Corporation OCAP engine module
KR100720558B1 (ko) * 2005-08-30 2007-05-22 엘지전자 주식회사 데이터 방송의 저장 및 실행 기능을 구비한 영상기기 및 그제어방법
US8508607B2 (en) * 2005-09-06 2013-08-13 Its-7 Method and system for a programmable camera for configurable security and surveillance systems
TWI281825B (en) * 2005-10-18 2007-05-21 Univ Nat Taiwan Right management system and method for digital broadcasting
US7661064B2 (en) * 2006-03-06 2010-02-09 Microsoft Corporation Displaying text intraline diffing output
CN101059759B (zh) * 2006-04-21 2011-12-14 鸿富锦精密工业(深圳)有限公司 程序动态烧录的系统及方法
US10104432B2 (en) * 2006-12-01 2018-10-16 Time Warner Cable Enterprises Llc Methods and apparatus for software provisioning of a network device
JP4321597B2 (ja) * 2007-01-31 2009-08-26 コニカミノルタビジネステクノロジーズ株式会社 情報処理装置、認証システム、認証方法および認証プログラム
US8458457B2 (en) * 2007-02-02 2013-06-04 Red Hat, Inc. Method and system for certificate revocation list pre-compression encoding
JP2008305035A (ja) 2007-06-06 2008-12-18 Hitachi Ltd 装置、更新方法、および制御ソフト。
US20090038007A1 (en) * 2007-07-31 2009-02-05 Samsung Electronics Co., Ltd. Method and apparatus for managing client revocation list
US9424266B2 (en) * 2007-10-01 2016-08-23 Microsoft Technology Licensing, Llc Efficient file hash identifier computation
US8473466B1 (en) * 2007-12-31 2013-06-25 Teradata Us, Inc. Systems and methods for storing data, such as storing data based on storage classes
US8868904B2 (en) * 2008-01-21 2014-10-21 Sony Corporation Information processing device, disc, information processing method, and program
US8600896B2 (en) * 2008-03-28 2013-12-03 Panasonic Corporation Software updating apparatus, software updating system, invalidation method, and invalidation program
EP2259205B1 (en) * 2008-03-28 2018-04-25 Panasonic Corporation Software updating apparatus, software updating system, alteration verification method and alteration verification program
JP5378702B2 (ja) * 2008-04-23 2013-12-25 パナソニック株式会社 秘匿認証システム
JP2009272671A (ja) * 2008-04-30 2009-11-19 Panasonic Corp 秘匿認証システム
JP2009272737A (ja) * 2008-05-01 2009-11-19 Panasonic Corp 秘匿認証システム
JP2009278223A (ja) * 2008-05-13 2009-11-26 Panasonic Corp 電子証明システム及び秘匿通信システム
JP2009296190A (ja) 2008-06-04 2009-12-17 Panasonic Corp 秘匿通信方法
KR101205716B1 (ko) * 2008-12-19 2012-11-28 한국전자통신연구원 프로그램 정보에 포함된 시그너처를 이용하여 방송 프로그램의 사용을 제어하는 방송 신호 수신 장치 및 그 방법
JP2010191665A (ja) * 2009-02-18 2010-09-02 Sony Corp 情報処理装置、情報処理方法、およびプログラム、並びに記録媒体
US8195604B2 (en) * 2009-02-25 2012-06-05 Centurylink Intellectual Property Llc System and method for verifying IMS databases on a mainframe computer
CN101674301B (zh) * 2009-05-31 2012-09-05 飞天诚信科技股份有限公司 一种存储证书的方法
WO2011013303A1 (ja) * 2009-07-30 2011-02-03 パナソニック株式会社 受信データ認証方法及びデジタル放送受信機
US8732848B2 (en) * 2009-11-05 2014-05-20 Kyocera Document Solutions Inc. File-distribution apparatus and recording medium having file-distribution authorization program recorded therein
US8688666B1 (en) * 2010-08-27 2014-04-01 Amazon Technologies, Inc. Multi-blob consistency for atomic data transactions
US8856089B1 (en) 2010-08-27 2014-10-07 Amazon Technologies, Inc. Sub-containment concurrency for hierarchical data containers
US8402061B1 (en) 2010-08-27 2013-03-19 Amazon Technologies, Inc. Tiered middleware framework for data storage
US8510344B1 (en) 2010-08-27 2013-08-13 Amazon Technologies, Inc. Optimistically consistent arbitrary data blob transactions
US8510304B1 (en) 2010-08-27 2013-08-13 Amazon Technologies, Inc. Transactionally consistent indexing for data blobs
US8621161B1 (en) 2010-09-23 2013-12-31 Amazon Technologies, Inc. Moving data between data stores
JP5800685B2 (ja) * 2010-11-26 2015-10-28 キヤノン株式会社 情報処理装置及びサーバ、制御方法、プログラム及び記録媒体
IN2014MN00981A (ko) * 2011-12-21 2015-04-24 Sony Corp
CN102662991A (zh) * 2012-03-14 2012-09-12 北京邮电大学 一种基于移动存储设备的文件级同步方法
CN102820975B (zh) * 2012-04-17 2016-04-27 国家广播电影电视总局广播科学研究院 数据更新方法、推送装置及终端
US20130290734A1 (en) * 2012-04-26 2013-10-31 Appsense Limited Systems and methods for caching security information
US20130290733A1 (en) * 2012-04-26 2013-10-31 Appsense Limited Systems and methods for caching security information
US10114939B1 (en) * 2014-09-22 2018-10-30 Symantec Corporation Systems and methods for secure communications between devices
CN106295331A (zh) * 2016-08-22 2017-01-04 浪潮电子信息产业股份有限公司 一种主动防御及异常上报系统的设计方法
GB2553295B (en) * 2016-08-25 2020-12-16 Samsung Electronics Co Ltd Managing communications between a broadcast receiver and a security module
JP6612805B2 (ja) * 2017-03-24 2019-11-27 マクセル株式会社 放送受信装置及びキャッシュ制御方法
US20190196805A1 (en) * 2017-12-21 2019-06-27 Apple Inc. Controlled rollout of updates for applications installed on client devices
KR102607122B1 (ko) * 2018-07-25 2023-11-28 삼성전자주식회사 전자장치 및 그 제어방법
CN114207611A (zh) * 2019-08-15 2022-03-18 飞力凯网路股份有限公司 信息处理设备、信息处理方法、程序和信息处理系统
CN115659319A (zh) * 2022-12-15 2023-01-31 成都数默科技有限公司 基于JavaAgent的Java应用防篡改方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US114144A (en) * 1871-04-25 Improvement in attachmentsx g gas-service pipe for automatically cutting off the gas in
US217369A (en) * 1879-07-08 Improvement in horse hay-rakes
TW313643B (ko) * 1994-12-14 1997-08-21 At & T Corp
US5625693A (en) 1995-07-07 1997-04-29 Thomson Consumer Electronics, Inc. Apparatus and method for authenticating transmitting applications in an interactive TV system
US6263348B1 (en) * 1998-07-01 2001-07-17 Serena Software International, Inc. Method and apparatus for identifying the existence of differences between two files
US6324555B1 (en) * 1998-08-31 2001-11-27 Adobe Systems Incorporated Comparing contents of electronic documents
US6952823B2 (en) * 1998-09-01 2005-10-04 Pkware, Inc. Software patch generator using compression techniques
JP2000259417A (ja) 1999-03-12 2000-09-22 Sony Corp データ処理装置、データ処理方法及びプログラム提供媒体
AU1632001A (en) * 1999-10-22 2001-05-08 General Instrument Corporation Management of volatile and non-volatile memory resources in digital communications terminals
US6832323B1 (en) 1999-10-22 2004-12-14 General Instrument Corporation Object and feature authorization for digital communication terminals
ES2278025T3 (es) * 2001-04-25 2007-08-01 Wink Communications, Inc. Actualizacion sincronica de aplicaciones interactivas dinamicas.
JP4145118B2 (ja) 2001-11-26 2008-09-03 松下電器産業株式会社 アプリケーション認証システム
US20030217369A1 (en) 2002-05-17 2003-11-20 Heredia Edwin Arturo Flexible application information formulation
FR2845493A1 (fr) * 2002-10-04 2004-04-09 Canal Plus Technologies Logiciel embarque et procede d'authentification de celui-ci
US20050004954A1 (en) * 2003-07-01 2005-01-06 Hand Held Products, Inc. Systems and methods for expedited data transfer in a communication system using hash segmentation
US8055910B2 (en) * 2003-07-07 2011-11-08 Rovi Solutions Corporation Reprogrammable security for controlling piracy and enabling interactive content
CN100459659C (zh) * 2003-09-17 2009-02-04 松下电器产业株式会社 应用执行设备、应用执行方法、和集成电路
JP4458832B2 (ja) * 2003-12-05 2010-04-28 キヤノン株式会社 番組抽出装置およびその制御方法

Also Published As

Publication number Publication date
CN101668166A (zh) 2010-03-10
CN101668167A (zh) 2010-03-10
CN1894968A (zh) 2007-01-10
US8086862B2 (en) 2011-12-27
CA2548546A1 (en) 2005-06-30
CN100562096C (zh) 2009-11-18
WO2005060255A1 (en) 2005-06-30
US20050138401A1 (en) 2005-06-23
JP2007515092A (ja) 2007-06-07
KR101073170B1 (ko) 2011-10-12

Similar Documents

Publication Publication Date Title
KR101073170B1 (ko) 프로그램 데이터 파일 저장 방법 및 인증된 프로그램 실행방법
KR101070545B1 (ko) 애플리케이션 프로그램을 인증 및 실행하는 방법
US8397078B2 (en) Method for authenticating and executing a program
EP1837755A1 (en) Information processing apparatus
KR20010030926A (ko) 데이터를 다운로딩하는 방법
US20070174356A1 (en) Program execution device, program execution method, and program
US7676847B2 (en) Application execution device, application execution method, integrated circuit, and computer-readable program
US20080276300A1 (en) Program Execution Device
US20060046640A1 (en) Broadcasting receiving apparatus, broadcasting receiving method, and broadcasting receiving system
KR20060054419A (ko) 디지털 방송 시스템에서의 복제-방지 애플리케이션들
KR20060070533A (ko) 디지털 방송 시스템용 복제-방지된 애플리케이션
MXPA06006121A (en) Method for storing, authenticalting and executing an application program
KR20110044395A (ko) 방송 수신기 및 소프트웨어 업데이트 방법

Legal Events

Date Code Title Description
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: 20140923

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150917

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160922

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170920

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180905

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190903

Year of fee payment: 9