KR20120100819A - 전자 장치에서의 소프트웨어 업데이트들의 집행 - Google Patents

전자 장치에서의 소프트웨어 업데이트들의 집행 Download PDF

Info

Publication number
KR20120100819A
KR20120100819A KR1020120021962A KR20120021962A KR20120100819A KR 20120100819 A KR20120100819 A KR 20120100819A KR 1020120021962 A KR1020120021962 A KR 1020120021962A KR 20120021962 A KR20120021962 A KR 20120021962A KR 20120100819 A KR20120100819 A KR 20120100819A
Authority
KR
South Korea
Prior art keywords
code version
message
digital
stb
memory
Prior art date
Application number
KR1020120021962A
Other languages
English (en)
Other versions
KR101355057B1 (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 KR20120100819A publication Critical patent/KR20120100819A/ko
Application granted granted Critical
Publication of KR101355057B1 publication Critical patent/KR101355057B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • 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/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/440218Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4
    • 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/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4405Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video 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
    • 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/4623Processing of entitlement messages, e.g. ECM [Entitlement Control Message] or EMM [Entitlement Management Message]
    • 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
    • H04N7/00Television systems
    • H04N7/16Analogue secrecy systems; Analogue subscription systems
    • H04N7/167Systems rendering the television signal unintelligible and subsequently intelligible

Landscapes

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

Abstract

셋톱 박스(STB : set top box) 또는 클라이언트 컴퓨터는 디지털 메시지들 및 디지털 컨텐츠를 수신하도록 동작가능한 통신 인터페이스, 동작가능한 메모리, 및 통신 인터페이스 및 메모리에 결합되는 처리 회로를 포함한다. STB는 디지털 메시지를 수신하고, 디지털 메시지로부터 키이 부분을 추출하고, 디지털 메시지로부터 권리 부분을 추출하고, 권리 부분에 기초하여 코드 버전을 결정하고, 메모리로부터 저장된 코드 버전을 판독하고, 소프트웨어 명령들을 검증하기 위하여 코드 버전을 저장된 코드 버전과 비교하도록 동작가능하다. 코드 버전과 저장된 코드 버전의 긍정적이지 않은 비교 시에, 소프트웨어 명령 재로딩을 위하여 메시지를 서비스 제공자 장치에 송신하는 것, 재부팅, 및/또는 디지털 컨텐츠의 복호화의 디스에이블을 포함할 수 있는 에러 작업을 시작한다. 디지털 메시지로부터 권리 부분을 추출하는 것은 복호화된 결과를 생성하기 위하여 키이 부분을 복호화하는 것과, 복호화된 권리 부분을 생성하기 위하여 복호화된 결과를 이용하여 권리 부분을 복호화하는 것을 포함할 수 있다.

Description

전자 장치에서의 소프트웨어 업데이트들의 집행{ENFORCING SOFTWATE UPDATES IN AN ELECTRONIC DEVICE}
우선권 출원에 대한 상호 참조
본 출원은 그 전체가 모든 목적들을 위해 본 명세서에 편입되어 있는 2011년 3월 4일자로 출원된 미국 특허 가출원 제61/449,370호에 대한 우선권을 주장한다.
본 발명은 일반적으로 통신 장치들에 관한 것이며, 더욱 구체적으로, 통신 장치들에 의해 서비스되는 소프트웨어 보안 및 컨텐츠 보안에 관한 것이다.
통신 시스템들이 잘 알려져 있다. 이러한 통신들은 무선 네트워크들, 유선 네트워크들, 위성 네트워크들 및 다양한 다른 유형들의 네트워크들을 포함한다. 지금 현재에는, 이 네트워크들은 스트리밍되는 오디오 및 비디오 컨텐츠의 큰 용량들을 지원한다. 이러한 컨텐츠는 비디오 컨텐츠, 오디오 컨텐츠, 오디오/비디오 컨텐츠, 스트리밍되는 컨텐츠, 디지털 컨텐츠, 스트리밍되는 디지털 컨텐츠 중의 하나 이상으로서 이하에서 지칭된다. 이러한 컨텐츠는 스트리밍될 수 있고, 그 다음으로, 추후의 제공을 위해 전자 장치 상에 저장될 수 있거나 수신 시에 간단하게 제공될 수 있다. 이러한 모든 디지털 컨텐츠는 그와 함께 설정된 소유권을 가진다. 하나 이상의 통신 네트워크들을 가로질러 송신되는 디지털 컨텐츠의 소유자가 인가된 이용으로부터 보호되기 위해서는, 디지털 컨텐츠는 전형적으로 스크램블(scramble)/암호화(encrypt)/인코딩(encode)되거나, 비인가된 이용(unauthorized use)을 배제하는 또 다른 기술을 이용하여 보호된다.
오디오 및 비디오 컨텐츠가 공통으로 스트리밍되는 현재 존재하는 네트워크들은 케이블 모뎀 네트워크들, 위성 서비스 제공자 네트워크들, 무선 광역 네트워크들, 디지털 가입자 라인(DSL : digital subscriber line) 네트워크들, 및 서비스 제공자 장치 또는 서버로부터 클라이언트 장치 또는 중간 장치로 컨텐츠가 스트리밍되는 다른 유형들의 네트워크들이다. 서비스 제공자 네트워크들은 비인가된 이용자들을 컨텐츠를 가로채고(intercept) 이를 이용하는 것을 배제하기 위한 세이프가드(safeguard)들을 전형적으로 포함한다. 네트워크 조작자(operator)들은 전형적으로 보안 소프트웨어를 클라이언트 장치들에 로딩하고, 서버 장치들 및 클라이언트 장치들 사이에 보안 링크(secure link)들을 설정하고, 및/또는 디지털 컨텐츠를 암호화하므로, 디지털 컨텐츠를 가로채고 복사하는 것이 용이할 수 없다. 또한, 이 네트워크들은 지금까지 사설의 제한된 액세스의 네트워크들이었다. 그러나, 이 네트워크들의 클라이언트 장치들, 예를 들어, 셋톱 박스(STB : set top box)들은 개인용 컴퓨터(PC : personal computer)들을 위해 사전에 예약된 어플리케이션(application)들을 실행하기 위해 점점 이용되고 있다. 현재, STB들은 인터넷(Internet)과 같은 네트워크들을 개방하기 위하여 접속될 수 있다. 과거의 시스템들에 있어서, STB들은 종종 시스템들 내에 코드 서명 인증 및 다른 확인 기술들을 포함하는 제공자 네트워크의 세이프가드들에 의해 보호되는 폐쇄된 시스템(closed system)들이었다.
STB의 중앙 CPU가 인터넷 컨텐츠를 액세스함으로써, 중앙 CPU는 해킹(hacking), 바이러스(viruse)들, 및 보안 STB를 위험에 빠뜨리는 다른 컨텐츠에 의한 공격에 취약하다. 전형적으로, 해커가 STB를 액세스할 때, 해커는 코드 업데이트들을 우회하고, 그렇지 않을 경우에는, STB에 의해 실행되는 코드를 변형시킨다. 코드가 취약해지도록 함으로써, 해커는 STB에 의해 수신 및 처리되는 스트리밍되는 컨텐츠를 액세스할 수 있다. 이러한 방식으로, 해커는 컨텐츠를 가져갈 수 있고, 이윤을 위해 그것을 다시 판매할 수 있다. 서비스 제공자들은 STB에 다운로드되는 다양한 코드에 대해 코드 버전(code version)들을 할당함으로써 이 문제를 극복하도록 시도하였다. 그러나, 해커들은 코드 업데이트들을 차단함으로써, 또는 서비스 제공자 장치들이 STB가 유효한 소프트웨어를 실행하는 것으로 믿도록 속임으로써, 이 보안 조치를 극복할 수 있다.
관련된 기술과 연관된 이러한 그리고 다른 제한들 및 결함들은 도면들을 참조하여 본 명세서에서 기재된 바와 같은 본 발명의 다양한 측면들을 이러한 관련된 기술과 비교한 후에, 당업자들에 의해 더욱 완전히 인식될 수 있다.
본 발명은 통신 장치들에 의해 서비스되는 소프트웨어 보안 및 컨텐츠 보안을 달성하기 위한 장치 및 방법을 제공하는 것을 목적으로 한다.
하나의 측면에 따르면, 장치는,
디지털 메시지들 및 디지털 컨텐츠를 수신하도록 동작가능한 통신 인터페이스;
소프트웨어 명령들, 상기 디지털 메시지들, 및 상기 디지털 컨텐츠를 저장하도록 동작가능한 메모리; 및
상기 통신 인터페이스 및 상기 메모리에 결합되어, 디지털 메시지를 수신하고, 상기 디지털 메시지로부터 키이 부분을 추출하고, 상기 디지털 메시지로부터 권리 부분을 추출하고, 상기 권리 부분에 기초하여 코드 버전을 결정하고, 상기 메모리로부터 저장된 코드 버전을 판독하고, 상기 소프트웨어 명령들을 검증하기 위하여 상기 코드 버전을 상기 저장된 코드 버전과 비교하도록 동작가능한 처리 회로를 포함한다.
바람직하게는, 상기 처리 회로는 상기 코드 버전과 상기 저장된 코드 버전의 긍정적이지 않은(unfavorable) 비교 시에, 에러 작업을 시작하도록 추가적으로 동작가능하다.
바람직하게는, 상기 에러 작업을 시작할 때, 상기 처리 회로는,
소프트웨어 명령 재로딩(reloading)을 위하여 메시지를 서비스 제공자 장치에 송신하는 것;
재부팅(reboot); 및
상기 디지털 컨텐츠의 복호화 디스에이블(disable) 중의 적어도 하나를 수행하도록 동작가능하다.
바람직하게는, 상기 장치는,
케이블 셋톱 박스 수신기;
위성 셋톱 박스 수신기;
디지털 가입자 라인(DSL : digital subscriber line) 셋톱 박스 수신기;
무선 광역 네트워크(WWAN : wireless wide area network) 수신기;
클라이언트 컴퓨터;
태블릿 컴퓨팅 장치; 및
전화 중의 적어도 하나를 포함한다.
바람직하게는, 상기 디지털 메시지로부터 상기 권리 부분을 추출할 때, 상기 처리 회로는,
복호화된 결과를 생성하기 위하여 상기 키이 부분을 복호화하고,
복호화된 권리 부분을 생성하기 위하여 상기 복호화된 결과를 이용하여 상기 권리 부분을 복호화하도록 동작가능하다.
바람직하게는, 상기 복호화된 권리 부분은 무결성 부분(integrity portion) 및 코드 버전을 포함한다(무결성 부분은 알려진 상수, 코드 버전의 SHA 요약, 등이다).
바람직하게는, 상기 처리 회로는 중앙 처리기 및 보안 처리기를 포함하고, 상기 보안 처리기는 상기 소프트웨어 명령들을 검증하기 위하여 상기 코드 버전을 상기 저장된 코드 버전과 비교한다.
바람직하게는, 상기 키이 부분 및 상기 권리 부분은 암호 방식으로 함께 연결된다.
하나의 측면에 따르면, 방법은,
전자 장치에 의한 디지털 메시지를 원격 장치로부터 수신하는 단계;
상기 디지털 메시지로부터 키이 부분을 추출하는 단계;
상기 디지털 메시지로부터 권리 부분을 추출하는 단계;
상기 권리 부분에 기초하여 코드 버전을 결정하는 단계;
메모리로부터 저장된 코드 버전을 판독하는 단계; 및
저장된 소프트웨어 명령들을 검증하기 위하여 상기 코드 버전을 상기 저장된 코드 버전과 비교하는 단계를 포함한다.
바람직하게는, 상기 방법은 상기 코드 버전과 상기 저장된 코드 버전의 긍정적이지 않은 비교시에, 에러 작업을 시작하는 단계를 더 포함한다.
바람직하게는, 상기 에러 작업을 시작하는 단계는,
소프트웨어 명령 재로딩을 위하여 메시지를 서비스 제공자 장치에 송신하는 것;
재부팅; 및
상기 디지털 컨텐츠의 복호화의 디스에이블 중의 적어도 하나를 포함한다.
바람직하게는, 상기 디지털 메시지로부터 상기 권리 부분을 추출하는 단계는,
복호화된 결과를 생성하기 위하여 상기 키이 부분을 복호화하는 단계; 및
복호화된 권리 부분을 생성하기 위하여 상기 복호화된 결과를 이용하여 상기 권리 부분을 복호화하는 단계를 포함한다.
바람직하게는, 상기 복호화된 권리 부분은 무결성 부분 및 코드 버전을 포함한다.
바람직하게는, 상기 키이 부분 및 상기 권리 부분은 암호 방식으로 함께 연결된다.
하나의 측면에 따르면, 장치는,
통신 인터페이스;
소프트웨어 명령들을 저장하도록 동작가능한 메모리;
상기 메모리에 결합된 중앙 처리기; 및
상기 메모리 및 상기 중앙 처리기에 결합된 보안 처리기를 포함하고,
상기 보안 처리기는,
상기 중앙 처리기의 기능 세트(function set)를 디스에이블하고;
난수를 생성하고;
서비스 제공자 장치에 의해 알려진 보안 키이로 상기 난수를 암호화하고;
상기 서비스 제공자 장치로의 암호화된 난수의 송신을 시작하고;
상기 서비스 제공자 장치로부터 응답 메시지를 수신하고;
상기 응답 메시지를 복호화하고;
권리 부분에 대한 복호화된 응답 메시지로부터 코드 버전을 추출하고;
상기 메모리로부터 저장된 코드 버전을 판독하고;
상기 소프트웨어 명령들을 검증하기 위하여 상기 코드 버전을 상기 저장된 코드 버전과 비교하고, 긍정적인(favorable) 비교 시에, 상기 중앙 처리기의 상기 기능 세트를 가능하게 하도록 동작가능하다.
바람직하게는, 상기 보안 처리기는 상기 코드 버전과 상기 저장된 코드 버전의 긍정적이지 않은 비교 시에, 에러 작업을 시작하도록 추가적으로 동작가능하다.
바람직하게는, 상기 에러 작업을 시작할 때, 상기 보안 처리기는 소프트웨어 명령 재로딩을 시작하기 위하여 메시지를 상기 서비스 제공자 장치에 송신하도록 동작가능하다.
바람직하게는, 상기 보안 처리기는,
제 1 보안 키이로 상기 난수를 암호화하고,
제 2 보안 키이로 상기 응답 메시지를 복호화하도록 동작가능하고, 상기 제 1 및 제 2 보안 키이들은 상기 보안 처리기 및 상기 서비스 제공자 장치 모두에 의해 알려져 있다.
바람직하게는, 상기 복호화된 응답 메시지는 무결성 부분 및 코드 버전을 포함한다.
하나의 측면에 따르면, 통신 인터페이스, 메모리, 중앙 처리기, 및 보안 처리기를 갖는 전자 장치의 방법이 제공되고, 상기 방법은,
상기 중앙 처리기의 기능 세트를 디스에이블하는 단계;
난수를 생성하는 단계;
서비스 제공자 장치에 의해 알려진 보안 키이로 상기 난수를 암호화하는 단계;
상기 서비스 제공자 장치로의 암호화된 난수의 송신을 시작하는 단계;
상기 서비스 제공자 장치로부터 응답 메시지를 수신하는 단계;
상기 응답 메시지를 복호화하는 단계;
권리 부분에 대한 복호화된 응답 메시지로부터 코드 버전을 추출하는 단계;
상기 메모리로부터 저장된 코드 버전을 판독하는 단계; 및
소프트웨어 명령들을 검증하기 위하여 상기 코드 버전을 상기 저장된 코드 버전과 비교하고, 긍정적인 비교 시에, 상기 중앙 처리기의 상기 기능 세트를 가능하게 하는 단계를 포함한다.
바람직하게는, 상기 방법은 상기 코드 버전과 상기 저장된 코드 버전의 긍정적이지 않은 비교 시에, 에러 작업을 시작하는 단계를 더 포함한다.
바람직하게는, 상기 방법은 에러 작업을 시작할 때, 소프트웨어 명령 재로딩을 시작하기 위하여 메시지를 상기 서비스 제공자 장치에 송신하는 단계를 더 포함한다.
바람직하게는, 상기 방법은,
제 1 보안 키이로 상기 난수를 암호화하는 단계; 및
제 2 보안 키이로 상기 응답 메시지를 복호화하는 단계를 더 포함하고, 상기 제 1 및 제 2 보안 키이들은 상기 보안 처리기 및 상기 서비스 제공자 장치 모두에 의해 알려져 있다.
바람직하게는, 상기 복호화된 응답 메시지는 무결성 부분 및 코드 버전을 포함한다.
하나의 측면에 따르면, 장치는,
원격 장치로부터 디지털 데이터를 수신하도록 동작가능한 통신 인터페이스;
소프트웨어 명령들 및 디지털 컨텐츠를 저장하도록 동작가능한 메모리; 및
상기 통신 인터페이스 및 상기 메모리에 결합되어, 상기 디지털 데이터를 수신하고, 복호화된 컨텐츠 및 암호화된 코드 버전 메시지를 생성하기 위하여 제 1 복호화 기술을 이용하여 상기 디지털 데이터를 복호화하고, 참조 코드 버전을 포함하는 코드 버전 메시지를 생성하기 위하여 제 2 복호화 기술을 이용하여 상기 암호화된 코드 버전 메시지를 복호화하고, 상기 메모리로부터 저장된 코드 버전을 판독하고, 상기 소프트웨어 명령들을 검증하기 위하여 상기 참조 코드 버전을 상기 저장된 코드 버전과 비교하도록 동작가능한 처리 회로를 포함한다.
바람직하게는, 상기 처리 회로는 상기 참조 코드 버전과 상기 저장된 코드 버전의 긍정적이지 않은 비교 시에, 에러 작업을 시작하도록 추가적으로 동작가능하다.
바람직하게는, 상기 에러 작업을 시작할 때, 상기 처리 회로는,
소프트웨어 명령 재로딩을 위하여 메시지를 서비스 제공자 장치에 송신하는 것;
재부팅; 및
상기 디지털 데이터의 복호화의 디스에이블 중의 적어도 하나를 수행하도록 동작가능하다.
하나의 측면에 따르면, 방법은,
원격 전자 장치로부터 디지털 데이터를 수신하는 단계;
복호화된 컨텐츠 및 암호화된 코드 버전 메시지를 생성하기 위하여 제 1 복호화 기술을 이용하여 상기 디지털 데이터를 복호화하는 단계;
참조 코드 버전을 포함하는 코드 버전 메시지를 생성하기 위하여 제 2 복호화 기술을 이용하여 상기 암호화된 코드 버전 메시지를 복호화하는 단계;
상기 메모리로부터 저장된 코드 버전을 판독하는 단계; 및
상기 소프트웨어 명령들을 검증하기 위하여 상기 참조 코드 버전을 상기 저장된 코드 버전과 비교하는 단계를 포함한다.
바람직하게는, 상기 방법은 상기 참조 코드 버전과 상기 저장된 코드 버전의 긍정적이지 않은 비교 시에, 에러 작업을 시작하는 단계를 더 포함한다.
바람직하게는, 상기 에러 작업을 시작하는 단계는,
소프트웨어 명령 재로딩을 위하여 메시지를 서비스 제공자 장치에 송신하는 것;
재부팅; 및
상기 디지털 데이터의 복호화의 디스에이블 중의 적어도 하나를 포함한다.
본 발명에 따르면, 통신 장치들에 의해 서비스되는 소프트웨어 보안 및 컨텐츠 보안을 달성하기 위한 장치 및 방법이 얻어진다.
도 1은 본 발명의 하나 이상의 실시예들을 구현하는 통신 시스템을 예시하는 시스템 도면이다.
도 2는 본 발명의 하나 이상의 실시예들에 따라 구성되고 동작되는 STB를 예시하는 블럭도이다.
도 3은 본 발명의 하나 이상의 실시예들에 따라 동작들을 예시하는 순서도이다.
도 4는 본 발명의 하나 이상의 실시예들의 구조 및 동작들을 예시하는 블럭도이다.
도 5는 본 발명의 하나 이상의 실시예들에 따라 동작들을 예시하는 순서도이다.
도 6은 본 발명의 하나 이상의 실시예들에 따라 컨텐츠 보호를 위한 동작들을 예시하는 순서도이다.
도 7은 STB 또는 클라이언트 장치에 의한 수신 시에 디지털 컨텐츠를 보호하기 위하여 본 발명의 하나 이상의 실시예들의 동작들을 기능적으로 예시하는 블럭도이다.
도 8은 트랜스코딩(transcoding) 중에 디지털 컨텐츠를 보호하기 위하여 본 발명의 실시예에 따라 동작을 예시하는 순서도이다.
도 9a는 트랜스코딩 처리 중에 CPU로부터 디지털 컨텐츠를 보호하기 위한 동작들을 예시하는 순서도이다.
도 9b는 STB 또는 클라이언트 장치의 트랜스코딩 처리에서 이용하기 위한 보호된 메모리의 할당 시에 STB 또는 클라이언트 장치의 동작들을 예시하는 순서도이다.
도 10은 본 발명의 하나 이상의 실시예들에 따라 트랜스코딩 중인 CPU에 의한 액세스로부터 보호되어야 하는 컨텐츠를 식별하기 위한 특정 동작들을 예시하는 순서도이다.
도 11은 트랜스코딩 중에 디지털 컨텐츠를 보호하기 위한 구조를 포함하는 클라이언트 장치 또는 STB의 구조를 예시하는 블럭도이다.
도 12는 본 발명의 하나 이상의 실시예들을 구현하는 또 다른 구조를 예시하는 블럭도이다.
도 13은 멀티-스테이지(multi-stage) 암호화 시스템에서 코드 버전 메시지를 보안성 있게 전달하기 위하여 본 발명에 따라 동작들을 예시하는 순서도이다.
도 14는 하나 이상의 실시예들에서 행해지는 바와 같이 도 13의 동작들을 추가적으로 예시하는 블럭도이다.
도 1은 본 발명의 하나 이상의 실시예들을 구현하는 통신 시스템을 예시하는 시스템 도면이다. 도 1의 시스템(100)은 헤드 엔드(head end)일 수 있는 서비스 제공자 장치(102), 셋톱 박스(STB : set-top box)(104), 인터넷 백본(Internet backbone)(106), 및 STB(104)에 의해 지원되는 복수의 장치들을 포함한다. 서비스 제공자 장치(102)는 위성 통신 시스템 기반 장치, 무선 시스템 지원된 장치, 또는 매체 기반 네트워크 지원된 통신 장치 중의 하나 이상일 수 있다. 매체 기반 통신 장치는 케이블 모뎀 네트워크, 디지털 가입자 라인 동작들을 지원하는 전화 네트워크, 광 네트워크, 또는 서비스 제공자 장치(102)로부터 그리고 서비스 제공자 장치(102)로의 통신들을 결합하는 매체를 갖는 또 다른 유형의 네트워크, 또는 이들의 조합에 의해 지원될 수 있다. 서비스 제공자 장치(102)는 헤드 엔드, 서버 컴퓨터, 컨텐츠 서버, 서버 제공자 컴퓨터로서 지칭될 수 있고, 및/또는 본 명세서에서 그 다른 설명들과 상호교환가능할 수 있다. 서비스 제공자 장치(102)는 하나 이상의 수신기들 및 디코더들(124), 하나 이상의 서버 구성요소들(128), 하나 이상의 디지털화된 로컬 비디오 소스들(130), 소프트웨어 버전 집행 기능부(132), 및 컨텐츠 보호 집행 기능부(134)를 포함한다.
서비스 제공자 장치(102)는 인터넷 백본(106)에 결합된다. 서비스 제공자 장치(102)는 인터넷 백본(106)을 통해 STB(104)에 결합될 수 있다. 또한, 서비스 제공자 장치(102)는 통신 네트워크의 유형을 통해, 예를 들어, 위성 네트워크, 케이블 모뎀 네트워크, DSL 네트워크, 광 네트워크, 특정 서비스 제공자의 무선 네트워크를 통해, STB(104)에 통신가능하게 결합된다. 헤드 엔드 장치(102)는 그 서비스 제공자 네트워크에 결합하기 위하여 위성 접시(satellite dish)(136), 안테나(138), 및 매체 인터페이스(140) 중의 하나 이상을 포함한다. 서비스 제공자 장치(102)는 컨텐츠를 STB(104)에 스트리밍할 수 있고, 및/또는 STB(104)에 대한 인터넷 액세스를 제공할 수 있다. 비디오 및 오디오 컨텐츠를 STB(104)에 스트리밍함에 있어서, 서비스 제공자 장치(102)는 물론, 디지털 컨텐츠가 견고한 보호 기술들을 통해 보호되기를 희망한다. 또한, 서비스 제공자 장치(102)는 STB(104)에 의해 실행되는 소프트웨어를 제어하고, 보호된 오디오 및 비디오 컨텐츠의 해킹 및 가로채기를 회피하도록 견고하게 제어되는 소프트웨어를 가질 것을 희망한다.
STB(104)는 소프트웨어 버전 집행 기능부(142), 컨텐츠 보호 집행 기능부(144), 및 도 2를 참조하여 본 명세서에서 추가적으로 설명될 다양한 다른 구성요소들을 포함한다. STB(104)는 서비스 제공자 장치(102)와의 통신을 지원하기 위하여, 위성 접시(146), 안테나(148), 및 매체 인터페이스(150) 중의 하나 이상과 결합된다. STB(104)는 비디오 시스템(108), 개인용 비디오 레코더(PVR : Personal Video Recorder)(110), 개인 데이터 보조장치(PDA : Personal Data Assistant)(112), 포켓 TV(114), 텔레비전/매체 시스템(116), 셀 전화(118), 시계(120), 및 디지털 컴퓨터(122)에 대해 서비스한다. 이 장치들(108, 110, 112, 114, 116, 118, 120 및 122)은 그 특정 실시예에 따라 유선 또는 무선으로 지원될 수 있다. 이러한 경우, STB(104)는 이 다양한 장치들(108-122)의 각각에 대해 인터넷 서핑 기능(Internet surfing functionality)을, 이 장치들에 대해 스트리밍되는 오디오 지원을, 및/또는 이 장치들에 대해 스트리밍되는 비디오 지원을 제공한다. 장치들(108-122)은 가정, 영업소(business premises), 또는 이 장치들(108-122)이 상주하는 일부 다른 현장 내에서 지원될 수 있다.
도 1의 시스템(100)은 본 발명의 실시예들에 따라 다양한 동작들을 지원한다. 본 발명의 제 1 실시예에 따르면, 서비스 제공자 장치(102) 및 STB(104)는 협력하여 STB(104) 상의 소프트웨어의 소프트웨어 버전 견고성을 집행한다. 이러한 경우, 본 발명의 실시예들을 이용하면, 서비스 제공자 장치(102) 및 STB(104)는 STB(104)에 의해 로딩 및 실행되는 소프트웨어의 적절하고 정확한 코드가 사용되고 있는지를 확인할 수 있다. 이러한 경우, 적절한 소프트웨어 버전 STB(104)가 사용되고 있음을 보장함으로써, 디지털 컨텐츠 및 다른 다운로드된 컨텐츠의 위험의 최소화가 지원된다. 이와 마찬가지로, STB(104) 및 헤드 엔드(102)는 협력하여 헤드 엔드(102)로부터 STB(104)로 스트리밍되는 컨텐츠를 보호하도록 작동한다. 본 발명의 실시예들의 이 다양한 동작들은 본 명세서의 도 3 내지 도 5를 참조하여 본 명세서에서 설명될 것이다.
본 발명의 또 다른 측면에 따르면, STB(104)에 다운로드되는 디지털 컨텐츠는, 이러한 컨텐츠가 이용가능해야 된다는 징후가 STB(104)에 의해 수신된 하나 이상의 메시지들과 함께 포함될 경우, STB(104)의 중앙 CPU에 의해서만 이용가능하게 된다. 이러한 경우, 표시들은 STB(104) 또는 클라이언트 장치에 의해 수신된 ECM 또는 다른 메시지에 의해 수신될 수 있다. 이 원리들 및 동작들은 본 명세서의 도 6 및 도 7을 참조하여 더욱 설명될 것이다.
본 발명의 또 다른 측면에 따르면, STB(104)의 보안 CPU는 트랜스코딩 처리 중에 STB(104)의 트랜스코더에 의해 동작되는 보호된 데이터에 대한 중앙 CPU에 의한 액세스를 배제하도록 동작한다. 본 발명의 이 측면들은 본 명세서의 도 8 내지 도 11을 참조하여 설명될 것이다. STB(104)의 중앙 CPU(212) 및 보안 CPU(214)는 서비스 제공자 장치(102)로부터 또는 STB(104)에 통신가능하게 결합된 또 다른 장치로부터 STB로 다운로드되는 컨텐츠를 보호하기 위하여, 서로 통신하도록 동작할 수 있다.
본 발명의 원리들을 구체화하는 클라이언트/서버 구현예는 도 12를 참조하여 본 명세서에서 설명된다. 도 1 내지 도 11을 참조하여 본 명세서에서 설명된 모든 원리들은 도 12의 구조에 의해 구현될 수 있다.
본 발명의 하나 이상의 실시예들에 따라 멀티-스테이지 암호화된 "코드 버전 메시지(code version message)"의 수신 및 처리를 위한 기술은 도 13 및 도 14를 참조하여 본 명세서에서 더욱 설명된다.
도 2는 본 발명의 하나 이상의 실시예들에 따라 구성 및 동작되는 STB를 예시하는 블럭도이다. STB(102)는 STB(104)와 헤드 엔드(102) 및/또는 인터넷 백본(106) 사이의 통신들을 지원하기 위하여, 위성 접시(146), 안테나(148), 및/또는 매체(150) 중의 하나 이상과 결합되는 서비스 제공자 네트워크 인터페이스(202)를 포함한다. 예를 들어, STB(104)는 헤드 엔드(102)를 통해 인터넷 서비스를 수신할 수 있거나, 하나 이상의 상이한 접속들을 통해 인터넷에 대한 별도의 인터페이스를 가질 수 있다. 이와 마찬가지로, STB(102)는 하나 이상의 무선 로컬 영역 네트워크(WLAN : wireless local area network), 무선 개인 영역 네트워크(WPAN : wireless personal area network), 및 무선 광역 네트워크(WWAN : wireless wide area network) 인터페이스(204)를 포함한다. 이 인터페이스(204)는 STB(104)가 통신하는 하나 이상의 WLAN/WPAN/WWAN들과의 통신들을 지원한다. 또한, STB(104)는 STB(104)와 하나 이상의 LAN들 또는 WAN들 사이의 통신들을 지원하는 로컬 영역 네트워크(LAN)/광역 네트워크(WAN) 인터페이스(206)를 포함한다.
STB(104)는 하나 이상의 사용자 인터페이스들(208), 비디오 출력 인터페이스(210), 중앙 CPU(212), 보안 CPU(214), 메모리(216), 보안 메모리(218), 비디오 컨텐츠 버퍼들(220), 및 비디오 처리 회로(222)를 더 포함한다. 사용자 인터페이스들(208)은 키보드, 마우스, 비디오 디스플레이, 또는 사용자가 STB(104)를 인터페이스하도록 하는 다른 유형들의 장치들에 대한 인터페이스를 포함할 수 있다. 예를 들어, STB(104)는 모니터(monitor) 및 오디오 장비를 포함하는 오디오/비디오 시스템에 직접 결합될 수 있다. 이러한 경우, STB(104)는 비디오 출력 I/F(210)를 통해 헤드 엔드(102)로부터 STB(104)에 의해 서비스되는 하나 이상의 출력들로 비디오를 스트리밍하도록 서비스하고, 상기 출력들은 오디오/비디오 장비에 직접 결합되거나 하나 이상의 디스플레이들에 직접 결합된다.
중앙 CPU(212)는 시스템 처리 유닛, 디지털 신호 처리기, 구성가능한 로직, 커스텀 로직(custom logic), 주문형 반도체(ASIC : Application Specific Integrated Circuit), 디지털 신호 처리기(DSP : Digital Signal Processor)들, 또는 컴퓨터 소프트웨어 명령들을 처리할 수 있고 BUS에 의해 결합된 다양한 구성요소들을 액세스할 수 있는 임의의 다른 유형의 디지털 회로와 같은 하나 이상의 처리 장치들을 포함한다. 또한, 보안 CPU(214)는 하나 이상의 처리기들, DSP들, 또는 소프트웨어 명령들을 실행할 수 있고 메모리에 대해 판독 및 기록할 수 있는 다른 장치들을 포함한다. 일반적으로, 보안 CPU(214)는 보안 동작들을 위한 것이고, 인터넷 브라우저(Internet Browser)들 및 사용자 프로그래밍과 같은 비-보안(non-secure) 소프트웨어 프로그램들을 실행하지 않으며, 다시 말하면, 보안 CPU(214)는 가입자 네트워크의 장치들에 의해 밀접하게 결합된다.
메모리(216)는 DRAM, SRAM, ROM, PROM, 광 메모리, 자기 메모리, 플래시 메모리, 또는 컴퓨터 소프트웨어 명령들 및/또는 데이터를 저장할 수 있고 그것에 대한 액세스를 제공할 수 있는 임의의 다른 유형의 메모리 중의 하나 이상을 포함한다. 일부 실시예들에서, 메모리는 휘발성 메모리(volatile memory) 및 비휘발성 메모리(non-volatile memory)를 모두 포함한다. 전형적으로, 코드 버전 및 다른 참조 데이터가 비휘발성 메모리 내에 저장될 것이므로, 전원 차단(power down) 동안에는 변하지 않는 상태로 유지될 것이다. 보안 메모리(218)는 메모리(216)와 유사한 구조를 가지지만, 보안 CPU(214)에 의해 제한되는 그 액세스를 가질 수 있다. 비디오 컨텐츠 버퍼들(220)은 비디오 컨텐츠가 STB(104)에 의해 수신되거나 송신될 때, 비디오 컨텐츠를 저장하도록 작동한다. 비디오 처리 회로는 스트리밍되는 비디오 및/또는 오디오 컨텐츠를 역다중화(demultiplex), 복호화(decrypt), 디코딩(decode), 트랜스코딩(transcode), 인코딩(encode), 암호화(encrypt), 및/또는 다중화(multiplex)하도록 동작가능한 하나 이상의 구성요소들을 포함한다.
본 발명의 또 다른 측면에 따르면, STB(104)에 다운로드되는 디지털 컨텐츠는, 이러한 컨텐츠가 이용가능해야 된다는 징후가 STB(104)에 의해 수신된 하나 이상의 메시지들과 함께 포함될 경우, 중앙 CPU(212)에 의해서만 이용가능하게 된다. 이러한 경우, 그 표시들은 STB(104) 또는 클라이언트 장치에 의해 수신된 ECM 또는 또 다른 메시지에 의해, 또는 키이(key)들을 또한 송신하는 헤드 엔드에 의해 운반되는 임의의 메시지에 의해 수신될 수 있다. 코드 버전 및/또는 컨텐츠 액세스 권리들을 키이 전달 시스템에 연결함으로써, 본 발명의 실시예들은 헤드 엔드(102) 명령들을 우회하기 위한 임의의 시도가 컨텐츠를 복호화할 수 없는 상태에 도달할 것이라는 점을 보장한다.
또한, 본 발명의 교시 내용들은 케이블카드(CableCard)들과 같은 장치들에 적용될 수 있으며, 이 케이블카드들은 보안 채널을 통해 STB(104)와의 복사방지(CP : Copy Protection) 키이 교환에 연결되는 헤드 엔드(102)로부터 정보를 수신할 수 있다. 이 교시 내용들은 보안 메시지들을 통해 키이들을 송신하는 IP 전달 시스템들에 적용될 수도 있다. 이 원리들 및 동작들은 예를 들어, 본 명세서의 도 6 및 도 7을 참조하여 더욱 설명될 것이다.
본 발명의 또 다른 측면에 따르면, STB(104)에 다운로드되는 디지털 컨텐츠는, 이러한 컨텐츠가 이용가능해야 된다는 징후가 STB(104)에 의해 수신된 하나 이상의 메시지들과 함께 포함될 경우, 중앙 CPU(212)에 의해서만 이용가능하게 된다. 이러한 경우, 그 표시들은 특수한 보충 메시지로서, 예를 들어, STB(104) 또는 클라이언트 장치에 의해 수신된, MPEG-2 비디오로 된 기초 스트림 사용자 데이터(elementary stream user data), 또는 H.264 비디오로 된 보충 강화 정보(SEI : supplemental enhancement information) 메시지로서, 암호화된 컨텐츠 스트림 내에서 수신될 수 있다. 컨텐츠 디스크램블러(descrambler)는 이 특수한 코드 버전 메시지를 보안성 있게 복호화할 수 있고, 그것을 보안 CPU(214)에 의해서만 액세스될 수 있는 보안 레지스터 또는 메모리에 저장할 수 있다. 메커니즘의 견고성을 보장하기 위하여, 이 메시지는 예를 들어, 비디오 시퀀스 헤더(video sequence header), I-픽처 헤더(I-picture header) 등과 함께, 컨텐츠의 중요한 코딩 구조 내에 항상 삽입될 수 있다. 보안 레지스터 또는 메모리는 코드 버전 메시지의 변경만을 업데이트한다. 이 교시 내용들은 도 13 및 도 14를 참조하여 더 논의될 것이다. 이 도면들에서 도시되어 있는 바와 같이, 컨텐츠는 암호화를 위하여 블럭(block)들로 분할된다. 암호화/스크램블링의 각 스테이지에 대하여, 코드 버전 메시지의 일부가 하나의 암호화된 블럭 내의 컨텐츠와 함께 항상 암호화되는 것과 같은 방식으로, 코드 버전 메시지가 삽입된다. 이것은 코드 버전 메시지를 우회시키기 위한 임의의 시도가 컨텐츠를 디코딩 불가능하게 할 것이라는 점을 보장한다. 또한, 이것은 보안 코드 버전 업데이트들을 지원하기 위하여 멀티-스테이지 트랜스크립션(multi-stage transcryption)을 가능하게 한다.
본 발명의 또 다른 측면에 따르면, 보안 CPU(214)는 트랜스코딩 처리 중에 비디오 처리 회로(222)의 트랜스코더에 의해 동작되는 보호된 데이터에 대한 중앙 CPU(212)에 의한 액세스를 배제하도록 동작한다. 본 발명의 이 측면들은 본 명세서의 도 8 내지 도 11을 참조하여 설명될 것이다. 본 발명의 또 다른 측면에 따르면, STB(104)의 중앙 CPU(212) 및 보안 CPU(214)는 STB(104)에 통신가능하게 결합된 서비스 제공자 장치(102) 또는 또 다른 장치로부터 STB로 다운로드되는 컨텐츠를 보호하기 위하여 서로 통신하도록 동작한다.
도 3은 본 발명의 하나 이상의 실시예들에 따라 동작들을 예시하는 순서도이다. 도 3의 동작들은 도 1의 서비스 제공자 장치(102)와 협력하여 STB(104)에 의해 수행된다. 또 다른 구현예에 있어서, 도 3의 동작들(300)은 도 12의 시스템(1200)에 의해 수행된다. 도 3의 동작들(300)은 STB(104)(또는 다른 클라이언트 장치) 상에 유효한 소프트웨어 명령들이 존재하는지 여부를 보증하거나 결정하도록 작동한다.
동작들(300)은 STB가 권리 부분(rights portion) 및 키이 부분(key portion)을 포함하는 원격 장치로부터 디지털 메시지를 수신하면서(단계(302)) 시작된다. 원격 장치는 도 1의 헤드 엔드(102) 또는 또 다른 서버-유형 장치(server-type device)일 수 있다. 디지털 메시지의 구조는 도 4를 참조하여 더욱 설명된다. 특히, 도 4의 실시예에 있어서, 디지털 메시지는 STB로부터 수신된 스트리밍되는 오디오 및/또는 비디오 컨텐츠의 복호화와 관련되는 키이 부분을 포함한다. 권리 부분은 STB 상에 저장되는 소프트웨어를 검증하기 위하여 추후에 이용되는 디지털 메시지의 일부이다. 다른 실시예들에 있어서, 권리 부분은 클라이언트 장치에 송신되는 다른 유형들의 데이터의 암호화와 관련된다.
동작(300)은 STB가 디지털 메시지로부터 키이 부분을 추출하면서(단계(304)) 계속된다. 그 다음으로, 동작은 STB가 디지털 메시지로부터 권리 부분을 추출하면서(단계(306)) 계속된다. 디지털 메시지는 헤드 엔드(102)가 STB(104)에 송신하는 자격 제어 메시지(ECM : Entitlement Control Message)일 수 있다. 일부 시스템들은 ECM들을 이용하지 않을 수 있다. 케이블카드 시스템들에서는, 디지털 메시지는 암호화된 데이터 내에 내장된 헤드 엔드에 의해 송신될 수 있고, 그 다음으로 케이블카드에 의해 추출될 수 있고, CP 키이와 동시에 보안 채널을 이용하여 STB(104)에 운반될 수 있다. STB(104)로의 이러한 운반은 끊김 없는 것이어서, STB(104)에 송신되는 권리들과의 충돌은 또한 CP 키이가 로딩되는 것을 방지할 것이다. IP 전달 시스템들에서는, CA에 대한 것과 동일한 방식으로 권리 필드를 보호하기 위하여, 권리 필드(rights field)는 컨텐츠 복호화 키이로 밀접하게 암호화될 수도 있다. 본 발명의 교시 내용들은 컨텐츠의 소스(source) 또는 전달 방법에 관계없이, 모든 컨텐츠 및 키이 전달 메커니즘들에 적용될 수 있다.
디지털 메시지는 스마트 카드를 통해, 보안 채널을 이용하는 케이블카드를 통해, 또는 임의의 다른 수단을 통해, STB(104) 내에서, 도 2를 참조하여 이전에 설명된 보안 처리기(214)로 라우팅될 수 있다. 통상적인 ECM들은 컨텐츠 디코딩의 목적들을 위해 추후에 이용되는 키이를 포함한다. 본 발명에 따르면, 권리 필드는 헤드 엔드(102)로부터 STB(104)로 송신되는 ECM 또는 다른 메시지에 추가된다. 이 권리 필드는, 키이 및 권리가 암호화된 도메인(domain)에서 분리될 수 없도록 추가되어, 권리 필드의 보안 처리기로의 전달과의 충돌은 키이 전달과도 충돌할 것이다.
동작(300)은 STB가 디지털 메시지의 키이 부분을 복호화하면서(단계(308)) 계속된다. 그 다음으로, 동작(300)은 STB가 디지털 메시지의 권리 부분을 복호화하는 단계(단계(310))를 포함한다. 도 4를 참조하여 더욱 설명되는 바와 같이, 권리 부분은 키이 부분에 기초하여 암호화될 수 있다. 동작(300)은 STB가 디지털 메시지의 권리 부분을 검증하면서(단계(312)) 계속된다. 권리 부분이 암호화된 포맷으로 도달할 때, STB는 먼저 권리 부분을 복호화하고(310), 그 다음으로, 단계(312)에서 그 컨텐츠에 기초하여 권리 부분을 검증한다.
동작(300)은 STB의 보안 처리기 또는 로직이 디지털 메시지의 권리 부분으로부터 코드 버전을 추출하면서(단계(314)) 계속된다. 그 다음으로, 보안 처리기 또는 로직은 코드 버전과, STB 내의 보안 메모리 내에 저장되어 있던 저장된 코드 버전을 비교한다(단계(316)). 단계(316)의 동작에 기초하여, 보안 처리기 또는 로직은 STB 상에서 실행되는 코드의 코드 버전이 정확한지 여부를 결정한다. 긍정적인 비교(favorable comparison) 시에, 단계(316)에서의 비교는 통과 작업으로 귀착된다(단계(320)). 이러한 경우, 코드 버전이 단계(316)에서 검증될 때, 헤드 엔드로부터 STB(104)로 스트리밍되는 프로그래밍의 후속 처리를 위하여 STB의 정상적인 동작들이 가능하게 된다.
단계(316)에서 코드 버전과 저장된 코드 버전의 비교에 기초하여 결정되는 바와 같이, 단계(318)에서 실패 작업 시에, STB는 에러 작업을 실행한다. 이 에러 작업은 STB로의 소프트웨어 명령 재로딩(reloading)을 위하여 헤드 엔드(102)(또는 다른 서비스 제공자 장치)에 메시지를 송신하는 것일 수 있다. 다른 상호작용들은 STB를 재부팅(rebooting)하는 것, 및/또는 STB의 디지털 컨텐츠의 복호화를 디스에이블(disable)하는 것을 포함할 수 있다. 이러한 경우, 디지털 메시지로부터 결정된 코드 버전과 저장된 코드 버전의 긍정적이지 않은 비교를 함으로써, STB는 자신에게 스트리밍되는 컨텐츠를 보호하도록 동작될 수 있다.
도 4를 참조하여 더욱 설명되는 바와 같이, 디지털 메시지의 권리 부분은 무결성 부분(integrity portion) 및 코드 버전을 포함할 수 있다. 무결성 부분은 권리 부분의 분할부(segment)를 형성하기 위해 이용되었던 알려진 상수(known constant)와, 디지털 메시지의 관리 부분이 정확하다는 것을 STB가 검증하기 위해 이용하는 다른 필드들일 수 있고, 도 3의 후속 동작들(300)을 지원할 수 있다. 무결성 부분은 당업자에게 명백할 키이/권리 전달 메시지 상부의 요약(digest) 및 서명(signature)의 임의의 조합을 포함할 수도 있다.
도 4는 본 발명의 하나 이상의 실시예들의 구조 및 동작들을 예시하는 블럭도이다. 스트리밍되는 컨텐츠(400)는 STB에 의해 수신된다. 스트리밍되는 컨텐츠는 수송 패킷(XPT PKT : transport packet)들과, ECM들 또는 다른 키이 전달 메시지들을 포함한다. 예시된 바와 같이, 스트리밍되는 컨텐츠(400)는 ECM들이 산재되어 있는 XPT PKT들을 포함한다. ECM의 수신 시에, ECM은 402에서 권리 부분 및 키이 부분으로 분할된다. 그 다음으로, 키이 부분은 n-1 이전 키이 래더 스테이지 기능부(previous key ladder stages functionality)(404)에 의해 생성되는 프로그램 키이에 기초한 동작(408)으로 복호화된다. 복호화 동작은 동작(408)에서 ECM(402)의 키이 부분을 복호화하기 위하여 프로그램 키이(406)를 이용한다. 복호화 동작 단계(408)에 의해 프로그램 식별 키이(PID : program identification) 키이(410)가 생성된다. 도 4의 실시예에 있어서, PID 키이(410)는 복호화 동작(412)을 통해 ECM(402)의 권리 부분을 복호화하기 위해 이용된다. 이 동작들은 다른 내장된 키이 메시지들을 갖는 IP 전달 시스템 상에서 발생할 수 있는 것과 같은 비-수송 스트림 포맷(non-transport stream format)으로 데이터가 도달하는 시스템에 적용될 수도 있다.
도 4의 실시예에 있어서, ECM(402)의 권리 필드는 별도로 암호화된 필드일 수 있다. 예를 들어, AES를 이용하여 암호화된 키이 부분에 있어서, ECM(402)의 키이 부분은 본래의 AES 블럭 크기인 128 비트의 폭이다. ECM(402)의 권리 부분은 또 다른 128 비트 워드를 모두 사용한다. 그러나, 권리 필드는 키이 부분으로부터 별도로 암호화된 필드이므로, 해커(hacker)가 ECM(402)의 키이 부분을 여전히 보유하면서, ECM(402)의 일부(권리 필드)를 제거하고 그것을 이전 ECM으로부터의 권리 필드로 대체하는 것이 가능할 수 있다. 이렇게 하는 것은 보안 보호를 우회하는 결과로 되고, 이전의 코드 버전이 사실인 것으로 추정되도록 한다.
본 발명의 또 다른 측면에 따르면, 헤드 엔드(102)는 ECM 키이를 이용하여 ECM(402)의 권리 부분을 암호화한다. 그 다음으로, STB(104)는 도 4의 동작들에 따라 키이 부분을 복호화한다. 단계(412)에서 수행되는 복호화에 의해, 생성되는 것은 복호화된 권리 부분(414)이다. 복호화된 권리 부분은 알려진 상수, 다른 필드들, 및 코드 버전을 포함한다. 먼저, ECM(402)의 권리 부분을 검증하기 위하여, 알려진 상수는 이전에 결정된 알려진 상수와 비교된다. 그 다음으로, 검증된 암호화되는 권리 부분(414)에 의하여, 보안 처리기(214)는 ECM(402)의 복호화된 권리 부분의 코드 버전을 메모리(416)로부터 추출된 코드 버전과 비교한다. 이 비교를 행한 후, 보안 처리기(214)는 STB의 추가적인 동작들을 지원하기 위하여 복구 동작들 또는 성공적인 비교 동작들을 시작한다.
본 발명의 또 다른 측면에 따르면, 키이 부분을 권리 부분에 연결하기 위하여 암호-블럭 체이닝(CBC : Cipher-Block Chaining) 또는 임의의 다른 교차-워드 체이닝(cross-word chaining)이 이용될 수 있다. 예를 들어, 키이 전달 메시지는 키이 및 권리 부분/워드들 모두에 걸쳐 AES-CBC에 의해 암호화될 수 있다. 그 다음으로, 하나의 키이 메시지의 권리 부분을 또 다른 키이 메시지의 권리 부분과 대체하는 것은 체인(chain)을 끊을 것이고, 이용불가능한 키이로 귀착될 것이다. 그렇게 함으로써, 권리 부분의 가로채기 및 시도된 교체는 키이가 컨텐츠를 디코딩하는데 쓸모없게 할 것이다.
도 5는 본 발명의 하나 이상의 실시예들에 따라 동작들을 예시하는 순서도이다. 중앙 처리기 및 보안 처리기를 갖는 STB의 동작들이 예시되어 있다. 그러나, 다른 실시예들에 의해, 도 5의 동작들은 서버 컴퓨터와 상호작용하는 클라이언트 컴퓨터에 의해 수행될 수 있다. 도 5의 실시예(500)에 의해, 보안 처리기(214)는 도 2에 예시된 바와 같이, 중앙 CPU(212)의 동작을 제어하거나 제한한다. 동작은 시동(start up), 재부팅(reboot), 또는 전원 공급(power up) 시에 시작된다. 첫 번째 동작에서는, 재시작, 재부팅, 또는 전원 공급 후, 보안 처리기가 중앙 처리기의 기능을 디스에이블한다(단계(502)). 이 기능 디스에이블은 보호된 디지털 컨텐츠를 디코딩하거나 또는 이를 처리하기 위한 STB의 능력을 배제하는 것을 포함한다.
동작은 보안 처리기가 난수(random number)를 생성하고 암호화하면서(단계(504)) 계속된다. 그 다음으로, 보안 처리기는 헤드 엔드(102)와 같은 서비스 제공자 장치로의 암호화된 난수의 송신을 시작한다(단계(506)). 그 다음으로, 보안 처리기는 헤드 엔드로부터 응답 메시지를 대기하고 이를 수신한다(단계(508)). 그 다음으로, 보안 처리기는 응답 메시지를 복호화한다(단계(510)). 그 다음으로, STB는 복호화된 응답 메시지를 검증한다(단계(512)). 암호화된 응답 메시지를 검증하는 것은 서명, 요약 비교, 및 당업자들에게 알려진 다른 방법들과 같은 여러 방법들을 포함할 수 있다.
그 다음으로, 검증된 응답 메시지에 의해, 보안 처리기는 권리 부분으로부터 코드 버전을 추출한다(단계(514)). 그 다음으로, 보안 처리기는 응답 메시지로부터의 추출된 버전의 코드 버전을 저장된 코드 버전과 비교한다(단계(516)). 긍정적인 비교 시에, 보안 처리기는 통과 작업을 실행할 것이다(단계(520)). 단계(516)에서의 비교가 부정적일 경우, 보안 처리기는 실패 작업을 실행한다(단계(518)). 도 3의 동작들에 있어서와 같이, 통과 작업은 중앙 CPU가 저장 및/또는 사용자에 대한 제공을 위하여 스트리밍된 컨텐츠의 디코딩 및 복호화를 수행하는 것을 완전히 가능하게 하는 것을 포함한다. 단계(518)에서 실행되는 바와 같은 에러 작업은 STB로의 소프트웨어 명령 재로딩을 시작하기 위하여 서비스 제공자에게 메시지를 송신하는 것을 포함할 수 있다.
도 6은 본 발명의 하나 이상의 실시예들에 따라 컨텐츠 보호를 위한 동작들을 예시하는 순서도이다. 도 6의 동작들(600)은 도 1의 서비스 제공자와 협력하여 STB(104)에 의해 수행될 수 있다. 이와 마찬가지로, 도 6의 동작들(600)은 서버 장치와 통신하는 클라이언트 장치에 의해 수행될 수 있다. 이러한 조합은 도 12를 참조하여 본 명세서에서 추후에 설명된다. 도 6의 동작들(600)은 본 발명의 범위 및 취지로부터 벗어나지 않으면서 다른 장치들에 의해 마찬가지로 수행될 수 있다.
도 6의 동작들(600)은 STB가 권리 부분 및 키이 부분을 포함하는 디지털 메시지를 원격 장치로부터 수신하면서(단계(602)) 시작된다. 그 다음으로, STB의 보안 처리기 또는 로직은 디지털 메시지로부터 키이 부분을 추출한다(단계(604)). 다음으로, 보안 처리기 또는 로직은 디지털 메시지로부터 권리 부분을 추출한다(단계(606)). 도 6을 참조하여 설명된 디지털 메시지는 도 4를 참조하여 본 명세서에서 이전에 설명된 바와 같은 ECM일 수 있거나, 컨텐츠 전달 키이를 STB에 운반하는 임의의 메시지일 수 있다.
도 6의 동작들(600)은 보안 처리기 또는 로직이 디지털 메시지의 키이 부분을 복호화하면서(단계(608)) 시작된다. 단계(608)에서 키이 부분을 복호화할 때, 보안 처리기 또는 로직은 디지털 메시지를 생성하였던 헤드 엔드 또는 서버에 의해 이용되는 암호화 방식과 일관되는 복호화 방식을 이용한다. 이러한 복호화 방식의 하나의 예는 도 7을 참조하여 본 명세서에서 설명될 것이다. 다음으로, 보안 처리기 또는 로직은 권리 부분을 복호화한다(단계(610)). 궁극적으로, 단계들(602-610)을 실행한 후, 보안 처리기 또는 로직은 헤드 엔드 또는 다른 원격 장치로부터 STB에 제공되는 컨텐츠를 디스크램블하기 위해 추후에 이용될 수 있는 키이 부분을 생성하였다. 또한, 보안 처리기 또는 로직은 STB에 의해 수신되는 디지털 컨텐츠의 부분들을 보호하기 위해 추후에 이용될 수 있는 키이 부분을 또한 생성하였다.
다음으로, 보안 처리기 또는 로직은 권리 부분을 검증한다(단계(612)). 단계(612)의 동작들에 의해, 디지털 메시지의 권리 부분은 유효하고, STB에 의해 수신될 때, 디지털 컨텐츠를 권리 보호하기 위해 이용되도록 정확하게 작동할 것이라는 점을 보장하기 위하여, 보안 처리기 또는 로직은 추가적인 단계들을 이용한다. 그 다음으로, 보안 처리기 또는 로직은 디지털 메시지의 권리 부분으로부터 프로그램 ID 보호 데이터를 추출한다(단계(614)). 도 6은 프로그램 ID 보호 데이터를 지칭하지만, 용어 컨텐츠 식별자 또는 컨텐츠 식별자들이 본 명세서에서 이용될 수 있다. 독자가 인식하는 바와 같이, STB에 의해 수신된 컨텐츠는 더 큰 컨텐츠 그룹의 분할부들일 수 있다. 예를 들어, 컨텐츠는 비디오 및/또는 오디오 데이터의 복수의 스트림들을 포함할 수 있다. 또한, 컨텐츠는 STB에 다운로드되는 하나 이상의 데이터 파일들, 소프트웨어 프로그램, 또는 STB에 다운로드되는 또 다른 유형의 데이터일 수 있다. 이 데이터는 데이터 분할부들에 의해 STB에 송신될 데이터의 더 작은 그룹들로 분할될 것이다. 이 데이터 분할부들은 데이터의 더 큰 그룹에 속하는 것으로 식별될 수 있다. 본 발명의 실시예들에 따르면, 이 데이터 분할부들의 각각은 컨텐츠 식별자와 연관되었을 수 있다. 컨텐츠 식별자는 프로그램 ID, 파일 ID, 데이터 그룹 ID, 또는 입력 데이터를 특정 ID와 연관되는 것으로서 식별하는 또 다른 식별자일 수 있다. 컨텐츠의 ID에 따라, 본 발명에 따른 동작들은 중앙 CPU로부터의 컨텐츠를 보호하거나 보호하지 않을 것이다. 도 6의 동작들(600)은 그 컨텐츠 유형에 관계없이 식별된 컨텐츠에 적용된다.
도 6의 방법(600)에 따른 STB의 하나의 특정한 동작에서, STB는 디지털 메시지들 및 디지털 컨텐츠를 수신한다. 단계들(602-614)에 따라 처리될 때, 디지털 메시지들은 STB에 의해 수신되는 프로그래밍의 적어도 일부 PID들에 대한 보호 데이터를 생성한다. 보호 데이터는 각각의 PID에 속하는 복호화된 컨텐츠(또는 보호된 스트림 또는 다른 수신된 데이터, 즉, IP 데이터)가 호스트 CPU 액세스가능 영역으로 들어가도록 허용되어야 하는지에 대한 표시자(indicator)이다. 예를 들어, 도 7을 참조하여 추후에 설명되는 바와 같이, STB는 헤드 엔드(102)로부터 복수의 오디오/비디오 스트림들을 수신 및 디스크램블하도록 동작가능할 수 있다. 이 오디오/비디오 스트림들의 각각은 그와 연관된 PID 또는 다른 스트림 지시자(designator)를 가진다. PID 또는 다른 스트림 지시자와, 키이와 연관된 권리 필드에 기초하여, STB는 오디오/비디오 스트림들의 각각을 고유하게 처리하도록 동작가능하다. 따라서, 단계(616)에서, STB는 STB에 의해 수신되는 복수의 오디오/비디오 스트림들의 적어도 일부에 대한 보호 데이터를 결정하도록 동작가능하다. 물론, STB는 단일의 오디오/비디오 스트림만을 수신할 수 있고, 특정 프로그램 ID에 대응하는 보호 데이터에 따라 상기 단일 오디오/비디오 스트림을 처리할 것이다.
STB에 의해 수신된 각각의 오디오/비디오 스트림에 대하여, 오디오/비디오 스트림이 보호되지 않는다고 결정할 때, STB는 비보호된 데이터(unprotected data)를 비보호된 메모리(unprotected memory)에 기록할 것이다(단계(618)). 또한, 권리 보호되는 오디오/비디오 스트림과 연관된 각각의 프로그램 ID/PID에 대하여, STB는 보호된 데이터를 메모리의 보호된 부분에 기록할 것이다(단계(620)). 하나의 특정한 동작에서, STB는 보호된 데이터를 메모리의 보호된 부분에 기록하기 전에, 보호된 데이터를 스크램블할 것이다.
도 6의 동작들(600)에 이어서, STB는 메모리의 보호된 부분에 대한 액세스를 STB의 오디오/비디오 처리 자원들에 대해서만 허용할 수 있고, 메모리의 보호된 부분에 대한 액세스를 STB(104)의 중앙 CPU(212)에 대해 거부할 수 있다. 이러한 경우, STB(104)는 하드웨어, 예를 들어, 보안 처리기, 및/또는 메모리에 대한 액세스를 STB 내의 다양한 처리 자원들로 제한하기 위한 소프트웨어 세이프가드(software safeguard)들을 포함한다.
도 4의 실시예에서와 같이, 디지털 메시지의 권리 부분은 STB(104)의 보안 처리기 또는 로직이 권리 부분을 검증하기 위해 이용하는 검증 부분을 포함할 수 있다. 이 검증 부분은 디지털 메시지의 권리 부분이 실제로 유효하고 본 발명의 동작들을 지원하도록 작동해야 한다는 것을 확인하는 알려진 상수 및/또는 다른 필드들을 포함할 수 있다. 다른 검증 방법들이 당업자들에게 명백할 것이다.
도 7은 STB 또는 클라이언트 장치에 의한 수신 시에 디지털 컨텐츠를 보호하기 위하여 본 발명의 하나 이상의 실시예들의 동작들을 기능적으로 예시하는 블럭도이다. 조건적 액세스(CA : Conditional Access) 디지털 스트림(700)은 STB에 의해 수신되고, 이 조건적 액세스 디지털 스트림(700)은 산재된 디지털 컨텐츠(XPT PKT들) 및 디지털 메시지들(ECM들)을 포함하며, 헤드 엔드(102) 또는 서버 컴퓨터에 의해 송신된다. STB 또는 클라이언트 장치는 스트리밍되는 컨텐츠로부터 디지털 메시지들을 추출하고 디지털 메시지(702)를 생성하며, 이 디지털 메시지(702)는 키이 부분 및 권리 부분을 포함한다. 스트리밍되는 구조(700)의 디지털 컨텐츠는 오디오/비디오 기술 내에서 일반적으로 알려져 있는 조건적 액세스(CA) 오디오/비디오 컨텐츠이다.
ECM(702)은 키이 부분을 포함하고, 이 키이 부분은 키이 래더 스테이지 기능적 장치(key ladder stages functional device)(704)에 의해 생성된 프로그램 키이(706)를 이용하여 기능적 복호화 블럭들(708)에 의해 복호화된다. 복호화된 키이 부분은 PID 키이(710)를 생성하기 위하여 기능적 블럭(708)에 의해 복호화된다. PID 키이(710)는 복호화된 권리 부분(714)을 생성하기 위하여 기능적 복호화 블럭(712)에 의해 이용된다. 복호화된 권리 부분(714)은 STB에 의해 수신되는 디지털 컨텐츠의 하나 이상의 스트림들에 대응하는 하나 이상의 PID 보호 데이터 ID들 또는 비트들을 포함한다. 디지털 컨텐츠의 스트림들 각각은 대응하는 PID를 포함한다.
또한, PID 키이(710)는 복수의 오디오/비디오 스트림들의 CA 디스크램블링을 위한 기능적 블럭(716)에 의해 이용된다. 복호화된 권리 부분(714)의 하나 이상의 보호 비트들에 기초하여, STB는 디지털 컨텐츠를 비보호된 메모리(718) 또는 보호된 메모리(720)에 스트리밍한다. 도 7의 예에 있어서, 프로그램 ID들 "A" 및 "B"는 "0"과 동일한 그 보호 비트에 의해 비보호되는 반면, 프로그램 ID "C"와 관련된 스트리밍되는 컨텐츠는 "1"로 설정되는 그 보호 비트에 의해 보호된다. 이러한 경우, 프로그램 ID들 "A" 및 "B"에 대응하는 오디오/비디오 스트림들은 도 2의 STB(104)의 중앙 CPU(212), 보안 CPU(214), 및/또는 비디오 처리 회로(222)에 의한 추후의 액세스를 위하여 비보호된 메모리(718) 또는 보호된 메모리(720)의 어느 하나에 스트리밍될 수 있다.
프로그램 ID "C"를 갖는 오디오/비디오 스트림은 "1"과 동일한 보호 비트를 가지기 때문에, 프로그램 ID "C" 스트림에 대응하는 디지털 컨텐츠는 중앙 CPU 이외의 STB(104)의 자원들만에 의한 추후의 액세스를 위하여 보호된 메모리(720)에만 기록된다. 일부 실시예들에서, 보호된 메모리(720)는 도 2의 STB(104)의 비디오 처리 회로(222)에 의해서만 액세스될 수 있다. 다른 실시예들에서는, STB의 다른 구성요소들이 보호된 메모리(720)를 액세스할 수도 있다. 또한, 이전에 설명된 바와 같이, 본 발명의 하나의 실시예에 따르면, 프로그램 ID "C"에 대응하는 디지털 컨텐츠는 보호된 메모리(720)에 기록되기 전에 스크램블될 수 있다. 또한, 또 다른 실시예에서, PID "A" 및 PID "B"에 대응하는 디지털 컨텐츠는 비보호된 메모리(718)에만 기록되고, PID "C"에 대응하는 디지털 컨텐츠는 보호된 메모리(720)에만 기록된다. 도 7에 예시된 선택적인 기록은, 비보호된 컨텐츠가 메모리 내의 어디에나 기록될 수 있는 반면, 보호된 컨텐츠는 STB의 중앙 CPU(212)에 의해 액세스가능하지 않은 메모리720)의 부분에만 기록될 수 있음을 나타내도록 도시되어 있다.
도 8은 트랜스코딩 중에 디지털 컨텐츠를 보호하기 위하여 본 발명의 실시예에 따라 동작을 예시하는 순서도이다. 도 8의 동작들(800)은 STB 또는 클라이언트 장치가 원격 장치로부터 디지털 메시지 및 디지털 컨텐츠를 수신하면서(단계(802)) 시작된다. 도 1을 참조하여 본 명세서에서 이전에 설명된 바와 같이, 본 발명의 하나의 실시예에 따르면, 수신 장치는 STB(104)이고, 송신 장치는 헤드 엔드(102)이다. 도 12를 참조하여 본 명세서에서 더욱 설명될 실시예에 따르면, 송신 장치는 서버(1202)이고, 수신 장치는 클라이언트(1204)이다. 서버(1202) 및 클라이언트(1204)의 각각은 인터넷에 결합되는 디지털 컴퓨터이다.
도 8을 구체적으로 참조하면, 수신 장치는 디지털 메시지 및 디지털 컨텐츠를 메모리 내에 저장하도록 동작가능하다(단계(804)). 그 다음으로, 수신 장치의 예를 들어, 보안 처리기는 트랜스코딩 중에 중앙 처리 유닛으로부터 격리되어야 하는 보호된 디지털 컨텐츠를 식별한다(단계(806)). 도 9 내지 도 11을 참조하여 본 명세서에서 더욱 설명되는 바와 같이, 트랜스코더는 클라이언트 컴퓨터 또는 STB의 구성요소이다. 디지털 컨텐츠는 H.264, MPEG, AVG, 또는 또 다른 인코딩 또는 암호화 표준에 따라 스크램블된 포맷으로 장치에 의해 수신된다. 그 다음으로, 스크램블된 컨텐츠는 장치의 트랜스코더(transcoder)에 의해 메모리로부터 검색된다(단계(808)). 메모리로부터 검색될 때, 디지털 컨텐츠는 여전히 스크램블된 포맷으로 되어 있다. 그러나, 트랜스코더에 의해 디지털 컨텐츠를 트랜스코딩할 때(단계(810)), 디지털 컨텐츠는 트랜스코딩 이전에 먼저 디스크램블된다. 따라서, 트랜스코딩 처리 중에, 디지털 컨텐츠는 CPU에 의해 액세스될 수 있고 그 포맷으로 가로채기될 수 있는 비보호된 포맷으로 되어 있다.
따라서, 본 발명에 따르면, 단계(806)에서 식별되었던 보호된 디지털 컨텐츠는 트랜스코딩 중에 CPU로부터 격리된다(단계(812)). 보호된 디지털 컨텐츠가 단계(812)에서 CPU로부터 격리되는 방식은 본 발명의 다양한 실시예들에 따라 상이한 형태들을 가질 수 있다. 제 1 실시예에 따르면, 보안 처리기(214)는 트랜스코딩 처리 중에 디스크램블된 컨텐츠가 트랜스코더에 의해 저장되는 메모리의 그 부분들에 대한 액세스를 배제한다. 또 다른 실시예에서, 트랜스코더 자체는 스크램블되지 않은 포맷으로 된 디지털 컨텐츠를, CPU에 의해 액세스가능한 메모리의 그 부분들로 기록하는 것을 배제하도록 제어된다. 예를 들어, 트랜스코더는 트랜스코딩 처리 중에 디지털 데이터를 디스크램블된 포맷으로 저장하기 위하여 보안된 버퍼들을 이용할 수 있다. 이 보안 버퍼들은 CPU에 의해 액세스가능한 것이 아니다. 또한, 트랜스코더의 직접 메모리 액세스(DMA : direct memory access) 엔진은, 스크램블되지 않은 포맷으로 된 트랜스코딩 중인 디지털 컨텐츠가 CPU에 의해 액세스가능한 메모리에 저장되지 않도록 동작될 수 있다. 다른 실시예들에서, 트랜스코더 내의 다른 데이터 이동 엔진들은 중앙 CPU 액세스로부터 보호되므로, 이들은 보안 및 비-보안(non-secure) 영역들로부터 데이터를 이동시키기 위하여 이용될 수가 없다.
본 발명의 또 다른 측면에 따르면, 트랜스코더의 출력은 보안 처리기 또는 하드웨어에 의해 보안 버퍼들로 가도록 집행되고, 이러한 보안 버퍼들은 CPU에 의해 판독될 수 없다. 또한, 트랜스코더 출력 버퍼들은 보호되지 않은 디지털 컨텐츠가 중앙 CPU 액세스되는 것을 금지하기 위하여, 중앙 CPU 이외의 하드웨어 엔진들 또는 로컬 CPU들에 의해서만 액세스 가능하다. 또한, 리스크램블링(rescrambling) 이전의 클리어(clear) 트랜스코딩된 데이터는, 메모리에 기록할 때, 트랜스코딩 처리 중에 트랜스코더에 의해 리스크램블되도록 집행된다. 이 실시예는 트랜스코더 처리 중에 스크램블링 및 디스크램블링을 위한 다수의 단계들을 요구할 것이지만, 트랜스코딩 처리 중인 디지털 컨텐츠를 CPU에 의한 가로채기로부터 보호할 것이다.
도 9a는 트랜스코딩 처리 중에 CPU로부터 디지털 컨텐츠를 보호하기 위한 동작들을 예시하는 순서도이다. 도 9a의 동작들(900)은 STB(104) 또는 클라이언트 장치의 보안 처리기 또는 다른 로직이 트랜스코더가 트랜스코딩 중에 비-스크램블된(non-scrambled) 데이터를 저장하는 메모리의 보호된 부분을 결정하면서(단계(902)) 시작된다. 그 다음으로, STB의 보안 처리기 또는 다른 로직은 트랜스코딩 중에 메모리의 보호된 부분에 대한 CPU에 의한 액세스를 배제한다(단계(904)).
도 9b는 STB 또는 클라이언트 장치의 트랜스코딩 처리에서 이용하기 위한 보호된 메모리의 할당 시에 STB 또는 클라이언트 장치의 동작들을 예시하는 순서도이다. 동작들(950)은 STB 또는 클라이언트 장치의 보안 처리기 또는 다른 로직이 트랜스코더가 트랜스코딩 처리 중에 비-스크램블된 데이터를 저장하는 보호된 버퍼들을 할당하면서(단계(952)) 시작된다. 그 다음으로, 동작은 보안 처리기 또는 다른 클라이언트 또는 STB 장치가 트랜스코딩 중에 보호된 버퍼들에 대한 중앙 처리 유닛 액세스를 배제하면서(단계(954)) 계속된다.
도 10은 본 발명의 하나 이상의 실시예들에 따라 트랜스코딩 중에 CPU에 의한 액세스로부터 보호되어야 할 컨텐츠를 식별하기 위한 특정 동작들을 예시하는 순서도이다. 도 10의 동작들(1000)은 STB 또는 클라이언트 장치가 권리 부분 및 키이 부분을 포함하는 디지털 메시지를 원격 장치로부터 수신하면서(단계(1002)) 시작된다. 그 다음으로, STB는 디지털 메시지로부터 키이 부분을 추출한다(단계(1004)). 그 다음으로, STB는 디지털 메시지로부터 권리 부분을 추출한다(단계(1006)). 도 10의 동작들은 도 4 및 도 7의 블럭도들에서 부분적으로 설명되지만, 보호된 컨텐츠를 결정하거나 식별하기 위해 구체적으로 응용된다.
그 다음으로, STB 또는 클라이언트 장치는 디지털 메시지의 키이 부분을 복호화한다(단계(1008)). 그 다음으로, STB는 디지털 메시지의 권리 부분을 복호화한다(단계(1010)). 본 발명의 하나의 특정한 측면에서는, 권리 부분을 복호화하기 위하여 복호화된 키이 부분이 요구될 수 있다. 이러한 경우, 단계(1008)의 동작은 키이 부분을 복호화하고 복호화된 결과를 생성하기 위해 이용된다. 그 다음으로, 권리 부분은 복호화된 권리 부분을 생성하기 위하여 복호화된 결과를 이용하여 복호화된다.
그 다음으로, 권리 부분은 그 컨텐츠에 기초하여 선택적으로 검증된다. 도 4 및 도 7을 참조하면, 복호화된 권리 부분은 단계(1012)에서 권리 부분을 검증하기 위해 이용되는 알려진 상수 또는 다른 검증 필드를 포함할 수 있다. 검증 이후에, 권리 부분은 STB 또는 클라이언트 장치에 의해 수신되는 디지털 컨텐츠에 관한 보호 데이터를 추출하기 위해 이용될 수 있다(단계(1014)). 하나의 특정한 실시예에서, 특정한 PID를 각각 갖는 복수의 프로그램들은 처리를 위하여 STB 또는 클라이언트 장치에 의해 수신된다. 또한, 권리 부분에는, 디지털 컨텐츠의 복수의 PID들에 대응하는 복수의 대응하는 보호 비트들 또는 데이터가 존재한다. 이러한 경우, STB 또는 클라이언트 장치에 의해 동작되는 PID들의 각각은 보호 비트 또는 다른 데이터를 통한 대응하는 보호 표시를 가진다. 최종적으로, 디지털 메시지의 권리 부분 내에 수신된 정보에 기초하여, 보안 처리기 또는 다른 장치는 트랜스코더에 의한 트랜스코딩 중에 중앙 처리 유닛에 의한 보호된 PID 디지털 컨텐츠에 대한 액세스를 배제한다(단계(1016)). 단계(1016)로부터, 동작은 종료된다.
도 11은 트랜스코딩 중에 디지털 컨텐츠를 보호하기 위한 구조를 포함하는 클라이언트 장치 또는 STB의 구조를 예시하는 블럭도이다. 도 11의 구조(1100)는 트랜스코딩 처리 중에 뿐만 아니라 장치의 다른 동작들 중에 이용되는 중앙 CPU(212), 보안 CPU(214), 및 복수의 다른 구성요소들을 포함한다. 디지털 컨텐츠는 수송 스트림(CA 스트림)을 복수의 프로그램 스트림들로 분리하는 수송 역다중화기(transport demux)(1102)에 의해 수신된다. 이 수송 역다중화기(1102)의 출력은 압축된 데이터 버퍼(1104)에 기록된다. 디지털 컨텐츠가 중앙 CPU(212)에 의한 해적 액세스 또는 다른 인가되지 않은 액세스에 대해 영향을 받지 않는 스크램블된 포맷으로 수신될 때, 압축된 데이터 버퍼(1104)는 디지털 컨텐츠를 저장한다.
트랜스코더(1106)는 압축된 데이터 버퍼(1104) 내에 저장되어 있는 스트리밍되는 디지털 프로그래밍의 트랜스코딩을 수행한다. 트랜스코더(1106)의 동작들은 그 제공 이전에 STB 또는 클라이언트 컴퓨터에 의해 서비스되는 특정 클라이언트 장치에 대해 조정될 수 있다. 예를 들어, 트랜스코더(1106)는 도 1을 참조하여 이전에 설명되었던 포켓 TV(114) 또는 PDA(112)에 의해 요구되지 않는 H.264에 의해 지원되는 바와 같은 HD 포맷의 프로그래밍을 수신할 수 있다. 이러한 경우, 트랜스코더(1106)는 디지털 컨텐츠를 변경하므로, 디지털 컨텐츠는 이러한 렌더링 장치(TV(114) 또는 PDA(112))에 의해 더욱 양호하게 디스플레이될 수 있거나, 더 적은 데이터 수송 요건들에 의해 더욱 용이하게 수송될 수 있다.
트랜스코더(1106)는 디지털 데이터를 디코딩하는 디코더(1108)를 포함한다. 디코더(1108)의 출력은 압축해제된 데이터 버퍼(1110)에 기록된다. 압축해제된 데이터 버퍼(1110)는 중앙 CPU(212)에 의한 액세스로부터 배제되어야 하는 비보호된 포맷으로 디지털 컨텐츠를 저장할 수 있다. 직접 메모리 액세스(DMA) 엔진(1114)은 압축해제된 데이터 버퍼(1110) 및 다른 보안 버퍼들(1112)에 결합된다. 일부 동작들에서, 중앙 CPU(212)는 DMA(1114)에 대해 액세스할 수 있다. 그러나, 디지털 컨텐츠가 보호되어야 하는 것으로 결정되었을 때, 도 11의 보안 CPU(214)는 중앙 CPU가 DMA(1114)를 액세스하는 것을 방지할 것이다. 또한, 비보호된 포맷의 컨텐츠를 저장하는, 트랜스코더(1106)에 결합된 다른 버퍼들(1128)은 보안 CPU(214)에 의해, 중앙 CPU(212)에 의한 액세스로부터 보호된다.
트랜스코더(1106)는 DMA(1114), 다수의 서브-클라이언트들(1116) 및 출력 클라이언트들(1118)을 포함하는 인코더(1107)를 포함한다. 다수의 서브-클라이언트들(1116) 및 출력 클라이언트들(1118)은 트랜스코딩 처리에서 사용되는 복수의 상이한 기능 장치들을 포함할 수 있다. 트랜스코더(1106)의 출력은 압축된 데이터 버퍼(1120)에 기록된다. 데이터는 하드웨어 판독 엔진(1122)에 의해 압축된 데이터 버퍼(1120)로부터 판독된다. 하드웨어 판독 엔진(1122)은 데이터를 암호화하여 데이터를 다른 버퍼들(1126)에 기록하는 암호화 엔진(1124)에 의해 수신되는 출력을 생성한다. 인코더(1107)의 출력은 다른 버퍼들(1128)에 기록될 수도 있고, 다른 버퍼들(1128)은 보호된 데이터를 저장할 때, 보안 처리기에 의해 중앙 CPU(212)로부터 보호된다.
본 발명의 또 다른 측면에 따르면, 트랜스코더(1106)는 고유의 프로그램 ID(PID)를 각각 가지는 복수의 프로그램들 상에서 동작한다. 이러한 경우, 중앙 CPU(212)는 트랜스코더(1106)에 의한 트랜스코딩 중에 비보호된 디지털 컨텐츠에 대해 액세스할 수 있지만, 보호된 디지털 컨텐츠를 위하여 트랜스코더(1106)에 대한 액세스로부터 배제될 수 있다. 따라서, 도 11의 보안 CPU(214)는 비보호된 디지털 컨텐츠가 아니라 보호된 디지털 컨텐츠의 트랜스코딩을 위하여 중앙 CPU(212)에 의한 액세스만을 배제할 것이다.
다른 동작들에 따르면, 보안 처리기(214)는 중앙 처리 유닛(212)으로부터 트랜스코더 입력 및 트랜스코더 출력을 모두 보호하도록 동작가능하다. 또한, 보안 처리기(214)는 트랜스코딩 중에 중앙 처리 유닛(212)으로부터 트랜스코더(1106)의 복수의 버퍼들(1110, 1112) 중의 적어도 일부를 보호하도록 동작가능할 수 있다. 또 다른 동작들에서, 보안 처리기(214)는 트랜스코더(1106)가 트랜스코딩 중에 중간 컨텐츠의 저장을 위한 특정 어드레스들을 갖는 메모리를 이용하도록 동작가능하다. 보안 처리기(214)는 중간 트랜스코딩 컨텐츠의 저장을 위하여 트랜스코더(1106)에 의해 이용되는 버퍼들에 대한 중앙 처리기(212)의 액세스를 제한하도록 동작가능할 수 있다. DMA 엔진(1114)은 데이터가 메모리의 보호된 부분으로부터 출력되기 전에 트랜스코더 출력을 암호화하도록 동작가능할 수 있다. 이러한 경우, DMA 엔진(1114)은 보안 CPU(214)의 제어하에 있다.
도 12는 본 발명의 하나 이상의 실시예들을 구현하는 또 다른 구조를 예시하는 블럭도이다. 도 12의 구조는 인터넷(1203) 또는 또 다른 네트워크에 의해 결합되는 서버 컴퓨터(1202) 및 클라이언트 컴퓨터(1204)를 포함한다. 서버 컴퓨터(1202)는 서버 컴퓨터 구성요소들(1206), 소프트웨어 버전 집행 기능부(1208), 및 컨텐츠 보호 집행 기능부(1210)를 포함한다. 소프트웨어 버전 집행 기능부(1208) 및 컨텐츠 보호 집행 기능부(1210)는 본 명세서에서 이전에 설명되었고, 도 12의 구조(1200)에 의해 구현될 수 있다.
클라이언트 컴퓨터(1204)는 클라이언트 구성요소들(1212), 소프트웨어 버전 집행 기능부(1214) 및 컨텐츠 보호 집행 기능부(1216)를 포함한다. 소프트웨어 버전 집행 기능부(1214) 및 컨텐츠 보호 집행 기능부(1216)는 본 명세서에서 이전에 설명된 기능들을 수행하고, 도 1 내지 도 11을 참조하여 본 명세서에서 이전에 설명된 구조들을 사용한다. 따라서, 도 12의 구조(1200)는 도 11을 참조하여 본 명세서에서 이전에 설명된 다양한 동작들 중의 임의의 동작에서 수행될 수 있고, 본 발명의 교시 내용들을 구체화하기 위하여 도 11을 참조하여 본 명세서에서 이전에 설명된 구조들을 통합한다.
도 13은 멀티-스테이지 암호화 시스템에서 코드 버전 메시지를 보안성 있게 전달하기 위하여 본 발명에 따라 동작들을 예시하는 순서도이다. 도 13의 동작들(1300)은 도 1의 STB(104)에 의해, 도 12의 클라이언트 컴퓨터(1204)에 의해, 원격 컨텐츠를 수신하는 또 다른 컴퓨팅 장치에 의해 수행되고, 그 코드 버전들은 또 다른 컴퓨팅 장치에 의해 추적된다. 도 13의 동작들(1300)은 유효한 소프트웨어 명령들이 STB(104)(또는 다른 클라이언트 장치(1204)) 상에 존재하는지 여부를 보증하거나 결정하도록 작동한다.
동작들(1300)은 STB가 원격 장치로부터 디지털 데이터를 수신하면서 시작되고, 디지털 데이터는 암호화된 컨텐츠 및 멀티-스테이지 암호화된 코드 버전 메시지를 포함한다(단계(1302)). 원격 장치는 도 1의 헤드 엔드(102), 또는 도 12의 서버 컴퓨터(1202)와 같은 또 다른 서버-유형 장치일 수 있다. 디지털 데이터의 구조와, 도 13의 동작들(1300)에 따른 그 흐름은 도 14를 참조하여 더욱 설명된다. 암호화된 컨텐츠는 스트리밍되는 오디오 데이터, 스트리밍되는 비디오 데이터, 소프트웨어, 벌크 데이터(bulk data), STB(104) 또는 클라이언트 컴퓨터(1204)에 대해 의도된 또 다른 유형의 데이터일 수 있다.
동작들(1300)은 보안 처리기 또는 다른 로직이 복호화된 컨텐츠 및 암호화된 코드 버전 메시지를 생성하기 위하여, 제 1 복호화 기술, 예를 들어, AES-CBC를 이용하여 디지털 데이터를 복호화하면서(단계(1304)) 시작된다. 코드 버전 메시지는 멀티-스테이지 암호화되었으므로, 그 제 1 스테이지 복호화 후에, 코드 버전 메시지는 그 제 2 스테이지 암호화 포맷에 따라 여전히 암호화된다. 동작은 보안 처리기 또는 다른 로직이 복호화된 포맷의 코드 버전 메시지를 생성하기 위하여, 제 2 복호화 기술, 예를 들어, AES-CTR을 이용하여 암호화된 코드 버전 메시지를 복호화하면서(단계(1306)) 계속된다. 코드 버전 메시지는 보안 처리기 또는 로직에 의해 보안 레지스터(secure register) 내에 저장되므로, 그것은 CPU에 의해 액세스될 수 없다. 코드 버전 메시지는 스마트 카드를 통해, 보안 채널을 이용한 케이블카드(CableCard)를 통해, 또는 임의의 다른 수단에 의해 STB(104) 내에서 도 2를 참조하여 이전에 설명된 보안 처리기(214)로 라우팅될 수 있다.
동작들(1300)은 보안 처리기 또는 로직이 참조 코드 버전을 결정하기 위하여 코드 버전 메시지를 처리하면서(단계(1308)) 계속된다. 단계(1308)의 동작들은 이전의 도면들을 참조하여 설명된 것과 동일/유사 기술을 이용하여 그 컨텐츠들에 기초하여 코드 버전 메시지를 검증하는 것을 포함할 수 있다.
동작들(1300)은 STB의 보안 처리기 또는 로직이 참조 코드 버전을, STB 내의 보안 메모리에 저장되어 있던 저장된 코드 버전과 비교하면서(단계(1310)) 계속된다. 단계(1310)의 동작에 기초하여, 보안 처리기 또는 로직은 STB 상에서 실행되는 코드의 코드 버전이 정확한지 여부를 결정한다. 긍정적인 비교 시에, 단계(1310)에서의 비교는 통과 작업으로 귀착된다(단계(1314)). 이러한 경우, 코드 버전이 단계(1310)에서 검증될 때, 헤드 엔드로부터 STB(104)로 스트리밍되는 프로그래밍의 추후의 처리를 위하여 STB의 정상적인 동작들이 가능하게 된다. 단계(1310)에서의 참조 코드 버전과 저장된 코드 버전의 비교에 기초하여 결정되는 바와 같이, 단계(1312)에서의 실패 작업 시에, STB는 에러 작업을 실행한다. 이 에러 작업은 STB로의 소프트웨어 명령 재로딩을 위하여 헤드 엔드(102)(또는 다른 서비스 제공자 장치)에 메시지를 송신하는 것일 수 있다. 다른 상호작용들은 STB를 재부팅하는 것, 및/또는 STB의 디지털 컨텐츠의 복호화를 디스에이블하는 것을 포함할 수 있다. 이러한 경우, 저장된 코드 버전과, 디지털 메시지로부터 결정된 코드 버전의 긍정적이지 않은 비교를 행함으로써, STB는 자신에게 스트리밍되는 컨텐츠를 보호하도록 동작될 수 있다.
도 14는 하나 이상의 실시예들에서 행해지는 바와 같이 도 13의 동작들을 추가적으로 예시하는 블럭도이다. 도 14의 실시예에 있어서, STB(104), 클라이언트 컴퓨터(1204), 또는 다른 컴퓨터 컴퓨팅 장치는 헤드 엔드(102), 서버 컴퓨터(1202), 또는 또 다른 컴퓨팅 장치로부터 디지털 데이터를 수신한다. 이 디지털 데이터(1400)는 암호화된 컨텐츠 및 멀티-스테이지 암호화된 코드 버전 메시지를 포함한다. 이 디지털 데이터(1400)는 암호화된 컨텐츠의 복수의 블럭들과, 조합된 암호화된 컨텐츠 및 멀티-스테이지 암호화된 코드 버전 메시지의 다수의 블럭들을 갖는 포맷으로 도달한다. 도 14의 예에 있어서, 디지털 데이터(1400)는 입력되는 데이터 세트 및 암호화된 컨텐츠의 블럭들 0 및 1을 점유하는 암호화된 컨텐츠와, 블럭들 2 및 3의 각각의 일부분들을 점유하는 멀티-스테이지 암호화된 코드 버전 메시지의 일부분들을 포함한다.
디지털 데이터(1400)는 디지털 데이터(1400)를 수신하는 STB(104), 클라이언트 컴퓨터(1204), 또는 다른 컴퓨팅 장치의 보안 처리기 또는 다른 로직에 의해 처리된다. 이 처리에 의해, 보안 처리기 또는 다른 로직은 제 1 복호화된 데이터(1402)를 생성하기 위하여, 제 1 복호화 기술, 예를 들어, AES-CBC를 이용하여 디지털 데이터에 대한 제 1 스테이지 복호화 동작들을 수행한다. 다른 실시예들에서, 제 1 복호화 기술은 또 다른 유형의 복호화 기술일 수 있다. 제 1 복호화된 데이터(1402)는 복호화된 컨텐츠 및 암호화된 코드 버전 메시지를 포함한다. 제 1 복호화된 데이터(1402)의 구조에 있어서, 일부 복호화된 컨텐츠는 128 비트(또는 바이트) 블럭들 내에 존재한다. 복호화된 컨텐츠의 이러한 블럭들은 처리를 위하여 적합할 수 있다. 대안적으로, 이 복호화된 컨텐츠는 추가적인 처리를 필요로 할 수 있다. 암호화된 코드 버전 메시지는 128 비트(또는 바이트) 블럭들에 걸쳐 있어서, 암호화된 코드 버전 메시지의 일부분들은 복호화된 컨텐츠와 128 비트(또는 바이트) 블럭들을 공유한다.
그 다음으로, 보안 처리기 또는 다른 로직은 코드 버전 메시지(1404)를 생성하기 위하여 암호화된 코드 버전 메시지의 섹션 스테이지 복호화를 수행한다. 보안 처리기는 도 3 및 도 4를 참조하여 이전에 설명된 바와 같이, 코드 버전 메시지의 확인을 추가적으로 수행할 수 있다. 코드 버전 메시지의 확인/검증 후에, 보안 처리기 또는 다른 로직은 저장된 코드 버전과, 코드 버전 메시지로부터 추출된 참조 코드 버전을 비교할 수 있다.
본 명세서에서 이용되는 바와 같은 용어 "회로" 및 "회로소자"는 독립적인 회로, 또는 다수의 기본적 기능들을 수행하는 다기능 회로의 일부를 지칭할 수 있다. 예를 들어, 실시예에 따라서는, 처리 회로소자가 단일 칩 처리기 또는 복수의 처리 칩들로서 구현될 수 있다. 이와 마찬가지로, 제 1 회로 및 제 2 회로는 하나의 실시예에서 단일 회로로 조합될 수 있거나, 또 다른 실시예에서, 아마도 별도의 칩들에서 독립적으로 동작할 수 있다. 본 명세서에서 이용되는 바와 같이, 용어 "칩"은 집적 회로(integrated circuit)를 지칭한다. 회로들 및 회로 소자는 범용 또는 특정 용도의 하드웨어를 포함할 수 있거나, 이러한 하드웨어와, 펌웨어(firmware) 또는 오브젝트 코드(object code)와 같은 관련된 소프트웨어를 포함할 수 있다.
당업자가 인식하는 바와 같이, 본 명세서에서 이용될 수 있는 바와 같은 용어 "동작가능하게 결합" 및 "통신가능하게 결합"은 직접 결합과, 또 다른 구성요소, 소자, 회로, 또는 모듈을 통한 간접 결합을 포함하고, 간접 결합에 대하여, 중간에 개입된 구성요소, 소자, 회로, 또는 모듈은 신호의 정보를 변형하지 않지만, 그 전류 레벨, 전압 레벨, 및/또는 전력 레벨을 조절할 수 있다. 당업자가 인식하는 바와 같이, 추론된 결합(즉, 하나의 소자가 추론에 의해 또 다른 소자에 결합됨)은 "동작가능하게 결합" 및 "통신가능하게 결합"과 동일한 방식으로 2개의 소자들 사이의 직접 및 간접 결합을 포함한다.
본 발명은 열거된 기능들 및 그 관계들의 성능을 예시하는 방법 단계들의 도움으로 위에서 설명되었다. 이 기능적 구성 블럭들 및 방법 단계들의 경계들 및 순서는 설명의 편의를 위하여 본 명세서에서 임의로 정의되었다. 열거된 기능들 및 관계들이 적절하게 수행되는 한, 대안적인 경계들 및 순서들이 정의될 수 있다. 임의의 이러한 대안적인 경계들 또는 순서들은 이와 같이 청구된 발명의 범위 및 취지 내에 있다.
본 발명은 어떤 중요한 기능들의 성능을 예시하는 기능적 구성 블럭들의 도움으로 위에서 설명되었다. 이 기능적 구성 블럭들의 경계들은 설명의 편의를 위하여 임의로 정의되었다. 어떤 중요한 기능들이 적절하게 수행되는 한, 대안적인 경계들이 정의될 수 있다. 이와 유사하게, 순서도 블럭들은 어떤 중요한 기능을 예시하기 위하여 본 명세서에서 임의로 정의되었을 수도 있다. 이용되는 한도까지는, 순서도 블럭 경계들 및 순서가 달리 정의되었을 수 있고, 어떤 중요한 기능을 여전히 수행할 수 있다. 기능적 구성 블럭들과 순서도 블럭들과 순서들의 이러한 대안적인 정의들은 이와 같이 청구된 발명의 범위 및 취지 내에 있다.
또한, 당업자는 기능적 구성 블럭들과, 본 명세서의 다른 예시적인 블럭들, 모듈들 및 구성요소들이 예시된 바와 같이, 또는 개별 구성요소들, 주문형 반도체들, 적절한 소프트웨어 등을 실행하는 처리기들, 또는 그 임의의 조합에 의해 구현될 수 있음을 인식할 것이다.
또한, 상술한 실시예들에 의하여 명료하게 하고 이해를 위하여 구체적으로 설명되었지만, 본 발명은 이러한 실시예들에 한정되지 않는다. 첨부된 청구항들의 범위에 의해서만 한정되는 바와 같이, 발명의 취지 및 범위 내에서 다양한 변경들 및 변형들이 실시될 수 있다는 것은 당업자에게 자명할 것이다.

Claims (15)

  1. 디지털 메시지들 및 디지털 컨텐츠를 수신하도록 동작가능한 통신 인터페이스;
    소프트웨어 명령들, 상기 디지털 메시지들, 및 상기 디지털 컨텐츠를 저장하도록 동작가능한 메모리; 및
    상기 통신 인터페이스 및 상기 메모리에 결합되어, 디지털 메시지를 수신하고, 상기 디지털 메시지로부터 키이 부분을 추출하고, 상기 디지털 메시지로부터 권리 부분을 추출하고, 상기 권리 부분에 기초하여 코드 버전을 결정하고, 상기 메모리로부터 저장된 코드 버전을 판독하고, 상기 소프트웨어 명령들을 검증하기 위하여 상기 코드 버전을 상기 저장된 코드 버전과 비교하도록 동작가능한 처리 회로를 포함하는, 장치.
  2. 청구항 1에 있어서,
    상기 처리 회로는 상기 코드 버전과 상기 저장된 코드 버전의 긍정적이지 않은 비교 시에, 에러 작업을 시작하도록 추가적으로 동작가능한, 장치.
  3. 청구항 2에 있어서,
    상기 에러 작업을 시작할 때, 상기 처리 회로는,
    소프트웨어 명령 재로딩(reloading)을 위하여 메시지를 서비스 제공자 장치에 송신하는 것;
    재부팅(reboot);
    상기 디지털 컨텐츠의 복호화 디스에이블(disable) 중의 적어도 하나를 수행하도록 동작가능한, 장치.
  4. 청구항 1에 있어서,
    상기 장치는,
    케이블 셋톱 박스 수신기;
    위성 셋톱 박스 수신기;
    디지털 가입자 라인(DSL : digital subscriber line) 셋톱 박스 수신기;
    무선 광역 네트워크(WWAN : wireless wide area network) 수신기;
    클라이언트 컴퓨터;
    태블릿 컴퓨팅 장치; 및
    전화 중의 적어도 하나를 포함하는, 장치.
  5. 청구항 1에 있어서,
    상기 디지털 메시지로부터 상기 권리 부분을 추출할 때, 상기 처리 회로는,
    복호화된 결과를 생성하기 위하여 상기 키이 부분을 복호화하고,
    복호화된 권리 부분을 생성하기 위하여 상기 복호화된 결과를 이용하여 상기 권리 부분을 복호화하도록 동작가능한, 장치.
  6. 청구항 5에 있어서,
    상기 복호화된 권리 부분은 무결성 부분(integrity portion) 및 코드 버전을 포함하는(무결성 부분은 알려진 상수, 코드 버전의 SHA 요약, 등이다), 장치.
  7. 청구항 1에 있어서,
    상기 처리 회로는 중앙 처리기 및 보안 처리기를 포함하고, 상기 보안 처리기는 상기 소프트웨어 명령들을 검증하기 위하여 상기 코드 버전을 상기 저장된 코드 버전과 비교하는, 장치.
  8. 청구항 1에 있어서,
    상기 키이 부분 및 상기 권리 부분은 암호 방식으로 함께 연결되는, 장치.
  9. 전자 장치에 의한 디지털 메시지를 원격 장치로부터 수신하는 단계;
    상기 디지털 메시지로부터 키이 부분을 추출하는 단계;
    상기 디지털 메시지로부터 권리 부분을 추출하는 단계;
    상기 권리 부분에 기초하여 코드 버전을 결정하는 단계;
    메모리로부터 저장된 코드 버전을 판독하는 단계; 및
    저장된 소프트웨어 명령들을 검증하기 위하여 상기 코드 버전을 상기 저장된 코드 버전과 비교하는 단계를 포함하는, 방법.
  10. 청구항 9에 있어서,
    상기 코드 버전과 상기 저장된 코드 버전의 긍정적이지 않은 비교시에, 에러 작업을 시작하는 단계를 더 포함하는, 방법.
  11. 청구항 10에 있어서,
    상기 에러 작업을 시작하는 단계는,
    소프트웨어 명령 재로딩을 위하여 메시지를 서비스 제공자 장치에 송신하는 것;
    재부팅; 및
    상기 디지털 컨텐츠의 복호화의 디스에이블 중의 적어도 하나를 포함하는, 방법.
  12. 통신 인터페이스;
    소프트웨어 명령들을 저장하도록 동작가능한 메모리;
    상기 메모리에 결합된 중앙 처리기; 및
    상기 메모리 및 상기 중앙 처리기에 결합된 보안 처리기를 포함하고,
    상기 보안 처리기는,
    상기 중앙 처리기의 기능 세트(function set)를 디스에이블하고;
    난수를 생성하고;
    서비스 제공자 장치에 의해 알려진 보안 키이로 상기 난수를 암호화하고;
    상기 서비스 제공자 장치로의 암호화된 난수의 송신을 시작하고;
    상기 서비스 제공자 장치로부터 응답 메시지를 수신하고;
    상기 응답 메시지를 복호화하고;
    권리 부분에 대한 복호화된 응답 메시지로부터 코드 버전을 추출하고;
    상기 메모리로부터 저장된 코드 버전을 판독하고;
    상기 소프트웨어 명령들을 검증하기 위하여 상기 코드 버전을 상기 저장된 코드 버전과 비교하고, 긍정적인 비교 시에, 상기 중앙 처리기의 상기 기능 세트를 가능하게 하도록 동작가능한, 장치.
  13. 통신 인터페이스, 메모리, 중앙 처리기, 및 보안 처리기를 갖는 전자 장치의 방법으로서,
    상기 중앙 처리기의 기능 세트를 디스에이블하는 단계;
    난수를 생성하는 단계;
    서비스 제공자 장치에 의해 알려진 보안 키이로 상기 난수를 암호화하는 단계;
    상기 서비스 제공자 장치로의 암호화된 난수의 송신을 시작하는 단계;
    상기 서비스 제공자 장치로부터 응답 메시지를 수신하는 단계;
    상기 응답 메시지를 복호화하는 단계;
    권리 부분에 대한 복호화된 응답 메시지로부터 코드 버전을 추출하는 단계;
    상기 메모리로부터 저장된 코드 버전을 판독하는 단계; 및
    소프트웨어 명령들을 검증하기 위하여 상기 코드 버전을 상기 저장된 코드 버전과 비교하고, 긍정적인 비교 시에, 상기 중앙 처리기의 상기 기능 세트를 가능하게 하는 단계를 포함하는, 전자 장치의 방법.
  14. 원격 장치로부터 디지털 데이터를 수신하도록 동작가능한 통신 인터페이스;
    소프트웨어 명령들 및 디지털 컨텐츠를 저장하도록 동작가능한 메모리; 및
    상기 통신 인터페이스 및 상기 메모리에 결합되어, 상기 디지털 데이터를 수신하고, 복호화된 컨텐츠 및 암호화된 코드 버전 메시지를 생성하기 위하여 제 1 복호화 기술을 이용하여 상기 디지털 데이터를 복호화하고, 참조 코드 버전을 포함하는 코드 버전 메시지를 생성하기 위하여 제 2 복호화 기술을 이용하여 상기 암호화된 코드 버전 메시지를 복호화하고, 상기 메모리로부터 저장된 코드 버전을 판독하고, 상기 소프트웨어 명령들을 검증하기 위하여 상기 참조 코드 버전을 상기 저장된 코드 버전과 비교하도록 동작가능한 처리 회로를 포함하는, 장치.
  15. 원격 전자 장치로부터 디지털 데이터를 수신하는 단계;
    복호화된 컨텐츠 및 암호화된 코드 버전 메시지를 생성하기 위하여 제 1 복호화 기술을 이용하여 상기 디지털 데이터를 복호화하는 단계;
    참조 코드 버전을 포함하는 코드 버전 메시지를 생성하기 위하여 제 2 복호화 기술을 이용하여 상기 암호화된 코드 버전 메시지를 복호화하는 단계;
    상기 메모리로부터 저장된 코드 버전을 판독하는 단계; 및
    상기 소프트웨어 명령들을 검증하기 위하여 상기 참조 코드 버전을 상기 저장된 코드 버전과 비교하는 단계를 포함하는, 방법.
KR1020120021962A 2011-03-04 2012-03-02 전자 장치에서의 소프트웨어 업데이트들의 집행 KR101355057B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201161449370P 2011-03-04 2011-03-04
US61/449,370 2011-03-04
US13/073,876 2011-03-28
US13/073,876 US8954722B2 (en) 2011-03-04 2011-03-28 Enforcing software updates in an electronic device

Publications (2)

Publication Number Publication Date
KR20120100819A true KR20120100819A (ko) 2012-09-12
KR101355057B1 KR101355057B1 (ko) 2014-01-24

Family

ID=45655064

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120021962A KR101355057B1 (ko) 2011-03-04 2012-03-02 전자 장치에서의 소프트웨어 업데이트들의 집행

Country Status (5)

Country Link
US (1) US8954722B2 (ko)
EP (1) EP2495678A3 (ko)
KR (1) KR101355057B1 (ko)
CN (1) CN102882840B (ko)
TW (1) TW201251427A (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8938619B2 (en) * 2010-12-29 2015-01-20 Adobe Systems Incorporated System and method for decrypting content samples including distinct encryption chains
WO2014011160A1 (en) * 2012-07-10 2014-01-16 Motorola Mobility Llc Secure method of enforcing client code version upgrade in digital rights management system
US8806526B2 (en) * 2012-08-17 2014-08-12 Broadcom Corporation Security processing unit with secure connection to head end
US10037366B2 (en) * 2014-02-07 2018-07-31 Microsoft Technology Licensing, Llc End to end validation of data transformation accuracy
EP3204851B1 (en) * 2014-10-10 2020-07-22 Visa International Service Association Methods and systems for partial personalization during mobile application update
CN104506943A (zh) * 2014-12-31 2015-04-08 山东泰信电子股份有限公司 一种机顶盒软件定制升级方法
US9594699B2 (en) * 2015-03-20 2017-03-14 Intel Corporation Additional security in flashless modem
US10193698B1 (en) 2015-06-26 2019-01-29 Juniper Networks, Inc. Avoiding interdicted certificate cache poisoning for secure sockets layer forward proxy
US10291651B1 (en) * 2015-06-26 2019-05-14 Juniper Networks, Inc. Unified secure socket layer decryption
US9893883B1 (en) 2015-06-26 2018-02-13 Juniper Networks, Inc. Decryption of secure sockets layer sessions having enabled perfect forward secrecy using a diffie-hellman key exchange
US10162767B2 (en) * 2015-06-27 2018-12-25 Mcafee, Llc Virtualized trusted storage
CN109472139B (zh) * 2017-12-25 2022-04-19 北京安天网络安全技术有限公司 一种防御勒索病毒对主机文档二次加密的方法及系统
KR102190196B1 (ko) * 2020-05-06 2020-12-11 주식회사 수산이앤에스 안전등급 제어기 및 이의 구성정보 관리방법

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6256393B1 (en) 1998-06-23 2001-07-03 General Instrument Corporation Authorization and access control of software object residing in set-top terminals
CA2400220C (en) * 2000-02-15 2013-07-30 Silverbrook Research Pty Ltd Consumable authentication protocol and system
AU2001243147A1 (en) * 2000-02-17 2001-08-27 General Instrument Corporation Method and apparatus for providing secure control of software or firmware code downloading and secure operation of a computing device receiving downloaded code
US7185362B2 (en) 2001-08-20 2007-02-27 Qualcomm, Incorporated Method and apparatus for security in a data processing system
US7203844B1 (en) 2002-06-20 2007-04-10 Oxford William V Method and system for a recursive security protocol for digital copyright control
US20040193917A1 (en) 2003-03-26 2004-09-30 Drews Paul C Application programming interface to securely manage different execution environments
US7434065B2 (en) * 2003-09-29 2008-10-07 Broadcom Corporation Secure verification using a set-top-box chip
EP1723649A2 (en) * 2004-03-09 2006-11-22 Matsushita Electric Industrial Co., Ltd. Content playback device
CN101040552B (zh) * 2005-04-18 2010-12-01 捷讯研究有限公司 控制软件版本更新的方法和系统
US8131995B2 (en) * 2006-01-24 2012-03-06 Vixs Systems, Inc. Processing feature revocation and reinvocation
US7770165B2 (en) 2006-08-25 2010-08-03 Microsoft Corporation Providing firmware updates to portable media devices
US10104432B2 (en) 2006-12-01 2018-10-16 Time Warner Cable Enterprises Llc Methods and apparatus for software provisioning of a network device
EP2129116A1 (fr) * 2008-05-29 2009-12-02 Nagravision S.A. Unité et méthode de traitement sécurisé de données audio/vidéo à accès contrôlé
US8213618B2 (en) 2008-12-30 2012-07-03 Intel Corporation Protecting content on client platforms
CN101719910B (zh) * 2009-11-16 2015-02-11 北京数字太和科技有限责任公司 一种实现内容保护的终端设备及其传输方法

Also Published As

Publication number Publication date
EP2495678A2 (en) 2012-09-05
EP2495678A3 (en) 2014-01-08
TWI562624B (ko) 2016-12-11
US20120226900A1 (en) 2012-09-06
KR101355057B1 (ko) 2014-01-24
CN102882840A (zh) 2013-01-16
CN102882840B (zh) 2018-01-05
US8954722B2 (en) 2015-02-10
TW201251427A (en) 2012-12-16

Similar Documents

Publication Publication Date Title
KR101355057B1 (ko) 전자 장치에서의 소프트웨어 업데이트들의 집행
US9479825B2 (en) Terminal based on conditional access technology
US11228427B2 (en) System and method for securing content keys delivered in manifest files
US8565427B2 (en) Enforcing software independent content protection in an electronic device
EP2507991B1 (en) Digital broadcast receiver and booting method of digital broadcast receiver
EP2705662B1 (en) Tv receiver device with multiple decryption modes
AU2010276315B2 (en) Off-line content delivery system with layered encryption
US20090080649A1 (en) Method and system for protecting data
CN105409234A (zh) 用于执行输送i/o的系统及方法
US10044508B2 (en) Embedding digital watermark at the receiver end to keep track of digital content source and intended legal subscriber
US20050154921A1 (en) Method and apparatus for providing a security profile
CA3044661C (en) Smart card authenticated download
US20190222878A1 (en) System and method for managing in-field deployment of multiple conditional access and watermarking systems
US20110113443A1 (en) IP TV With DRM
US11698988B2 (en) Light weight transport stream streaming protocol for live transcoding system
WO2007089958A2 (en) Preventing entitlement management message (emm) filter attacks
US20080037782A1 (en) Reduction of channel change time for digital media devices using key management and virtual smart cards
KR101280740B1 (ko) 디코딩 유닛 내의 오디오/비디오 컨텐츠에 대한 액세스를 보호하는 방법
KR101980928B1 (ko) 디지털 전송 스트림의 디스크램블링 콘텐츠 패킷용 보안 모듈 및 암호 시스템 및 방법
KR100947326B1 (ko) Dcas 호스트 장치 및 이의 보안 강화 방법
Tarate Using ARM TrustZone to Implement Downloadable CAS Framework and Secure Media Pipeline in IPTV Client Devices
KR100950596B1 (ko) Dcas 기반 방송 수신 장치 및 이의 보안 강화 방법
KR100947313B1 (ko) Dcas 기반 인증 방법 및 장치

Legal Events

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

Payment date: 20170109

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee