KR101248218B1 - 암호화 시스템을 위한 삼중 랩 방법 - Google Patents

암호화 시스템을 위한 삼중 랩 방법 Download PDF

Info

Publication number
KR101248218B1
KR101248218B1 KR1020127028275A KR20127028275A KR101248218B1 KR 101248218 B1 KR101248218 B1 KR 101248218B1 KR 1020127028275 A KR1020127028275 A KR 1020127028275A KR 20127028275 A KR20127028275 A KR 20127028275A KR 101248218 B1 KR101248218 B1 KR 101248218B1
Authority
KR
South Korea
Prior art keywords
key
encrypted
program
data
message
Prior art date
Application number
KR1020127028275A
Other languages
English (en)
Other versions
KR20120135430A (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
Priority claimed from US11/137,272 external-priority patent/US8189786B2/en
Application filed by 루이스 리차드, 제니스 일렉트로닉스 엘엘씨 filed Critical 루이스 리차드
Priority claimed from PCT/US2006/019298 external-priority patent/WO2006127405A2/en
Publication of KR20120135430A publication Critical patent/KR20120135430A/ko
Application granted granted Critical
Publication of KR101248218B1 publication Critical patent/KR101248218B1/ko

Links

Images

Classifications

    • 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
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • 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/234Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
    • H04N21/2347Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving video stream encryption
    • 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/234Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
    • H04N21/2347Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving video stream encryption
    • H04N21/23476Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving video stream encryption by partially encrypting, e.g. encrypting the ending portion of a movie
    • 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/236Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
    • H04N21/2362Generation or processing of Service Information [SI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/266Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
    • H04N21/26606Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel for generating or managing entitlement messages, e.g. Entitlement Control Message [ECM] or Entitlement Management Message [EMM]
    • 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/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
    • H04N21/4405Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 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/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
    • H04N21/4405Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving video stream decryption
    • H04N21/44055Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving video stream decryption by partially decrypting, e.g. decrypting a video stream that has been partially encrypted
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/835Generation of protective data, e.g. certificates

Abstract

수신기는 송신기로부터 데이터 키를 수신한다. 데이터 키는 송신기에서 암호화될 데이터에서 얻은 시드로 시드된 난수 발생기에 의해 생성된다. 수신기는 또한 MPEG 전송 스트림에서의 널 패킷 대신에 동기화 신호를 수신하고, MPEG 전송 스트림에서의 암호화된 데이터를 수신하고, 수신된 동기화 신호에 응답하여, 수신된 암호화 데이터를 복호화하기 위해 데이터 키의 사용을 동기화한다. 추가로 또는 대안으로, 연속적인 제 1, 제 2, 제 3 및 제 4 암호화된 부분을 가지는 암호화된 메시지는 삼중 랩 복호화 기술을 사용함으로써 제 1, 제 2, 제 3 및 제 4 복호화된 데이터 부분으로 복호화된다.

Description

암호화 시스템을 위한 삼중 랩 방법{Triple Wrap Method for Encryption System}
본 출원은 2005년 5월 25일에 출원된, 미국 특허 출원 제 11/137,272호의 일부 계속 출원이다.
본 발명은 송신기와 수신기 사이에 전송된 데이터의 암호화 및 복호화에 관한 것으로, 더욱 구체적으로, 데이터를 암호화하는데 사용되는 암호화 키와 데이터 모두의 암호화 및 복호화에 관한 것이다.
데이터의 불법 복사(unauthorized copying)로 원하지 않는 결과를 가져오는 많은 시스템이 존재한다. 예를 들어, 호텔, 모텔 및 케이블 시스템에 의해 제공되는 것과 같은 PPV(pay per view) 시스템에서, PPV 프로그래밍을 제공하는 공급자들은 그들의 프로그램이 불법 복제(pirated)된다면 상당한 수익을 손실한다.
많은 툴(tool)들이 하드웨어 회사(hardware store), 모형 공작 전문점(hobby shop), 대학 실험실에서 주로 이용가능하고, PPV 시스템을 포함하는, 데이터 전송 시스템의 모든 양태의 역-공학(reverse-engineering)을 가능하게 하기 위해 해커 및 전문가에 의해 제공된다. 따라서, PPV 공급자 및 복사 방지(copy protection)에 관심있는 다른 사람들은 불법 복사를 막기 위해 다양한 복사 방지 시스템을 구현한다.
복사 방지 시스템은 다수의 보안 목표를 가진다. 예를 들어, 복사 방지 시스템은 고 품질 압축된 디지털 콘텐츠의 절도를 예방하고, 압축되지 않은 고 품질의 디지털 콘텐츠의 절도를 예방하고, 그리고 침입(break-ins)에 의해 야기된 손실을 제한하도록 되어 있다.
본 발명의 목적은 콘텐츠의 불법 복사를 차단하도록 의도된 복사 방지 시스템을 제공하기 위한 것이다.
본 발명의 일 양태에 따르면, 연속하는 제 1, 제 2, 제 3 및 제 4 암호화된 부분을 가지는 암호화된 메시지를 연속하는 제 1, 제 2, 제 3 및 제 4 복호화된 데이터 부분(data portion)를 가지는 복호화된 데이터로 복호화하기 위한 삼중 랩 복호화 방법은, 송신기로부터, MPEG 전송 스트림에서의 널 패킷 대신에 암호화된 메시지를 수신하는 단계; 제 1 중간(intermediate) 복호화된 데이터 및 제 4 복호화된 데이터 부분을 생성하기 위해 제 1 키를 따라 제 1 및 제 4 암호화된 부분을 복호화하는 단계; 제 1 연산자(operator) 출력을 생성하기 위해 제 2 키에 따라 제 1 연산자에 의해 제 1 중간 복호화된 데이터를 처리하는 단계; 제 2 중간 복호화된 데이터 및 제 3 복호화된 데이터 부분을 생성하기 위해 제 3 키에 따라 제 1 연산자 출력 및 제 3 암호화된 부분을 복호화하는 단계; 제 2 연산자 출력을 생성하기 위해 제 4 키에 따라 제 2 연산자에 의해 제 2 중간 복호화된 데이터를 처리하는 단계; 제 삼중간 복호화된 데이터 및 제 2 복호화된 데이터 부분을 생성하기 위해 제 5 키에 따라 제 2 연산자 출력 및 제 2 암호화된 부분을 복호화하는 단계; 및 제 1 복호화된 데이터 부분을 생성하기 위해 제 6 키에 따라 제 3 연산자에 의해 제 삼중간 복호화된 데이터를 처리하는 단계를 포함하는 삼중 랩 복호화 방법에 관한 것이다.
본 명세서 내에 포함되어 있음.
이들 특징 및 다른 특징 및 이점들은 다음의 도면과 함께 취해지는 경우 본 발명의 상세한 설명으로부터 더욱 명백하게 될 것이다.
도 1은 본 발명의 일 실시예에 따른 복사 방지 송신기의 암호화 인코더를 나타내고;
도 2는 도 1의 데이터 암호화 블록을 더욱 상세하게 나타내고;
도 3은 도 1의 동적 키 블록을 더욱 상세하게 나타내고;
도 4는 도 3의 키 확장 블록을 더욱 상세하게 나타내고;
도 5는 도 1의 일부분을 더욱 상세하게 나타내고;
도 6은 도 5의 키 변경자(modifier)를 더욱 상세하게 나타내고;
도 7은 도 1의 복사 방지 시스템에 사용된 예시적인 변경자 메시지 MM을 나타내고;
도 8은 도 7에 나타나 있는 변경자 메시지 MM의 제어부를 나타내고;
도 9는 도 8에 나타나 있는 변경자 메시지 MM의 시스템 제어 바이트의 예시적인 정의를 나타내고;
도 10은 도 1의 복사 방지 시스템에 사용된 예시적인 메시지 세그먼트 MS를 나타내고;
도 11은 도 1의 변경자 메시지 MM 암호화 블록, 변경 키, 및 프로그램 키를 더욱 상세하게 나타내고;
도 12는 도 10에 나타나 있는 메시지 세그먼트 MS의 일부인 예시적인 키 메시지를 나타내고;
도 13은 프로그램 키와 변경 키를 전송하는데 사용된 메시지 세그먼트 MS의 예시적인 쌍을 나타내고;
도 14는 메시지 생성 및 사용에 관한 송신기와 수신기의 타이밍을 나타내고;
도 15는 프로그램 데이터의 암호화 동안 프로그램 키 PK를 적용하기 위한 예시적인 순환(rotation)을 나타내고;
도 16은 순환이 적용된 필드(field)의 프로그램 데이터 세그먼트의 부분에 대한 예를 나타내고;
도 17은 본 발명의 일 실시예에 따른 복사 방지 수신기의 복호화 디코더(decoder)를 나타내고;
도 18은 도 17의 데이터 복호화 블록을 더욱 상세하게 나타내고;
도 19는 도 17의 복호화 디코더의 부분을 더욱 상세하게 나타내고; 그리고,
도 20은 도 17의 변경자 메시지 복호화 블록 및 키를 더욱 상세하게 나타낸다.
도 1에서, 복사 방지 송신기의 예시적인 암호화 인코더(encryption encoder)(8)는 MPEG 전송 스트림을 수신하고 MPEG 전송 스트림에서의 패킷이 암호화될 데이터를 포함하는지를 결정하는 PID 필터(10)를 포함한다. 이하 언급되는 바와 같이, PID 필터(10)는 또한 수신된 신호에서 암호화된 프로그램 데이터를 복호화하기 위한 충분한 정보를 수신기에 주는 메시지 세그먼트로 교환되는 널 패킷을 식별하고, PID 필터(10)는 또한 암호화되지 않으려는 정보를 포함하는 패킷을 식별한다.
동적 프로그램 키 및 변경 키 생성기(dynamic program key and modification key generator)(12)는 암호화를 위해 선택되는 MPEG 전송 스트림에서 프로그램 데이터를 암호화하기 위해 제 1 암호화 엔진(14)에 의해 적용된 프로그램 키 PK를 동적으로 생성한다. 제 1 암호화 엔진(14)은, 예를 들어, 단일 랩(wrap) 암호화 엔진일 수 있고, AES(Advanced Encryption Standard)에 지정되어 있는 단일 랩 암호화 프로세스를 적용하도록 배열되어 있을 수 있다. 암호화된 프로그램 데이터 패킷은 출력 멀티플렉서(16)의 하나의 입력에 공급된다.
동적 생성 프로그램 키 PK는 멀티플렉서(24)를 통하여 적용된 후 이들 자신은 제 2 암호화 엔진(18)에 의해 암호화된다. 제 2 암호화 엔진(18)은 삼중 랩 암호화 엔진일 수 있고, AES에 지정되어 있는 삼중 랩 암호화 프로세스를 적용하도록 배열되어 있을 수 있다.
프로그램 데이터를 암호화하기 위한 제 1 암호화 엔진(14)에 의해 사용되는 동적 생성 프로그램 키 PK와는 달리, 동적 생성 프로그램 키 PK를 암호화하기 위해 제 2 암호화 엔진(18)에 의해 사용된 키는 메시지 세그먼트 키이다. 고정 키(fixed key)는 메모리(20)에 저장되고, 이들 고정 키는 메시지 세그먼트 키를 생성하기 위해 메시지 세그먼트 키 생성기 및 제어(22)에 의해 사용되고, 메시지 세그먼트 키는 제 2 암호화 엔진(18)에 공급된다.
메모리(20)에 저장된 고정 키는, 예를 들어, 128 비트 길이이며, 메모리(20)에 저장된 64개의 고정 키가 있다. 본 발명에서 언급된 해시(hash) 값은, 예를 들어, 각각 64 비트이고 고정 키의 선택된 부분으로 유도된다. 대안으로, 해시 값은 메모리(20)에 각각 저장될 수 있으며, 고정 키와 해시 값은 임의의 바람직한 길이와 개수로 이루어질 수 있다.
따라서, 메시지 세그먼트 키 생성 및 제어(22)는 메모리(20)로부터 제 2 암호화 엔진(18)에 의해 사용될 고정키를 선택하고, 메시지 세그먼트 키를 생성하도록 이들을 사용하고, 제 2 암호화 엔진(18)으로 메시지 세그먼트 키를 공급한다. 제 2 암호화 엔진(18)은 메시지 세그먼트 키 생성 및 제어(22)로부터 메시지 세그먼트 키에 기초한 동적 생성 프로그램 키 PK를 암호화한다.
이하 언급되는 바와 같이, 변경자 메시지 MM와 변경 키 MK는 또한 멀티플렉서(24)를 통해 적용되고 제 2 암호화 엔진(18)에 의해 암호화된다. 암호화된 동적 생성 프로그램 키 PK 및 암호화된 변경자 메시지 MM은 수신기로 전송되는 프로그램 키 메시지 세그먼트 PKMS로 어셈블(assemble)된다. 이하 언급되는 바와 같이, 암호화된 변경 키 MK, 암호화된 체크섬(checksum), 및 암호화된 변경자 메시지 MM는 마찬가지로 수신기로 또한 전송되는 변경 키 메시지 세그먼트(MKMS)로 어셈블된다.
프로그램 및 변경 키 생성기(12)에 의해 동적으로 생성된, 변경 키는 프로그램 키를 암호화하기 위해 사용되는 메시지 세그먼트 키를 생성하기 위해 고정 키와 함께 사용되고, 체크섬은 메모리(20)에 저장된 고정 키에 기초한다. 체크섬은, 예를 들어, 128 비트를 포함할 수 있고, 메모리(20)에 저장된 모든 고정 키로부터 생성될 수 있다. 따라서, 수신기는 수신기의 고정 키가 송신기의 고정 키와 일치하는 지를 검사하기 위해 송신기로부터의 체크섬과 자신의 고정 키로부터 생성된 체크섬을 비교한다. 체크섬은 또한 전송에서의 오류를 결정하는데 사용될 수 있다.
전술된 바와 같이, 프로그램 키 메시지 세그먼트 PKMS 및 변경 키 메시지 세그먼트 MKMS는 수신기에 수신된 신호에서 암호화된 프로그램 데이터를 복호화하기 위해 필요한 정보를 준다.
도 2는 더욱 상세하게 제 1 암호화 엔진(14)을 나타낸다. 도 1과 도 2에 나타난 바와 같이, 제 1 암호화 엔진(14)은 PID 필터(10)와 출력 멀티플렉서(16) 사이에 결합되어 있다.
제 1 암호화 엔진(14)은 3 개의 섹션(14A, 14B, 14C)을 가진다. 섹션(14A)은 디멀티플렉서(de-multiplexer)(30), 메모리(32, 34), 및 멀티플렉서(36)를 포함한다. 섹션(14B)은 RAM 지연(38), 암호화 블록(40), 및 멀티플렉서(42)를 포함한다. 섹션(14C)은 디멀티플렉서(44), 메모리(46, 48), 및 멀티플렉서(50)를 포함한다.
PID 필터(10)는 디멀티플렉서(30)로 MPEG 전송 스트림에서의 전송 패킷을 전달한다. 전송 패킷은 역다중화되고 핑퐁(ping-pong) 방법으로 동작하는 메모리(32, 34)에 저장된다. 메모리(32, 34)에서의 전송 패킷은 멀티플렉서(36)로 공급된다.
멀티플렉서(36)는 모든 패킷을 메모리(32, 34)로부터 RAM 지연(38) 및 암호화 블록(40)으로 전달한다. 이들 패킷은 프로그램 패킷, 널 패킷, 및 PID, PSIP, PMT 및 PAT와 같은 비-프로그램 패킷을 포함한다. 암호화 블록(40)은 수신하여 멀티플렉서(42)로 암호화된 패킷을 공급하는 모든 패킷을 암호화하기 위해 동적 생성 프로그램 키 PK를 사용한다. PID 필터(10)로부터의 암호화 플래그(flag)에 응답하여, 멀티플렉서(42)는 선택된 프로그램 또는 암호화되려는 프로그램에 해당하는 암호화 블록(40)으로부터의 암호화된 패킷만을 선택한다. MPEG 전송 스트림은 하나 이상의 프로그램을 포함할 수 있고 이들 임의의 하나 이상의 프로그램은 암호화를 위해 플래그될 수 있다는 것이 이해될 것이다. 모든 다른 패킷(암호화될 프로그램에 해당하지 않는 것들)이 RAM 지연(38)으로부터 멀티플렉서(42)에 의해 선택된다. 따라서, 멀티플렉서(42)의 출력은 선택된 프로그램에 해당하는 패킷이 암호화되는 것을 제외한 입력 MPEG 전송 스트림이다. 멀티플렉서(42)는 암호화된 패킷 및 암호화되지 않은 패킷을 디멀티플렉서(44)로 전달한다.
멀티플렉서(42)가 RAM 지연(38)에서 선택한 패킷들 중에 PSIP(Program and System Information Protocol) 패킷, PAT(Program Association Table) 패킷, PMT(Program Map Table) 패킷, 및/또는 적응 필드(adaptation field)를 포함하는 패킷과 같은 PSI(Program Specific Information) 패킷이 있다. 따라서, 멀티플렉서(42)에 의해 출력된 암호화되지 않은 패킷은 PSI 패킷을 포함한다. PSI 패킷은 수신기가 전송 스트림의 어느 채널 및 어떤 부분이 사용자에 의해 선택된 프로그램을 포함하고 있는 지를 결정하는데 도움을 주는 정보를 포함한다. PSI 패킷이 암호화되어 있다면, 수신기는 복호화를 위한 사용자 선택 프로그램을 찾지 못할 수 있다.
디멀티플렉서(44)로부터의 암호화된 패킷 및 암호화되지 않은 패킷은 핑퐁 방식으로 동작하는 메모리(46, 48)에 저장된다. 메모리(46, 48)에서의 암호화된 패킷 및 암호화되지 않은 패킷은 출력 멀티플렉서(16)로 멀티플렉서(50)를 통해 공급된다.
제 1 암호화 엔진(14)의 섹션(14A, 14C)은 적절한 타이밍, 데이터 흐름비(flow rate), 및 동기화를 유지하도록 제어된다.
도 3은 동적 프로그램 키 및 변경 키 생성기(12)의 동적 프로그램 키 생성부(12A)를 더욱 상세하게 나타낸다. 동적 프로그램키 생성부(12A)는 난수 발생기(random number generator)의 시드(seed)를 공급하는 시드 발생기(60)를 포함한다. 예를 들어, 시드 발생기(60)는 임의의 요구된 원리로, 하나 이상의 프로그램 데이터 패킷에서, 비디오 및/또는 오디오와 같은, MPEG 전송 스트림(61)의 임의의 부분에서 시드를 선택할 수 있다.
디멀티플렉서(64)는 암호화 블록(40)이 프로그램 데이터를 암호화하기 위해 메모리(66)의 활성부(active portion)에 이전에 저장되어 있는 4 개의 동적 생성 키를 사용하는 동안, 난수 발생기(62)에서 4 개의 128 비트 난수를 선택하여 메모리(66)의 후속부(next portion)에서의 4 개의 동적 생성 프로그램 키로서 이들 4 개의 128 비트 난수를 저장한다. 따라서, 메모리(66)의 활성부에 저장된 4 개의 동적 생성 키가 현재 프로그램 데이터를 암호화하기 위해 사용되는 동안, 디멀티플렉서(64)는 난수 발생기(62)에서 또 하나의 다른 4 개의 128 비트 난수를 선택하고 메모리(66)의 후속부에 4 개의 동적 생성 프로그램 키 PK로서 이들 추가적인 4 개의 128 비트 난수를 저장한다.
도 14와 관련하여 이하 설명되는 바와 같이, 변경 키 메시지 세그먼트 MKMS가 전송되는 시점에, 메모리(66)의 활성부에 저장되어 있는 4 개의 동적 생성 프로그램 키 PK의 사용은 불연속적이고, 메모리(66)의 후속부에 저장되어 있는 4 개의 새로운 동적 프로그램 키 PK의 사용을 시작한다. 이 전이 점(transition point)에서, 메모리(66)의 이전 후속부는 메모리(66)의 새로운 활성부가 되고, 메모리(66)의 이전 활성부는 메모리(66)의 새로운 후속부가 된다. 또한, 이들 4개의 새로운 동적 생성 프로그램 키 PK가 프로그램 데이터를 암호화하기 위해 사용되는 중에, 4 개 이상의 프로그램 키 PK가 동적으로 생성되고 메모리(66)의 새로운 후속부에 저장된다.
멀티플렉서(68)는 도 4에 나타난 바와 같이 메모리(66)의 활성부로부터 키 확장기(70)로 4 개의 동적 프로그램 키를 공급한다. 필요로 하는 한, 키 확장기(70)는 각각의 동적 프로그램 키 PK를 128 비트 키에서, 예를 들어, 1408 비트 확장된 키로 확장한다. 확장된 동적 프로그램 키 PK는 도 2의 암호화 블록(40)으로 공급된다.
도 4에 나타난 바와 같이 키 확장기(70)는 반전 키(inverse key) 블록을 포함한다. 이 반전 키 블록은 프로그램 암호화 동안 인에이블(enable)되고 프로그램 키 메시지 세그먼트 PKMS 및 변경 키 메시지 세그먼트 MKMS의 암호화 동안 디스에이블(disable)된다.
이런 식으로, 4 개의 동적 생성 프로그램 키 PK는 다음 4개의 프로그램 키 PK가 동적으로 생성되는 동안 프로그램 데이터를 암호화하기 위해 사용된다. 메모리(66)의 활성부로부터 사용되고 있는 4 개의 동적 생성 프로그램 키 PK는 변경 키 메시지 세그먼트 MKMS가 생성될 때까지 계속 사용된다.
예를 들어, 메시지 세그먼트들 사이의 시간은 메시지 세그먼트가 선택된 널 패킷을 대신하여 전송되기 때문에 유입하는 MPEG 전송 스트림에서 널 패킷의 이용가능성에 달려있게 될 수 있다. PID 필터(10)는 널 패킷을 검출하고 멀티플렉서(50)로부터의 패킷 대신에 메시지 세그먼트를 전달하도록 출력 멀티플렉서(16)에 신호를 보낸다.
도 5에 나타난 바와 같이, 고정 키 선택기(80)는 메모리(20)에서 고정 키를 선택하도록 메모리(20)에 어드레스를 지정하기 위해 난수 발생기(62)에 의해 생성된 난수를 사용한다. 예를 들어, 메모리(20)에 저장된 각각의 고정 키는 128 비트일 수 있고, 4 개의 32 비트 어드레스 워드(word)는 메모리(20)로부터의 각각의 고정 키를 판독하는데 사용될 수 있다. 이들 고정 키는 수신기로 보내지고 수신된 암호화된 프로그램 데이터를 복호화하기 위해 수신기에 의해 요구되는 프로그램 키 및 변경 키를 암호화하는데 사용된다(이하 더욱 상세히 설명됨).
더욱 구체적으로, 3 개의 고정 키는 고정 키 선택기(80)에 의해 메모리(20)에서 선택되고 고정 키 메모리(82)에 고정 키 KA로 저장된다. 3 개 이상의 고정 키는 고정 키 선택기(80)에 의해 메모리(20)에서 선택되어 고정 키 메모리(84)에 고정 키 KB로 저장된다. 예를 들어, 각각의 이들 3 개의 고정 키 KA 및 3 개의 고정 키 KB는 128 비트의 길이일 수 있다. 고정 키 메모리(82)에 저장된 3 개의 고정 키 KA 및 고정 키 메모리(84)에 저장된 3 개의 고정 키 KB는 또한 난수 발생기(62)로부터의 랜덤 어드레스(random address)에 기초하여 선택된다.
또한, 3 개의 해시 값 A, B, C는 고정 키 선택기(80)에 의해 선택되고 메세지 세그먼트 키 및 해시 값 메모리(86)에 저장되어 있다. 3 개의 해시값 메모리 A, B, C는 또한 난수 발생기(62)로부터의 랜덤 어드레스에 기초하여 선택된다. 예를 들어, 각각의 3개의 해시 값 A, B, C는 64 비트 또는 고정키의 1/2 일 수 있다. 또한, 난수 발생기(62)로부터의 3 개의 난수는 변경 키 KM으로 변경 키 메모리(88)에 저장된다. 각각의 변경 키는, 예를 들어, 128 비트 길이일 수 있다.
도 6에서 더욱 상세하게 나타나 있는, 메시지 세그먼트 키 생성기(90)는 래치(latch)(921, 922, 923) 및 96 x 32 룩업 테이블(look up table)(94)을 포함한다. 래치(921)는 고정 키 메모리(82)에 저장되어 있는 3 개의 고정 키(KA) 중 1 번째의 처음 32 비트를 래치하고, 래치(922)는 고정 키 메모리(84)에 저장되어 있는 3 개의 고정 키(KB) 중 1 번째의 처음 32 비트를 래치하며, 래치(923)는 변경 키 메모리(88)에 저장되어 있는 3 개의 변경 키(KA) 중 1 번째의 처음 32 비트를 래치한다. 이들 래치된 96 비트는 메시지 세그먼트 키 및 해시 값 메모리(86)에서의 기억장치(stroage)에 대한 제 1 메시지 세그먼트의 처음 32 비트를 판독하는 96 비트 어드레스를 형성한다.
도 6은 또한, 간소화된 형태로, 룩업 테이블(94)에 저장되어 있는 4개의 룩업 테이블을 나타낸다. 테이블 중 하나는 메시지 세그먼트 키 및 해시값 메모리(86)에 저장되어 있는 3 개의 메시지 세그먼트 키를 제공하기 위해 선택된다. 도 6에서의 테이블 0의 간소화된 형태는 테이블 0에 저장되어 있는 어드레스와 비트 사이의 관계(relationship)를 나타낸다. 따라서, 어드레스의 1 번째 KM 비트가 0이고 어드레스의 1 번째 KA 비트가 0이고 어드레스의 1 번째 KB 비트가 0이면, 테이블 0은 메시지 세그먼트 키의 1 번째 비트 K0를 0 비트라 판독할 것이다. 그러나, 어드레스의 1 번째 KM 비트가 1이고 어드레스의 1 번째 KA 비트가 1이고 어드레스의 1 번째 KB 비트가 0이면, 테이블 0은 메시지 세그먼트 키의 1 번째 비트 K0를 1 비트라 판독할 것이다. 어드레스의 다음 KM 비트가 0이고 어드레스의 다음 KA 비트가 0이고 어드레스의 다음 KB 비트가 0이면, 테이블 0은 메시지 세그먼트 키의 다음 비트 K0를 0 비트라 판독할 것이다. 그러나, 어드레스의 다음 KM 비트가 0이고 어드레스의 다음 KA 비트가 1이고 어드레스의 다음 KB 비트가 0이면, 테이블 0은 메시지 세그먼트 키의 다음 비트 K0를 1 비트라 판독할 것이다.
테이블에 저장되어 있는 비트들은 자신의 어드레스로 임의의 요구된 관계를 가질 수 있다. 관계는 랜덤, OR, XOR, AND, NAND, NOT, MUX, 1의 보수(ones complement), 2의 보수 또는 그레이 스케일(gray scale) 관계일 수 있고, 각각의 테이블은 어드레스와 저장된 비트 사이의 다른 관계를 가질 수 있다.
1 번째 메시지 세그먼트 키의 처음 32 비트가 룩업 테이블(94)로 판독되고 메시지 세그먼트 키 및 해시 값 메모리(86)에 저장된 후, 래치(921)는 고정 키 메모리(82)에 저장되어 있는 3 개의 고정 키 KA 중 1 번째 키의 2 번째 32 비트를 래치하고, 래치(922)는 고정 키 메모리(84)에 저장되어 있는 3 개의 고정 키 KB 중 1 번째 키의 2 번째 32 비트를 래치하고, 래치(923)는 변경 키 메모리(88)에 저장되어 있는 3 개의 변경 키 KM 중 1 번째 키의 두 번째 32 비트를 래치한다. 이들 래치된 96 비트는 메시지 세그먼트 키 및 해시값 메모리(86)에서의 기억장치에 대한 1 번째 메시지 세그먼트의 2 번째 32 비트를 판독하는 2 번째 96 비트 어드레스를 형성한다.
고정 키 메모리(82)에 저장된 3 개의 고정 키 KA 중 1 번째 키의 3 번째 및 4 번째 32 비트, 고정 키 메모리(84)에 저장된 3 개의 고정 키 KB 중 1 번째 키의 3번째 및 4 번째 32 비트, 그리고 변경 키 메모리(88)에 저장된 3 개의 변경 키 KM 중 1 번째 키의 3 번째 및 4 번째 32 비트는 룩업 테이블(94)로부터의 1 번째 메시지 세그먼트의 3 번째 및 4 번째 32 비트를 판독하는데 사용된다. 이들 1 번째 메시지의 3 번째 및 4 번째 32 비트는 또한 1 번째 메시지 세그먼트 키의 모든 128 비트를 형성하기 위해 메시지 세그먼트 키 및 해시 값 메모리(86)에 저장된다. 2 번째 및 3 번째 메시지 세그먼트 키는 마찬가지로 룩업 테이블(94)로 판독되고 메시지 세그먼트 키 및 해시값 메모리(86)에 저장된다. 이들 3 개의 메시지 세그먼트 키는 프로그램 키를 암호화하는데 사용된다. 다른 3 개의 메시지 세그먼트 키는 이라 더욱 상세히 설명되는 바와 같이 한 세트의 변경 키를 암호화하는데 사용된다.
도 5에 나타난 바와 같이, 멀티플렉서(96)는 이하 더욱 충분히 설명되는 프로그램 키 메시지 세그먼트 PKMS 및 변경 키 메시지 세그먼트 MKMS를 생성하기 위해 메모리(66), 키 제어(98)로부터 4 개의 다음 동적 생성 프로그램 키 PK, 변경 키 메모리(88)로부터의 변경 키들, 메모리(20)로부터의 체크섬, 및 변경자 메시지 메모리(99)로부터의 변경자 메시지 MM을 적절히 다중화한다.
변경자 메시지 MM의 예가 도 7에 나타나 있다. 나타난 바와 같이, 변경자 메시지 MM은 64 비트 초기 값 및 192 비트 제어를 포함한다. 초기값의 사용은 이하 설명되어 있다. 도 8에 도시된 바와 같이, 변경자 메시지 MM의 제어 비트는, 예를 들어, 시스템 제어에 대한 4 바이트, 고정 키와 해시값에 대한 메모리 어드레스를 가리키는 어드레스 포인터(pointer) 용 9 바이트, 및 임의의 목적을 위해 사용되는 11 바이트를 포함한다.
전술된 어드레스 포인터는 (ⅰ) 고정 키 메모리(82, 84)에 저장되어 있고, 선택된 조합으로, 메시지 세그먼트 키 및 해시값 메모리(86)에 저장된 메시지 세그먼트 키 A, B, C를 발생하기 위해 메시지 세그먼트 키 생성기(90)에 의해 사용되는 6 개의 고정 키 및 (ⅱ) 메시지 세그먼트 키 및 해시값 메모리(86)에 또한 저장되어 있는 해시값 A, B, C에 해당하는 메모리(20)에서의 어드레스를 가리킨다. 이하 상세히 설명되는 바와 같이, 이들 어드레스 포인터는 수신기가 프로그램 키 및 변경 키를 복호화 하기 위해 필요로 하는 해당 해시 값 A, B, C 및 메시지 세그먼트 키 A, B, C를 재발생할 수 있도록 수신기로 변경자 메시지 MM으로 보내진다.
변경자 메시지 MM의 시스템 제어에 관한 32 비트는 도 9에서 예로 나타나 있다. 비트 0과 1은 프로그램 데이터로 할당되어 있는 복사 제어를 나타내는데 사용된다. 비트 2-7은 이들 예비 비트(reserved bit) 중 적어도 하나가 해당 메시지 세그먼트가 변경 키 메시지 세그먼트 MKMS임을 나타내기 위해 하나의 값으로 설정되는 것 및 해당 메시지 세그먼트가 프로그램 키 메시지 세그먼트 PKMS임을 나타내기 위해 다른 값으로 설정되는 것을 제외하고 예비된다.
이 적어도 하나의 예비 비트가 해당 메시지가 변경 키 메시지 세그먼트 MKMS임을 나타내는 값으로 설정되는 경우, 룩업 테이블(94)에 제공된 비트 KM은 3 개의 메시지 세그먼트 키가 메시지 세그먼트 키 및 해시값 메모리(86)에서의 저장장치를 위해 생성되는 동안 모두 0과 같은 기설정된 값으로 설정된다. 사실상, 변경 키 메시지 세그먼트 MKMS를 암호화하는데 사용되는 메시지 세그먼트 키는 송신기 및 수신기 모두에 공지되어 있는 기설정된 값을 가지는 변경 키와 함께 생성된다.
변경 키가 이 기설정된 값을 가지는 경우, 룩업 테이블(94)은 메시지 세그먼트 키로서 고정 키 KA만을 전달할 수 있다. 대안으로, 변경 키가 이 기설정된 값을 가지는 경우, 룩업 테이블(94)은 메시지 세그먼트 키로서 고정된 키 KB 만을 대신에 전달할 수 있거나, 또는 룩업 테이블(94)은 고정 키 메모리(82, 84)로부터의 고정 키 KA 및 KB 모두에 기초하여 메시지 세그먼트 키를 판독할 수 있다. 이들 대안은 이하 언급되는 바와 같이 변경자 메시지 MM의 시스템 제어의 8-11 비트에 의해 나타나는 바와 같이 룩업 테이블(94)에서의 어느 테이블이 선택되는 지에 기초한다. 기설정된 값을 가지는 이들 변경 키로 생성된 메시지 세그먼트 키는 변경 키 메시지 MK1, MK2, 및 MK3 와 체크섬 메시지 CRC를 암호화하기 위해 사용된다. 이 적어도 하나의 반전 비트는 해당 메시지 세그먼트가 프로그램 키 메시지 세그먼트 PKMS임을 나타내는 값으로 설정되는 경우, 룩업 테이블(94)에 제공된 비트 KM 은 변경 키 메모리(88)에 저장되어 있는 랜덤 생성 변경 키(randomly generated modification key)이고, 이들 랜덤 생성 변경 키는 메시지 세그먼트 키 및 해시값 메모리(86)에 저장되어 있는 3 개의 메시지 세그먼트 키를 생성하기 위해 고정 키 KA 및 KB와 함께 사용된다. 따라서, 프로그램 키 메세기 세그먼트 PKMS를 암호화하는데 사용되는 메시지 세그먼트 키는 고정 키 메모리(82, 84)로부터의 고정 키 KA 및 KB에 추가하여 변경 키 메모리(88)에 저장되어 있는 랜덤 생성 변경 키로 생성된다. 변경 키 메모리(88)에 저장되어 있는 랜덤 생성 변경 키로 생성된 메시지 세그먼트 키는 프로그램 키 메시지 PK1, PK2, PK3, 및 PK4를 암호화하는데 사용된다.
프로그램 키 메시지 세그먼트 PKMS를 암호화하는 메시지 세그먼트 키를 생성하는데 사용된 고정 키는 변경 키 메시지 세그먼트 MKMS를 암호화하는 메시지 세그먼트 키를 생성하는데 사용된 고정 키와 동일 하거나 또는 다를 수 있다.
비트 8, 9, 10, 및 11은 룩업 테이블(94)에 저장되어 있는 16 개의 가능한 테이블 중 어느 하나의 테이블이 메시지 세그먼트 키 및 해시값 메모리(86)에 저장되어 있는 메시지 세그먼트 키를 생성하는데 사용되는 지를 나타낸다.
비트 12-15는 이하 설명되는 바와 같이, 특정 프로그램 키 순환을 수신기에 나타내는 바와 같이 임의의 목적으로 사용될 수 있다.
비트 16-31은 변경자 메시지 메모리(99)의 CRC 생성기에 의해 생성된 체크섬이다. 구체적으로, 변경자 메시지 메모리(99)의 CRC 생성기는 체크섬을 생성하기 위해 도 9에 나타난 시스템 제어 바이트의 비트 0-15에 CRC 코드를 적용한다. 이 체크섬은 도 9에 나타난 바와 같이 비트 16-31을 포함한다. CRC 생성기는 변경자 메시지 MM의 완전한 시스템 제어를 형성하기 위해 변경되지 않은 비트 0-15에 이 체크섬을 덧붙인다. 변경자 메시지 MM의 이 완전한 시스템 제어는 프로그램 키 메시지 세그먼트 PKMS 및/또는 변경 키 메시지 세그먼트 MKMS가 예를 들어, 채널에서의 잡음 때문에 적절히 수신되지 않는 지를 결정하기 위해 수신기에 의해 사용되고 이하 더욱 상세하게 설명된다.
도 5에 나타난 바와 같이, 멀티플렉서(100)는 메시지 세그먼트 키 및 해시값 메모리(86)에 저장되어 있는 메시지 세그먼트 키 및 해시값을 수신한다. 멀티플렉서(100)는 또한 메모리(102)에 저장되어 있는 3 개의 고정 키 A', B', C' 및 3 개의 해시값 A', B', C'를 수신한다. 예를 들어, 메모리(102)에 저장되어 있는 3 개의 고정 키 A', B', C'는 각각 128 비트 고정 키를 포함하고, 메모리(102)에 저장되어 있는 3 개의 해시값 A', B', C'는 각각 64 비트 해시값을 포함한다.
멀티플렉서(96, 100)는 도 10에 나타나 있는 메시지 세그먼트 MS의 암호화된 부분을 암호화하기 위해 제 2 암호화 엔진(18)과 함께 동작한다. 프로그램 키 메시지 세그먼트 PKMS의 경우에, 도 10에 나타나 있는 메시지 세그먼트 MS의 암호화된 부분은 변경자 메시지 MM, 및 4개의 프로그램 키 메시지 KM1, KM2, KM3, KM4를 포함한다. 변경 키 메시지 세그먼트 MKMS의 경우에, 도 10에 나타나 있는 메시지 세그먼트의 암호화된 부분은 변경자 메시지 MM, 3 개의 변경 키 메시지 MK1, MK2, MK3 및 고정 키 체크섬 CRC를 포함한다. 변경자 메시지 MM은 도 7과 도 8에 나타난 바와 같이 초기값 및 192 비트 제어를 포함한다. 예를 들어, 초기값은 기설정된 임의의 64 비트를 포함할 수 있다.
변경자 메시지 MM을 암호화하기 위해, 멀티플렉서(100)는 키 확장기(104)를 통해 메모리(102)로부터 제 2 암호화 엔진(18)으로 3 개의 고정 키 A', B', C' 및 3 개의 해시값 A', B', C'를 전달한다. 키 확장기(104)는, 예를 들어, 키 확장기(70)와 유사할 수 있고 고정 키 A', B', C'만을 확장할 수 있다. 키 확장기(104)는 해시값 A', B', C'을 확장하지 않는다. 또한, 멀티플렉서(96)는 제 2 암호화 엔진(18)으로 변경자 메시지 MM을 전달한다.
제 2 암호화 엔진(18)은 도 11에서 더욱 상세하게 나타나 있다. 해시 값 A'는 XOR(EXCLUSIVE OR)(106)에 적용되고, 해시값 B'는 XOR(108)에 적용되고, 해시값 C'는 XOR(110)에 적용된다. XOR(106, 108, 110)은 자신의 개별 입력을 비트에 관해 처리한다. 확장된 고정 키 A'는 AES 암호화기(112)로 적용되고, 확장된 고정 키 B'는 AES 암호화기(114)로 적용되고 확장된 고정 키 C'는 AES 암호화기(116)로 적용된다.
변경자 메시지 MM의 초기값은 XOR(106)에 적용되고, 변경자 메시지 MM의 제어 비트의 처음 1/3은 AES 암호화기(112)로 적용되고, 변경자 메시지 MM의 제어 비트의 두번째 1/3은 AES 암호화기(114)로 적용되고, 변경자 메시지 MM의 제어 비트의 세 번째 1/3은 AES 암호화기(116)로 적용된다.
AES 암호화기(112)는 XOR(116)의 출력 및 확장된 고정 키 A'에 따른 변경자 메시지 MM의 제어 비트의 1 번째 1/3을 암호화하고, XOR(108)로 암호화 결과의 절반 및 암호화된 변경자 메시지 MM의 2 번째 1/4로서 나머지 절반을 공급한다. AES 암호화기(114)는 XOR(108)의 출력 및 확장된 고정 키 B'에 따른 변경자 메시지 MM의 제어 비트의 2 번째 1/3을 암호화하고, XOR(110)로 암호화 결과의 절반 및 암호화된 변경자 메시지 MM의 3 번째 1/4로서 나머지 절반을 공급한다. AES 암호화기(116)는 XOR(110)의 출력 및 확장된 고정 키 C'에 따른 변경자 메시지 MM의 제어 비트의 3 번째 1/3을 암호화하고, 암호화된 변경자 메시지 MM의 1 번째 1/4로서 암호화 결과의 절반 및 암호화된 변경자 메시지 MM의 4 번째 1/4로서 나머지 절반을 공급한다.
프로그램 키 메시지 세그먼트 PKMS에서의 각각의 키 메세지는 도 12의 예시적인 구성을 가진다. 이 예에 따라, 프로그램 키 메시지 KM1은 전술한 바 와 같은 동일한 초기값 또는 다른 초기값인, 64-비트 초기값, 64-비트 키 제어(98), 및 2 개의 64-비트 부분으로 나누어진 128-비트 프로그램 키의 하나를 포함한다. 다른 3 개의 프로그램 키를 포함하는 프로그램 키 메시지 KM2, KM3, 및 KM4가 마찬가지로 구성되어 있다.
키 제어(98)는 키 메시지가 프로그램 키, 변경 키, 또는 체크섬을 포함하는 지를 나타내는 데 사용된다.
프로그램 키 메시지 KM1을 암호화하기 위해, 멀티플렉서(100)는 3 개의 메시지 세그먼트 키 A, B, C 및 3 개의 해시값 A, B, C를 키 확장기(104)를 통해 메시지 세그먼트 키 및 해시값 메모리(86)에서 제 2 암호화 엔진(18)으로 전달한다. 위에서 설명한 바와 같이, 프로그램 키 메시지를 암호화하는데 사용되는 3 개의 메시지 세그먼트 키 A, B, C는 변경 키 메모리(88)에 저장되어 있는 랜덤 생성 변경 키 KM, 고정 키 메모리(82)로부터의 고정 키 KA, 및 고정 키 메모리(84)로부터의 고정 키 KB의 사용에 의해 테이블(94)로 판독된 메시지 세그먼트 키이다. 키 확장키(104)는 메시지 세그먼트 키 A, B, C만을 확장한다. 키 확장키(104)는 해시 값 A, B, C를 확장하지 않는다. 또한, 멀티플렉서(96)는 4 개의 동적 생성 프로그램 키 중 처음 것을 메모리(66)의 후속부로부터 제 2 암호화 엔진(18)으로 전달한다.
제 2 암호화 엔진(18)에서, 해시 값 A는 XOR(106)에 적용되고, 해시값 B는 XOR(108)에 적용되고, 해시값 C는 XOR(110)에 적용된다. 확장된 메시지 세그먼트 키 A는 AES 암호화기(112)로 적용되고, 확장된 메시지 세그먼트 키 B는 AES 암호화기(114)로 적용되고 확장된 메시지 세그먼트 키 C는 AES 암호화기(116)로 적용된다. 초기값은 XOR(106)에 적용되고, 제어 워드는 AES 암호화기(112)로 적용되고, 4 개의 동적 생성 프로그램 키 중 첫 번째의 처음 절반은 AES 암호화기(114)로 적용되고, 4 개의 동적 생성 프로그램 키 중 첫 번째의 두 번째 절반은 AES 암호화기(116)로 적용된다.
AES 암호화기(112)는 XOR(116)의 출력 및 확장된 메시지 세그먼트 키 A에 따른 제어 워드를 암호화하고, XOR(108)로 암호화 결과의 절반 및 프로그램 키 메시지 KM1의 두 번째 1/4로서 나머지 절반을 공급한다. AES 암호화기(114)는 XOR(108)의 출력 및 확장된 메시지 세그먼트 키 B에 따른 4 개의 동적 생성 프로그램 키 중 첫 번째의 처음 1/2를 암호화하고, XOR(110)로 암호화 결과의 절반 및 프로그램 키 메시지 KM1의 세 번째 1/4로서 나머지 절반을 공급한다. AES 암호화기(116)는 XOR(110)의 출력 및 확장된 메시지 세그먼트 키 C에 따른 4 개의 동적 생성 프로그램 키의 첫 번째의 두번째 1/2를 암호화하고, 프로그램 키 메시지 KM1의 처음 1/4로서 암호화 결과의 절반 및 프로그램 키 메시지 KM1의 네 번째 1/4로서 나머지 절반을 공급한다.
다른 3 개의 프로그램 키 메시지 KM2, KM3 및 KM3가 유사하게 생성된다.
변경 키 메시지 세그먼트 MKMS에서의 각각의 변경 키 메시지는 또한 도 12의 예시적인 구성을 가진다. 이 예에 따라, 변경 키 메시지 MK1는 전술한 바와 같은 동일한 초기값이거나 또는 다른 초기값인, 64-비트 초기값, 64-비트 키 제어(98), 및 2 개의 64-비트 부분으로 나누어진 128-비트 프로그램 키의 하나를 포함한다. 다른 2 개의 변경 키를 포함하는 변경 키 메시지 MK2, MK3, 및 MK4가 마찬가지로 구성되어 있다.
다시, 키 제어(98)는 키 메시지가 프로그램 키, 변경 키, 또는 체크섬을 포함하는 지를 나타내는 데 사용된다.
변경 키 메시지 MK1을 암호화하기 위해, 멀티플렉서(100)는 3 개의 메시지 세그먼트 키 A, B, C 및 3 개의 해시값 A, B, C를 키 확장기(104)를 통해 메시지 세그먼트 키 및 해시값 메모리(86)에서 제 2 암호화 엔진(18)으로 전달한다. 위에서 설명한 바와 같이, 변경 키 메시지를 암호화하는데 사용되는 3 개의 메시지 세그먼트 키 A, B, C는 기설정된 값을 가진 변경 키의 사용에 의해 테이블(94)로 판독된 메시지 세그먼트 키이다. 따라서, 고정 키 메모리(82)로부터 고정 키 KA는 메시지 세그먼트 키로서 테이블(94)로 판독될 수 있다. 대안으로, 전술한 바와 같이, 고정 키 메모리(84)로부터의 고정 키 KB는 메시지 세그먼트 키로서 테이블(94)로 판독될 수 있거나 또는 고정 키 KA 및 KB의 조합은 테이블(94)로부터의 메시지 세그먼트 키들을 판독하는데 사용될 수 있다. 키 확장기(104)는 메시지 세그먼트 키 A, B 및 C만을 확장한다. 키 확장키(104)는 해시 값 A, B 및 C를 확장하지 않는다. 또한, 멀티플렉서(96)는 변경 키 중 첫 번째를 변경 키 메모리(88)로부터 제 2 암호화 엔진(18)으로 전달한다.
앞에서와 같이, 해시 값 A, B, C는 XOR(106, 108, 110)에 적용된다. 또한, 앞에서와 같이, 확장된 메시지 세그먼트 키 A, B 및 C는 AES 암호화기(112, 114, 116)에 적용된다. 초기값은 XOR(106)에 적용되고, 제어 워드는 AES 암호화기(112)로 적용되고, 3 개의 변경 키 중 첫번째의 처음 절반은 AES 암호화기(114)로 적용되고, 3 개의 변경 키 중 첫 번째의 두 번째 절반은 AES 암호화기(116)로 적용된다.
AES 암호화기(112)는 XOR(108)로의 암호화 결과의 절반 및 변경 키 메시지 MK1의 두 번째 1/4로서 나머지 절반을 공급한다. AES 암호화기(114)는 XOR(110)으로의 암호화 결과의 절반 및 변경 키 메시지 MK1의 세 번째 1/4로서 나머지 절반을 공급한다. AES 암호화기(116)는 변경 키 메시지 MK1의 처음 1/4로서 암호화 결과의 절반 및 변경 키 MK1의 네 번째 1/4로서 나머지 절반을 공급한다.
다른 2 개의 변경 키 메시지 MK2, MK3 및 체크섬 메시지 CRC가 유사하게 생성된다.
도 1의 출력 멀티플렉서(16)는 암호화된 프로그램 데이터, 전송 스트림으로부터의 MPEG PID 헤더, 개별 생성기에 의해 공급될 수 있고 (만약에 있다면) SMPTE 타임 코드일 수 있는 192 클록 비트, 및 암호화된 전송 스트림을 형성하기 위해 암호화된 변경 키 메시지 세그먼트 MKMS 및 암호화된 프로그램 키 메시지 세그먼트 PKMS를 가진 전송 스트림으로부터의 순방향 오류 정정 20 바이트를 다중송신한다(mux). 각각의 프로그램 키 메시지 세그먼트 PKMS 및 변경 키 메시지 세그먼트 MKMS는 해당 완전한 ATSC 데이터 세그먼트에 포함되어 있다.
제 2 암호화 엔진(18)은 쌍으로 메시지 세그먼트 MS, 즉 프로그램 키 메시지 세그먼트 PKMS 및 변경 키 메시지 세그먼트 MKMS를 생성한다. 메시지 세그먼트 MS의 이 쌍은 도 13에 도시되어 있다. 각각의 메시지 세그먼트 MS에서의 변경자 메시지 MM은 도 8 및 도 9와 일치하여 제공된다. 도 13에 나타나 있는 첫 번째 메시지 세그먼트는 변경 키 메시지 세그먼트 MKMS이고 변경 키 메모리(88)에 저장되어 있는 3 개의 변경 키 및 메모리(20)로부터의 체크섬(CRC)의 암호화된 형태를 포함한다. 도 13에 나타나 있는 두번째 메시지 세그먼트는 프로그램 키 메시지 세그먼트 PKMS이고 암호화된 프로그램 데이터를 복호화하기 위해 수신기에 의해 적용되는 4 개의 새로운 프로그램 키의 암호화된 형태를 포함한다.
따라서, 도 10에 나타난 바와 같이, 변경자 메시지 MM 및 프로그램 키 메시지 세그먼트 PKMS의 4 개의 프로그램 키 메시지 KM1, KM2, KM3 및 KM4이 암호화된다. 마찬가지로, 변경자 메시지 MM, 3 개의 변경 키 메시지 MK1, MK2, MK3 및 변경 키 메시지 세그먼트 MKMS의 체크섬 메시지 CRC가 암호화된다.
도 10에 나타나 있는 메시지 세그먼트 MS의 4 바이트 헤더는 MPEG PID이다. 변경자 메시지 MM은 도 9에 나타나 있는 메시지 제어 바이트를 포함한다. 이 제어 바이트는 전술된 바와 같이, 프로그램 키 메시지 섹그먼트 PKMS 또는 변경 키 메시지 세그먼트 MKMS 중 하나로 쌍으로 메시지 세그먼트 MS를 나타낸다.
도 14는 키 동기화가 결정되는 관련 메시지 쌍 전송 및 수신 타이밍을 나타낸다. MPEG 전송 스트림에서의 널 패킷일 수 있는,이벤트(event) 1의 발생하자마자, 도 14에 나타난 바와 같이 프로그램 키 메시지 세그먼트 PKMS가 전송된다. 수신기는 이 프로그램 키 메시지 세그먼트 PKMS를 수신하고, 이를 복호화하고, 다음 프로그램 키로서 프로그램 키 메시지 세그먼트 PKMS에 포함되어 있었던 프로그램 키를 저장한다. 그러나, 수신기는 아직 이들 다음 프로그램 키를 사용하여 시작하지 않는다.
송신기가 프로그램 키 메시지 세그먼트 PKMS를 송신한 후, 송신기의 암호화 인코더(8)는 3개의 변경 키와 변경자 메시지 MM를 만들고, 전술한 바와 같이 메시지 세그먼트 키 및 해시값을 사용하여 변경자 메시지 MM 및 3 개의 변경 키를 암호화한다. 이때 암호화 인코더(8)는 전술한 바와 같이 암호화된 변경자 메시지 MM 및 3 개의 변경 키를 포함하는 변경 키 메시지 세그먼트 MKMS를 어셈블(assemble)한다. 널 패킷이 검출되는 경우(이벤트 2), 송신기는 널 패킷 대신에 변경 키 메시지 세그먼트 MKMS를 송신하고, 동시에, 암호화 인코더(8)는 프로그램 데이터를 암호화하기 위해 활성 프로그램 키로서 메모리(66)에 저장되어 있는 다음 프로그램 키를 사용하며 시작한다. 따라서, 다음 프로그램 키가 활성 프로그램 키가 된다.
동시에, 수신기는 이 변경 키 메시지 세그먼트 MKMS를 수신하고 즉시 프로그램 콘텐츠를 복호화하기 위해 활성 프로그램 키로서 이전에 저장된 다음 프로그램 키를 사용하여 시작한다. 따라서, 활성 프로그램키와 다음 프로그램 키의 교환은 송신기와 수신기가 동일 프로그램 콘텐츠를 암호화하고 복호화하기 위해 동일 프로그램을 사용하도록 송신기와 수신기에서 동시에 이루어진다.
송신기가 변경 키 메시지 세그먼트 MKMS를 전송하고 프로그램 키를 교환한 후, 송신기의 암호화 인코더(8)는 새로운 프로그램 키를 생성하고, 다음 프로그램 키로서 메모리(66)에 새로운 프로그램 키를 저장한다. 암호화 인코더(8)는 새로운 프로그램 키를 암호화하고 새로운 프로그램 키를 포함하는 또 하나의 프로그램 키 메시지 세그먼트 PKMS를 어셈블하고 이 프로그램 키 메시지 세그먼트 PKMS를 송신하기 위해 기회(널 패킷과 같은 이벤트 3)를 기다린다.
송신기의 암호화 인코더(8)가 새로운 프로그램 키를 생성하고 새로운 프로그램 키를 저장하고 다음 프로그램 키 메시지 세그먼트 PKMS를 어셈블하는 동안, 수신기는 방금 수신된 변경 키 메시지 세그먼트 MKMS를 복호화하고, 이 메시지에 포함되어 있는 변경 키와 변경자 메시지 MM을 저장한다.
암호화 인코더(8)가 프로그램 키 메시지 세그먼트 PKMS 및 변경 키 메시지 세그먼트 MKMS를 송신하지 않는 세그먼트 동안, 암호화 인코더(8)는 프로그램 데이터를 암호화하기 위해 활성 프로그램 키를 사용하고 있고 수신기로 암호화된 프로그램 데이터를 송신하고 있다.
수신기가 프로그램 키 메시지 세그먼트 PKMS 및 변경 키 메시지 세그먼트 MKMS를 수신하지 않는 세그먼트 동안, 수신기는 프로그램 데이터를 복호화하기 위해 활성 프로그램 키를 사용하고 있다.
메시지 전송 및 키 사용이 널 패킷의 발생에 동기화되는 실시예에서, 널 패킷이 바람직하지 않은 높은 주파수로 발생하는 경우가 있을 수 있다. 예를 들어, 비디오에서 거의 움직임이 없는 기간 동안, 많은 널 패킷이 단일 프레임 동안 일어날 수 있다. 그러므로, 메시지 전송 및 키 전환(switching)이 기설정된 주파수보다 더 자주 일어나지 않도록 지연 기능을 부가하는 것이 바람직할 수 있다. 예를 들어, 이 지연 기능은 메시지 전송 및 키 전환이 2 또는 3 개의 ATSC 프레임 당 한번 보다 더 자주 일어나지 않도록 설정될 수 있다.
프로그램 데이터의 암호화 동안, 암호화 블록(40)은 4 개의 활성 프로그램 키 PK를 순환한다. 도 15는 순환을 나타낸다. 도 16에 나타난 바와 같이, 수신기로 전송될 필드의 각각의 프로그램 데이터 세그먼트는 프로그램 데이터 세그먼트로서 세그먼트를 식별하는 비-암호화된 4 바이트 MPEG 헤더, 프로그램 데이터의 암호화된 128 비트를 각각 포함하는 11 개의 블록, 8 바이트의 비암호화된 프로그램 데이터, 및 20 바이트의 비암호화 순방향 오류 정정 데이터를 포함한다.
도 15에 나타난 바와 같이, 4 개의 활성 프로그램 키 A, B, C 및 D는 첫 번째 프로그램 데이터 세그먼트에의 데이터의 11 블록에 다음의 순서, 즉 A, B, C, D, A, B, C, D, A, B, C로 적용된다: 따라서, 활성 프로그램 키 A는 암호화될 데이터의 11개의 블록의 첫 번째에 적용되고, 활성 프로그램 키 B는 암호화될 데이터의 11개의 블록의 두 번째에 적용되고, ..., 그리고 활성 프로그램 키 C는 암호화될 데이터의 11개의 블록의 11 번째에 적용된다.
이 동일 순환 방식 ABCDABCDABC는 필드의 다음의 연이은(next and subsequent) 프로그램 데이터 세그먼트들에 사용될 수 있다.
대안으로, 다음 프로그램 데이터 세그먼트는 순환을 계속할 수 있다. 따라서, 활성 프로그램 키 A, B, C 및 D는 제 2 프로그램 데이터 세그먼트에의 암호화될 데이터의 11 개의 블록에 다음의 순서, D, A B, C, D, A, B, C, D, A, B로 적용된다. 따라서, 활성 프로그램 키 D는 암호화될 데이터의 11 개의 블록의 첫 번째에 적용되고, 활성 프로그램 키 A는 암호화될 데이터의 11 개의 블록의 두 번째에 적용되고, ..., 그리고 활성 프로그램 키 B는 암호화될 데이터의 11 개의 블록의 11 번째에 적용된다. 이때 순환은 도 15에 의해 나타난 바와 같이 연이은 프로그램 데이터 세그먼트 동안 연속될 수 있다.
또 다른 대안으로서, 다른 순환 시퀀스가 사용될 수 있다. 도 9에 도시되어 있는 시스템 제어 바이트의 비트 12- 15가 송신기에 사용되고 있는 특정 순환을 수신기에 나타내는 데 사용될 수 있다.
출력 멀티플렉서(16)는 기회(이벤트)가 메시지 세그먼트 MS(프로그램 키 메시지 세그먼트 PKMS 또는 변경 키 메시지 세그먼트 MKMS 중 하나)를 전송하기 위해 일어날 때까지 연속적으로 암호화된 프로그램 데이터 세그먼트를 전송한다. 널 패킷의 발생은 이 메시지 세그먼트 중 하나를 송신하는 것에 대한 기회를 일으키고, 다음 널 패킷의 발생은 쌍으로 메시지 세그먼트 MS 중 다른 하나를 송신하는 것에 대한 기회를 일으킨다. 목적은 널 패킷의 발생에 좌우되는 주기적인 원리로 메시지 세그먼트 MS를 전송하기 위해 확립될 수 있다. 예를 들어, 목적은 312 세그먼트의 필드 당 한번보다 덜 자주 널 패킷의 메시지 세그먼트 MS를 송신하는 것일 수 있다.
복사 방지 수신기의 예시적인 복호화 디코더(180)가 도 17에 나타나 있다. 복호화 디코더(180)는 PID 수에 기초하여, 암호화된 프로그램 데이터를 검출하고 제 1 복호화 엔진(184)으로 전송하며 제 2 복호화된 엔진(186)으로 변경 키 메시지 세그먼트 MKMS 및 프로그램 키 메시지 세그먼트 PKMS를 검출하고 전송하는 PID 필터(182)를 포함한다. 제 1 복호화 엔진(184)은 제 1 암호화 엔진(14)에 의해 수행된 단일 랩 암호화 처리와 상보적인 단일 랩 복호화 처리를 수행한다.
변경 키 메시지 세그먼트 MKMS가 수신되는 경우, 제 2 복호화 엔진(186)은 메모리(188)의 고정 키 및 해시 값 어드레스 및 변경 키를 복구하기 위하여 이 메시지 세그먼트를 복호한다(푼다(unwrap)). 고정 키 선택기 및 메시지 세그먼트 키 생성기(190)는 메모리(188)로부터 고정 키 및 해시 값을 검색하기 위해 이들 고정 키 및 해시값 어드레스를 사용한다. 변경 키 메시지 세그먼트 MKMS를 복호화하는 경우에, 고정 키 선택기 및 메시지 세그먼트 키 생성기(190)는 변경 키 및 체크섬 메시지 CRC를 암호화 하기 위해 암호화 인코더(8)에 사용되어 있고 암호화된 변경 키와 체크섬 메시지 CRC를 복호화하기 위해 복호화 디코더(180)에 의해 요구되는 메시지 세그먼트 키들을 재생성하기 위해, 공지된 변경 키, 즉, 공지된 기설정값을 가지는 변경 키와 함께 메모리(188)로부터 검색된 해시값 및 고정 키를 사용한다. 프로그램 키 메시지 세그먼트를 복호하는 경우에, 고정 키 선택기 및 메시지 세그먼트 키 생성기(190)는 프로그램 키를 암호화하기 위해 암호화 인코더(8)에 사용되었고 암호화된 프로그램 키 메시지 KM1, KM2, KM3, KM4를 복호하기 위해 복호화 디코더(180)에 의해 요구되는 메시지 세그먼트 키들을 재발생하기 위해 복호화된 변경 키와 함께 프로그램 키 메시지 세그먼트 PKMS의 변경자 메시지에 포함되어 있는 메모리 어드레스에 기초하여 메모리(188)로부터 검색된 고정 키와 해시값을 사용한다.
프로그램 키 메시지 세그먼트 PKMS가 수신되는 경우, 제 2 복호화 엔진(186)은 고정 키 선택기 및 메시지 세그먼트 키 생성기(190)로부터 메시지 세그먼트 키들을 사용하며 메시지 세그먼트 MS에서의 프로그램 키를 복호하고 메모리(192)의 후속부에 복호화된 프로그램 키를 저장한다. 그 사이에, 제 1 복호화 엔진(184)은 수신되고 있는 필드의 프로그램 데이터 세그먼트로부터 암호화된 데이터를 복호하기 위해 메모리(192)에 저장되어 있는 활성 프로그램 키를 사용한다.
도 18에 나타난 바와 같이, 제 1 복호화 엔진(184)은 3 개의 섹션(184A, 184B, 및 184C)을 포함한다. 섹션(184A)은 디멀티플렉서(de-multiplexer)(200), 메모리(202, 204), 및 멀티플렉서(206)를 포함한다. 섹션(184B)은 메모리(208), 복호화 블록(210), 및 멀티플렉서(212)를 포함한다. 섹션(184C)은 디멀티플렉서(214), 메모리(216, 218), 및 멀티플렉서(220)를 포함한다. 섹션(184A, 184B, 및 184C)은 PID 필터(182)에 의해 제어된다.
PID 필터(182)는 디멀티플렉서(200)로 MPEG 전송 스트림에서의 모든 패킷을 전달한다. 모든 패킷은 역다중송신되고 핑퐁(ping-pong) 방법으로 동작하는 메모리(202, 204)에 저장된다. 메모리(202, 204)에서의 모든 패킷은 멀티플렉서(206)에 공급된다.
멀티플렉서(206)는 모든 패킷을 메모리(202, 204)에서 메모리(208) 및 복호화 블록(210)으로 전달한다. 이들 패킷은 프로그램 패킷(암호화될 수 있는 것 중 하나 이상), 메시지 세그먼트, 및 PID, PSIP, PMT 및 PAT와 같은 비-프로그램 패킷을 포함한다. 복호화 블록(210)은 수신하여 멀티플렉서(212)로 복호화된 패킷을 공급하는 모든 패킷을 복호화하기 위해 복호화된 프로그램 키 PK를 사용한다. PID 필터(182)로부터의 복호화 플래그에 응답하여, 멀티플렉서(212)는 선택된 프로그램 또는 암호화되려는 프로그램에 해당하는 복호화 블록(210)으로부터의 복호화된 패킷만을 선택한다. 모든 다른 패킷(복호화될 프로그램에 해당하지 않는 것들)이 메모리(208)로부터 멀티플렉서(212)에 의해 선택된다. 따라서, 멀티플렉서(212)의 출력은 메시지 세그먼트를 포함하고 널 패킷을 뺀 원래의 MPEG 전송 스트림이다. 멀티플렉서(212)는 복호화된 패킷 및 암호화되지 않은 패킷을 디멀티플렉서(214)로 전달한다.
디멀티플렉서(214)로부터의 복호화 및 비-암호화된 패킷은 핑퐁 방법으로 동작하는 메모리(216, 218)에 저장된다. 메모리(216, 218)에서의 복호된 패킷 및 비-암호화된 패킷은 널 삽입기(222)로 멀티플렉서(220)를 통해 공급된다.
널 삽입기(222)는 전송스트림에서 프로그램 키 메시지 세그먼트 PKMS 및 변경 키 메시지 세그먼트 MKMS를 제거하기 위해, 그리고 제거된 프로그램 키 메시지 세그먼트 PKMS 및 제거된 변경 키 메시지 세그먼트 MKMS 대신에 전송 스트림으로 널 패킷을 다시 삽입하기 위해 PID 필터(182)에 의해 제어된다. 널 삽입기의 출력은 복호화된 MPEG 전송 스트림이다.
제1 복호화 엔진(184)의 섹션(184A, 184C)은 적절한 타이밍, 데이터 흐름비, 및 동기화를 유지하도록 메시지 패킷에 의해 제어된다.
고정 키 선택기 및 메시지 세그먼트 키 생성기(190)는 도 19에 더욱 상세하게 나타나 있다. 도 19에 나타난 바와 같이, 프로그램 키 메시지 세그먼트 PKMS 및 변경 키 메시지 세그먼트 MKMS는 제 2 복호화 엔진(186)으로 공급된다. 각각의 이들 메시지 세그먼트는 도 10에 나타나 있는 형태를 가진다. 따라서, 도 20에 나타난 바와 같이, 수신된 메시지 세그먼트에서의 변경자 메시지 MM은 메모리(230)에 저장되어 있는 3 개의 고정 키 A', B', C' 및 3 개의 해시값 A', B', C'를 사용하여 복호된다. 메모리(230)에 저장되어 있는 3 개의 고정 키 A', B', C' 및 3 개의 해시값 A', B', C'은 메모리(102)에 저장되어 있는 3 개의 고정키 및 3 개의 해시값과 동일하다.
복호화된 변경자 메시지 MM은 수신기에, 특히, 해당 메시지 세그먼트가 프로그램 키 메시지 세그먼트 PKMS 또는 변경 키 메시지 세그먼트 MKMS 인지를 나타낸다. 해당 메시지 세그먼트가 프로그램 키 메시지 세그먼트 PKMS라면, 수신기는 프로그램 키 메시지의 복호화에 필요한 메시지 세그먼트 키를 제공하기 위해 고정 키 KA 및 KB 뿐만 아니라 복호화된 변경 키 KM을 사용하는 것을 안다. 해당 메시지 세그먼트가 변경 키 메시지 세그먼트 MKMS라면, 수신기는 변경 키 메시지 및 체크섬 메시지 CRC의 복호화에 필요한 메시지 세그먼트 키로서 고정 키 KA, KB 또는 KA 및 KB의 몇 가지 조합을 판독하기 위해 기설정된 값을 가지는 공지된 변경 키를 사용하는 것을 안다.
변경 키 메시지 세그먼트 MKMS 또는 프로그램 키 메시지 세그먼트 PKMS의 수신된 하나에서 변경자 메시지 MM을 복호하기 위해, 멀티플렉서(232)는 3 개의 고정 키 A', B', C' 및 3 개의 해시값 A', B', C'를 키 확장기(234)를 통해 메모리(230)에서 제 2 복호화 엔진(186)으로 전송한다. 예를 들어, 키 확장기(234)는 키 확장기(104)와 유사할 수 있고 고정 키 A', B', C' 만을 확장한다. 키 확장기(234)는 해시 값 A', B', C'을 확장하지 않는다.
암호화 엔진(18)에 의해 수행되는 것과 상보적인 동작을 수행하는 제 2 복호화 엔진(186)이 더욱 상세히 도 20에 도시되어 있다. 도 20에 나타난 바와 같이, 해시값 C'는 XOR(236)에 적용되고, 해시값 B'는 XOR(238)에 적용되고, 해시값 A'는 XOR(240)에 적용된다. XOR(236, 238, 240)은 그들 각각의 입력을 비트에 관련하여 처리한다. 확장된 고정 키 C'는 AES 복호화기(242)로 적용되고, 확장된 고정 키 B'는 AES 복호화기(244)로 적용되고, 확장된 고정 키 A'는 AES 복호화기(246)로 적용된다.
*암호화된 변경자 메시지 MM의 1 번째 1/4는 AES 복호화기(242)에 적용되고, 암호화된 변경자 메시지 MM의 2 번째 1/4는 AES 복호화기(246)에 적용되고, 암호화된 변경자 메시지 MM의 3 번째 1/4는 AES 복호화기(244)에 적용되고, 암호화된 변경자 메시지 MM의 4 번째 1/4는 AES 복호화기(242)에 적용된다.
AES 복호화기(242)는 확장된 고정 키 C'에 따라 암호화된 변경자 메시지 MM의 1 번째 1/4 및 4 번째 1/4를 복호하고, XOR(236)으로 복호화 결과의 절반 및 복호화된 변경자 메시지 MM의 제어 비트의 3 번째 1/3으로서 나머지 절반을 공급한다. AES 복호화기(244)는 XOR(236)의 출력 및 확장된 고정 키 B'에 따른 암호화된 변경자 메시지 MM의 3 번째 1/4를 복호하고, XOR(238)로 복호화 결과의 절반 및 복호화된 변경자 메시지 MM의 제어 비트의 2 번째 1/3으로서 나머지 절반을 공급한다. AES 복호화기(246)는 XOR(238)의 출력 및 확장된 고정 키 A'에 따른 암호화된 변경자 메시지 MM의 2 번째 1/4를 복호하고, XOR(240)로 암호화 결과의 절반 및 복호화된 변경자 메시지 MM의 제어 비트의 1 번째 1/3로서 나머지 절반을 공급한다. XOR(240)의 출력은 변경자 메시지 MM의 초기값이다. 이 초기값이 변경자 메시지 MM의 암호화 동안 사용되었던 것과 동일한 초기값이 아니라면, 이때 암호화/복호화 처리는 잘못된 메시지 복호화를 나타내는 오류를 가진다.
도 19에 나타난 바와 같이, 멀티플렉서(250)는 변경자 메시지 디코더(252)에 복호된 변경자 메시지 MM의 제어 비트를 적용한다.
변경자 메시지 MM의 복호화 후에, 멀티플렉서(232)는 메시지 세그먼트 키 메모리(254)에 저장되어 있는 3 개의 해시값 A, B, C 및 3 개의 메시지 세그먼트 키 A, B, C를 키 확장기(234)로 전달한다. 변경 키 메시지 세그먼트 MKMS가 복호화되고 있는 경우, 이들 3 개의 메시지 세그먼트 키는 기설정된 값을 가지는 변경 키로 생성된다. 키 확장기는 3 개의 메시지 세그먼트 크 A, B , C만을 확장하고, 3 개의 해시 값 A, B, C를 확장하지 않는다. 3 개의 확장된 메시지 세그먼트 키 A, B, C 및 3 개의 해시 값 A, B, C는 제 2 복호화 엔진(186)에 의해 수신된 변경 키 메시지 세그먼트 MKMS에서의 변경 키 메시지 MK1을 복호하기 위해 사용된다. 위에서 나타난 바와 같이, 각각의 3개의 변경 키 메시지 MK1, MK2, MK3 및 체크섬 메시지 CRC는 도 12에 나타난 포맷을 가지고, 각각의 메시지의 제어는 특정한 메시지가 프로그램 키 메시지, 변경 키 메시지, 또는 체크섬 메시지인지 여부를 나타내는 키 제어(98)이다.
도 20에 나타난 바와 같이, 해시값 C는 XOR(236)에 적용되고, 해시값 B는 XOR(238)에 적용되고, 해시값 A는 XOR(240)에 적용된다. 확장된 고정 키 C는 AES 복호화기(242)로 적용되고, 확장된 고정 키 B는 AES 복호화기(244)로 적용되고, 확장된 고정 키 A는 AES 복호화기(246)로 적용된다.
암호화된 변경 키 메시지 MK1의 첫번째 1/4는 AES 복호화기(242)에 적용되고, 암호화된 변경 키 메시지 MK1의 2 번째 1/4는 AES 복호화기(246)에 적용되고, 암호화된 변경 키 메시지 MK1의 3 번째 1/4는 AES 복호화기(244)에 적용되고, 암호화된 변경 키 메시지 MK1의 4 번째 1/4는 AES 복호화기(242)에 적용된다.
AES 복호화기(242)는 XOR(236)으로 복호화 결과의 절반 및 복호화된 변경 키 메시지 MK1의 2 번째 1/2로서 다른 절반을 공급한다. AES 복호화기(244)는 XOR(238)으로 복호화 결과의 절반 및 복호화된 변경 키 메시지 MK1의 1 번째 1/2로서 다른 절반을 공급한다. AES 암호화기(246)는 XOR(240)으로 암호화 결과의 절반 및 복호화된 변경 키의 제어로서 다른 절반을 공급한다. XOR(240)의 출력은 변경 키 메시지의 초기값이다. 이 초기값이 변경 키 MK1의 암호화동안 사용되었던 것과 동일한 초기값이 아니라면, 이때 암호화/복호화 처리는 교정 동작(remedial action)에 대한 필요를 나타내는 오류를 가진다.
제 2 복호화 엔진(186)은 마찬가지로 변경 키 메시지 MK2, MK3 및 체크섬 메시지 CRC를 복호한다. 멀티플렉서(250)는 도 19에 나타난 바와 같이 제어 및 체크섬을 전달하고, 변경 키 메모리(256)에의 저장장치에 대한 변경 키를 전달한다.
수신된 변경 키 메시지 세그먼트 MKMS의 복호화 후에, 고정 키 선택기 및 메시지 세그먼트 키 생성기(190)는 다음 수신된 프로그램 키 메시지 세그먼트 PKMS로부터 프로그램 키를 복호하는데 사용될 새로운 메시지 세그먼트 키를 생성하는 것을 시작할 수 있다.
변경자 메시지 디코더(252)는 도 8 및 도 9에 나타난 변경자 메시지 포맷 및 정의에 따라 어드레스를 결정하기 위해 각각의 메시지 세그먼트에서의 수신되고 복호된 변경자 메시지 MM을 해독한다. 고정 키 선택기(260)는 메모리(188)로부터, 동일한 3 개의 KA 키, 동일한 3 개의 KB 고정 키, 및 암호화 인코더(8)에서의 메시지 세그먼트 PKMS와 MKMS를 암호화하는데 사용되었던 메시지 세그먼트 키 A, B, C를 생성하기 위해 사용되었던 동일한 3 개의 해시값 A, B, C를 선택하기 위해 이들 어드레스를 사용한다. 제 1 키 메모리(262)는 선택된 3 개의 KA 키를 저장하고, 제 2 고정 키 메모리(264)는 선택된 3 개의 KB 고정 키를 저장하고, 메시지 세그먼트 키 메모리(254)는 선택된 3 개의 해시값 A, B, C를 저장한다.
메시지 세그먼트 키 생성기(266)는 도 6에 나타나 있는 메시지 세그먼트 키 생성기(90)과 같이 동일한 구성을 가질 수 있다. 따라서, 래치(921)는 고정 키 메모리(262)에 저장되어 있는 3 개의 고정 키 KA의 1 번째의 처음 32 비트를 래치하고, 래치(922)는 고정 키 메모리(264)에 저장되어 있는 3 개의 고정 키 KB의 1 번째의 처음 32 비트를 래치하고, 메시지 세그먼트 키가 프로그램 키를 복호화하기 위해 생성되고 있는 경우(그렇지 않다면 기설정된 값을 가지는 변경 키는 변경 키를 복호화하기 위해 메시지 세그먼트 키를 생성하는데 사용된다.) 래치(923)는 변경 키 메모리(256)에 저장되어 있는 3 개의 변경 키 KM의 1 번째의 처음 32 비트를 래치한다.
송신기에 선택되었던 동일 테이블은 메시지 세그먼트 키 메모리(254)에 저장되어 있는 3 개의 메시지 세그먼트 키를 제공하기 위해 수신기에서 선택된다.
1 번째 메시지 세그먼트 키의 처음 32 비트가 룩업 테이블(94)로 판독되고 메시지 세그먼트 키 메모리(254)에 저장된 후, 래치(921)는 고정 키 메모리(262)에 저장되어 있는 3 개의 고정 키 KA 중 1 번째의 2 번째 32 비트를 래치하고, 래치(922)는 고정 키 메모리(264)에 저장되어 있는 3 개의 고정 키 KB 중 1 번째의 2 번째 32 비트를 래치하고, 메시지 세그먼트 키가 프로그램 키를 복호하기 위해 생성되는 경우(그렇지 않다면, 기 설정된 값을 가지는 변경 키가 변경 키를 복호하기 위해 메시지 세그먼트 키를 생성하는데 사용되는 경우) 래치(923)는 변경 키 메모리(256)에 저장되어 있는 3 개의 변경 키 KM 중 1 번째의 2 번째 32 비트를 래치한다.
고정 키 메모리(262)에 저장되어 있는 3 개의 고정 키 KA 중 1 번째의 3 번째 및 4 번째 32 비트, 고정 키 메모리(264)에 저장되어 있는 3 개의 고정 키 KB 중 1 번째의 3 번째 및 4 번째 32 비트, 그리고 변경 키 메모리(256)에 저장되어 있는 3 개의 고정 키 KM 중 1 번째의 3 번째 및 4 번째 32 비트는 메시지 세그먼트 키가 프로그램 키를 복호하기 위해 생성되는 경우 (그렇지 않다면, 기설정된 값을 가지는 변경 키가 변경 키를 복호하기 위해 메시지 세그먼트 키를 생성하는데 사용된다.) 룩업 테이블(94)에서 1 번째 메시지 세그먼트 키의 3 번째 및 4 번째 32 비트를 판독하는데 사용된다. 이들 1 번째 메시지 세그먼트 키의 3 번째 및 4 번째 32 비트는 또한 1 번째 메시지 세그먼트 키의 모든 128 비트를 형성하기 위해 메시지 세그먼트 키 메모리(254)에 저장되어 있다. 마찬가지로 2 번째 및 3 번째 메시지 세그먼트 키는 마찬가지로 룩업 테이블(94)로 판독되고 메시지 세그먼트 키 메모리(254)에 저장된다.
다음 프로그램 키 메시지 세그먼트 PKMS가 수신되는 경우, 수신된 메시지 세그먼크 MS 내의 변경자 메시지 MM은 메모리(230)에 저장되어 있는 고정 키 A',B', C' 및 해시 값 A', B', C'를 사용하여 전과 같이 복호화된다. 이때, 멀티플렉서(232)는 3 개의 메시지 세그먼트 A, B, C 및 3 개의 해시값 A, B, C를 키 확장기(234)를 통해 메시지 세그먼트 키 메모리(254)로부터 제 2 암호화 엔진(186)으로 전달한다. 키 확장키(234)는 메시지 세그먼트 키 A, B, C 만을 확장한다. 키 확장기(234)는 해시값 A, B, C를 확장하지 않는다.
제 2 암호화 엔진(186)에서, 해시값 C는 XOR(236)에 적용되고, 해시값 B는 XOR(238)에 적용되고, 해시값 A는 XOR(240)에 적용된다. 확장된 고정 키 C는 AES 복호화기(242)로 적용되고, 확장된 고정 키 B는 AES 복호화기(244)로 적용되고, 확장된 고정 키 A는 AES 복호화기(246)로 적용된다.
암호화된 1 번째 프로그램 키 메시지 KM1의 1 번째 1/4는 AES 복호화기(242)에 적용되고, 암호화된 1 번째 프로그램 키 메시지 KM1의 2 번째 1/4는 AES 복호화기(246)에 적용되고, 암호화된 1 번째 프로그램 키 메시지 KM1의 3 번째 1/4는 AES 복호화기(244)에 적용되고, 암호화된 1 번째 프로그램 키 메시지 KM1의 4 번째 1/4는 AES 복호화기(242)에 적용된다.
AES 복호화기(242)는 확장된 고정 키 C에 따라 암호화된 1 번째 프로그램 키 메시지 KM1 메세지의 1 번째 1/4 및 4 번째 1/4를 복호하고, XOR(236)으로 복호화 결과의 절반 및 복호화된 1 번째 프로그램 키 메시지 KM1의 1 번째 프로그램 키의 2 번째 1/2로서 다른 절반을 공급한다. AES 복호화기(244)는 XOR(236)의 출력 및 확장된 고정 키 B에 따른 암호화된 1 번째 프로그램 키 메시지 KM1의 3 번째 1/4를 복호하고, XOR(238)로 복호화 결과의 절반 및 복호화된 1 번째 프로그램 키 메시지 KM1의 1 번째 프로그램 키의 1 번째 1/2으로서 다른 절반을 공급한다. AES 복호화기(246)는 XOR(238)의 출력 및 확장된 고정 키 A에 따른 암호화된 1 번째 프로그램 키 메시지 KM1의 2 번째 1/4를 복호하고, XOR(240)로 암호화 결과의 절반 및 복호화된 1 번째 프로그램 키 메시지 KM1의 제어로서 다른 절반을 공급한다. XOR(240)의 출력은 1 번째 프로그램 키 메시지 KM1의 초기값이다. 이 초기값이 1 번째 프로그램 키 메시지 KM1의 암호화 동안 사용되었던 것과 동일한 초기값이 아니라면, 이때 암호화/복호화 처리는 교정 작용에 대한 필요를 나타내는 오류를 가진다.
다른 3 개의 프로그램 키 메시지 KM2, KM3, KM4이 마찬가지로 복호된다.
도 19의 멀티플렉서(250)는 이들 4 개의 프로그램 키를 메모리(192)의 후속부로 전달하고 각각의 복호된 프로그램 키 메시지 KM1, KM2, KM3, KM4의 제어를 전달한다.
멀티플렉서(270)는 적절한 데이터가 복호될 수 있도록 도 15 및 도 16과 관련하여 전술된 순환을 사용하여, 활성 프로그램 키를 키 확장기(272)를 통해 복호화 블록(210)으로 전달한다. 키 확장기(272)는 도 4에 따라 구성될 수 있다. 키 확장기(70)의 경우에서와 같이, 키 확장기(272)는 또한 반전 키 블록을 포함한다. 이 반전 키 블록은 프로그램 복호화 동안 디스에이블되고 프로그램 키 메시지 세그먼트 PKMS 및 변경 키 메시지 세그먼트 MKMS의 복호화 동안 인에이블된다.
메모리(192)의 활성부로부터의 활성 키가 데이터를 복호화하기 위해 복호화 블록(210)에 의해 사용되는 동안, 다음 프로그램 키는 수신되어 메모리(192)의 후속부에 저장된다.
변경자 메시지 디코더(252)는 또한 수신된 복호화 변경자 메시지 MM의 전체 시스템 제어를 복호한다. 전술한 바와 같이, 변경자 메시지 MM의 시스템 제어는 도 9에 나타나 있다. 따라서, 변경자 메시지 디코더(252)는 체크섬 비트 16-31을 재계산하기 위해 수신된 메시지 세그먼트 PKMS 또는 MKMS에서의 변경자 메시지 MM의 시스템 제어의 비트 0-15에 인코더로서 동일한 CRC 코드를 적용한다. 수신기는 비트 0-15로부터의 재계산된 체크섬과 수신된 시스템 제어에서의 체크섬 비트 16-31을 비교한다. 비트 0-15로부터의 재계산된 체크섬과 수신된 체크섬 비트 16-31이 일치하지 않는다면, 수신된 메시지 세그먼트는 수신된 메시지 세그먼트의 시퀀스에에 수신되는 것으로 기대되는 다음 메시지 세그먼트로서 다뤄진다.
또한, 변경자 메시지 디코더(252)는 변경자 메시지 디코더(252)로부터 사용될 다음 활성 키를 선택하는 멀티플렉서(270)의 제어로 확장하는 라인에 의해 나타난 바와 같이 암호화된 프로그램 패킷을 복호하기 위해 복호화 블록(210)에 의해 사용되어야만 하는 프로그램 키 순환을 결정하기 위해 시스템 제어의 복호된 비트 12-15를 사용한다.
본 발명의 소정의 변경이 전술되어 있다. 본 발명의 다른 변경은 당업자에 의해 발생할 것이다. 예를 들어, 전술한 바와 같은 메모리는 ROM, RAM, 비휘발성 RAM, 및/또는 임의의 다른 적합한 메모리 장치일 수 있다.
또한, 전술한 바와 같이, 96 x 32 룩업 테이블(94)은 메시지 세그먼트 키를 생성하는데 사용될 수 있다. 따라서, 96 어드레스 비트는 메시지 세그먼트 키의 32 비트를 판독하는 데 사용된다. 대신에, 다른 룩업 테이블 및 어드레싱 방식은 메시지 세그먼트 키를 생성하는데 사용될 수 있다. 예를 들어, 384 x 128 룩업 테이블은 메시지 세그먼트 키를 생성하는데 사용될 수 있다. 따라서, 128 KM 비트, 128 KA비트, 및 128 KB 비트를 포함하는 384 어드레스 비트는 128 비트 메시지 세그먼트 키를 판독하는데 사용된다. 어느 룩업 테이블 및 어드레싱 방식이 송신기에 사용되는 지, 동일한 룩업 테이블 및 어드레싱 방식이 수신기에 사용되어야 한다.
따라서, 본 발명의 설명은 예시적인 것으로서만 구성되어 있으며 본 발명을 수행하는 데 있어 최상의 모드를 당업자에게 제공하기 위한 목적을 가진다. 상세한 설명은 본 발명의 사상에서 벗어남이 없이 실질적으로 변경될 수 있고, 첨부된 청구항의 범위 내에 있는 모든 변경에 대한 독점적인 사용은 보장된다.
8: 암호화 인코더
10: PID 필터
12: 동적 프로그램 키 및 변경 키 생성기
14: 제 1 암호화 엔진
16: 출력 멀티플렉서
18: 제 2 암호화 엔진
20: 메모리
22: 메시지 세그먼트 키 생성기 및 제어

Claims (21)

  1. 연속하는 제 1, 제 2, 제 3 및 제 4 암호화된 부분을 가지는 암호화된 메시지를 연속하는 제 1, 제 2, 제 3 및 제 4 복호화된 데이터 부분(data portion)를 가지는 복호화된 데이터로 복호화하기 위한 삼중 랩 복호화 방법은,
    송신기로부터, MPEG 전송 스트림에서의 널 패킷 대신에 암호화된 메시지를 수신하는 단계;
    제 1 중간(intermediate) 복호화된 데이터 및 제 4 복호화된 데이터 부분을 생성하기 위해 제 1 키를 따라 제 1 및 제 4 암호화된 부분을 복호화하는 단계;
    제 1 연산자(operator) 출력을 생성하기 위해 제 2 키에 따라 제 1 연산자에 의해 제 1 중간 복호화된 데이터를 처리하는 단계;
    제 2 중간 복호화된 데이터 및 제 3 복호화된 데이터 부분을 생성하기 위해 제 3 키에 따라 제 1 연산자 출력 및 제 3 암호화된 부분을 복호화하는 단계;
    제 2 연산자 출력을 생성하기 위해 제 4 키에 따라 제 2 연산자에 의해 제 2 중간 복호화된 데이터를 처리하는 단계;
    제 삼중간 복호화된 데이터 및 제 2 복호화된 데이터 부분을 생성하기 위해 제 5 키에 따라 제 2 연산자 출력 및 제 2 암호화된 부분을 복호화하는 단계; 및
    제 1 복호화된 데이터 부분을 생성하기 위해 제 6 키에 따라 제 3 연산자에 의해 제 삼중간 복호화된 데이터를 처리하는 단계를 포함하는 삼중 랩 복호화 방법.
  2. 제 1 항에 있어서,
    상기 제 1 연산자에 의해 제 1 중간 복호화된 데이터를 처리하는 단계는 제 1 로직 게이트에 의해 제 1 중간 복호화된 데이터를 처리하는 단계를 포함하고, 상기 제 2 연산자에 의해 제 2 중간 복호화된 데이터를 처리하는 단계는 제 2 로직 게이트에 의해 제 2 중간 복호화된 데이터를 처리하는 단계를 포함하고, 상기 제 3 연산자에 의해 제 삼중간 복호화된 데이터를 처리하는 단계는 제 3 로직 게이트에 의해 제 삼중간 복호화된 데이터를 처리하는 단계를 포함하는 삼중 랩 복호화 방법.
  3. 제 2 항에 있어서,
    상기 제 1 로직 게이트에 의해 제 1 중간 복호화된 데이터를 처리하는 단계는 제 1 XOR 게이트에 의해 제 1 중간 복호화된 데이터를 처리하는 단계를 포함하고, 상기 제 2 로직 게이트에 의해 제 2 중간 복호화된 데이터를 처리하는 단계는 제 2 XOR 게이트에 의해 제 2 중간 복호화된 데이터를 처리하는 단계를 포함하고, 상기 제 3 로직 게이트에 의해 제 삼중간 복호화된 데이터를 처리하는 단계는 제 3 XOR 게이트에 의해 제 삼중간 복호화된 데이터를 처리하는 단계를 포함하는 삼중 랩 복호화 방법.
  4. 제 1 항에 있어서,
    상기 제 1 복호화된 데이터 부분은 초기값을 포함하는 삼중 랩 복호화 방법.
  5. 제 4 항에 있어서,
    상기 방법은 상기 초기값에 기초한 복호화 오류를 검출하는 단계를 더 포함하는 삼중 랩 복호화 방법.
  6. 제 4 항에 있어서,
    상기 제 2, 제 3 및 제 4 복호화된 데이터 부분은 제어 정보를 포함하는 삼중 랩 복호화 방법.
  7. 제 4 항에 있어서,
    상기 제 2 복호화된 데이터 부분은 제어 정보를 포함하고, 상기 제 3 및 제 4 복호화된 데이터 부분은 프로그램 키를 포함하고, 상기 방법은,
    암호화된 프로그램 데이터를 수신하는 단계; 및
    프로그램 키에 따라 암호화된 프로그램 데이터를 복호화하는 단계를 더 포함하는 삼중 랩 복호화 방법.
  8. 제 4 항에 있어서,
    상기 제 2 복호화된 데이터 부분은 제어 정보를 포함하고, 제 3 및 제 4 입력 데이터 부분은 프로그램 데이터를 복호화하는데 사용되는 프로그램 키를 복호화하는데 사용되는 변경 키를 포함하는 삼중 랩 복호화 방법.
  9. 제 1 항에 있어서,
    상기 제 2, 제 4 및 제 6 키는 상기 제 1, 제 3 및 제 5 키보다 짧은 삼중 랩 복호화 방법.
  10. 제 1 항에 있어서,
    상기 제 2, 제 4 및 제 6 키는 상기 제 1, 제 3 및 제 5 키의 길이의 절반인 길이를 가지는 삼중 랩 복호화 방법.
  11. 제 1 항에 있어서,
    상기 제 1 연산자 출력을 생성하기 위해 제 2 키에 따라 제 1 연산자에 의해 제 1 중간 복호화된 데이터를 처리하는 단계는 제 2 키를 제 1 중간 복호화된 데이터에 곱하는(multiply) 단계를 포함하고, 상기 제 2 연산자 출력을 생성하기 위해 제 4 키에 따라 제 2 연산자에 의해 제 2 중간 복호화된 데이터를 처리하는 단계는 제 4 키를 제 2 중간 복호화된 데이터에 곱하는 단계를 포함하고, 상기 제 1 복호화된 데이터 부분을 생성하기 위해 제 6 키에 따라 제 3 연산자에 의해 제 삼중간 복호화된 데이터를 처리하는 단계는 제 6 키를 제 삼중간 복호화된 데이터에 곱하는 단계를 포함하는 삼중 랩 복호화 방법.
  12. 제 1 항에 있어서,
    상기 암호화된 메시지 전에 프로그램 키를 수신하는 단계;
    상기 송신기로부터, MPEG 전송 스트림에서의 암호화된 데이터를 수신하는 단계; 및
    상기 수신된 암호화 메시지에 응답하여, 수신된 암호화 데이터를 복호화하기 위해 프로그램 키의 사용을 동기화하는 단계를 더 포함하는 삼중 랩 복호화 방법.
  13. 제 12 항에 있어서,
    상기 널 패킷 대신에 암호화된 메시지를 수신하는 단계는 현재 널 패킷 대신에 현재 암호화된 메시지를 수신하는 단계를 포함하고, 상기 프로그램 키를 수신하는 단계는 MPEG 전송 스트림에서의 이전 널 패킷 대신에 프로그램 키 신호를 수신하는 단계를 포함하고, 상기 이전 널 패킷은 현재 널 패킷 이전에 발생하였고, 상기 프로그램 키 신호는 수신된 프로그램 키를 포함하는 삼중 랩 복호화 방법.
  14. 제 13 항에 있어서,
    상기 송신기로부터 수신된 프로그램 키는 암호화되고, 상기 수신된 암호화 데이터를 복호화하기 위해 프로그램 키의 사용을 동기화하는 단계는,
    상기 암호화된 프로그램 키를 복호화하는 단계; 및
    상기 복호화된 프로그램 키에 따라 수신된 암호화 데이터를 복호화하는 단계를 포함하는 삼중 랩 복호화 방법.
  15. 제 14 항에 있어서,
    상기 암호화된 프로그램 키를 복호화하는 단계는 변경 키에 따라 암호화된 프로그램 키를 복호화하는 단계를 포함하고, 상기 방법은 이전 널 패킷의 이전에 있는 널 패킷 대신에 변경 키 신호를 수신하는 단계를 더 포함하고, 상기 변경 키 동기화 신호는 변경 키를 포함하는 삼중 랩 복호화 방법,
  16. 제 12 항에 있어서,
    상기 수신된 암호화 메시지는 수신된 암호화 데이터를 복호화하기 위한 프로그램 키의 사용이 수신된 암호화 메시지에 의해 동기화된 후에 복호화되는 삼중 랩 복호화 방법.
  17. 제 1 항에 있어서,
    암호화된 프로그램 키를 수신하는 단계;
    제 1, 제 2, 제 3 및 제 4 복호화된 데이터 부분 중 하나 이상의 데이터 부분에 따라 암호화된 프로그램 키를 복호화하는 단계; 및
    상기 복호화된 프로그램 키에 따라 수신된 암호화 데이터를 복호화하는 단계를 더 포함하는 삼중 랩 복호화 방법.
  18. 제 17 항에 있어서,
    상기 암호화된 메시지는 MPEG 전송 스트림에서의 제 1 널 패킷 대신에 수신된 제 1 암호화된 메시지를 포함하고, 상기 암호화된 프로그램 키를 수신하는 단계는 제 1 널 패킷에 연이은 제 2 널 패킷 대신에 수신된 제 2 암호화된 메시지에서의 암호화된 프로그램 키를 수신하는 단계를 포함하고, 상기 암호화된 프로그램 키를 복호화하는 단계는 변경 키에 따라 암호화된 프로그램 키를 복호화하는 단계를 포함하고, 상기 변경 키는 제 1 암호화된 메시지에 포함되어 있는 삼중 랩 복호화 방법.
  19. 제 1 항에 있어서,
    복수의 프로그램 키를 수신하는 단계;
    패턴에 따라 상기 프로그램 키를 순환하는 단계; 및
    순환된 프로그램 키에 기초한 수신된 데이터를 복호화하는 단계를 더 포함하는 삼중 랩 복호화 방법.
  20. 제 19 항에 있어서,
    송신기로부터 패턴의 식별자를 수신하는 단계를 더 포함하는 삼중 랩 복호화 방법.
  21. 제 1 항에 있어서,
    적어도 하나의 암호화된 프로그램 및, 상기 암호화된 프로그램에 관련된 비-암호화된 PSI 데이터를 수신하는 단계;
    상기 비-암호화된 데이터에 따라 상기 암호화된 프로그램의 위치를 설정하는 단계; 및
    프로그램 키에 따라 위치설정된 암호화된 프로그램을 복호화하는 단계를 더 포함하는 삼중 랩 복호화 방법.
KR1020127028275A 2005-05-25 2006-05-18 암호화 시스템을 위한 삼중 랩 방법 KR101248218B1 (ko)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US11/137,272 US8189786B2 (en) 2005-05-25 2005-05-25 Encryption system
US11/137,272 2005-05-25
US11/342,479 2006-01-30
US11/342,460 US7936870B2 (en) 2005-05-25 2006-01-30 Rotation of keys during encryption/decryption
US11/342,479 US8144868B2 (en) 2005-05-25 2006-01-30 Encryption/decryption of program data but not PSI data
US11/343,060 2006-01-30
US11/343,060 US7929704B2 (en) 2005-05-25 2006-01-30 Modified triple wrap encryption/decryption system
US11/342,460 2006-01-30
US11/342,472 US8054974B2 (en) 2005-05-25 2006-01-31 Opportunistic use of null packets during encryption/decryption
US11/342,472 2006-01-31
PCT/US2006/019298 WO2006127405A2 (en) 2005-05-25 2006-05-18 Encryption/decryption of program data but not psi data

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020077028821A Division KR101260387B1 (ko) 2005-05-25 2006-05-18 Psi 데이터를 제외한 프로그램 데이터의 복호화

Publications (2)

Publication Number Publication Date
KR20120135430A KR20120135430A (ko) 2012-12-13
KR101248218B1 true KR101248218B1 (ko) 2013-04-03

Family

ID=38368497

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127028275A KR101248218B1 (ko) 2005-05-25 2006-05-18 암호화 시스템을 위한 삼중 랩 방법

Country Status (5)

Country Link
US (1) US8144868B2 (ko)
KR (1) KR101248218B1 (ko)
CA (6) CA2876882C (ko)
ES (1) ES2398347T3 (ko)
HK (1) HK1112699A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8693235B2 (en) 2011-12-06 2014-04-08 Taiwan Semiconductor Manufacturing Company, Ltd. Methods and apparatus for finFET SRAM arrays in integrated circuits
US8582352B2 (en) * 2011-12-06 2013-11-12 Taiwan Semiconductor Manufacturing Company, Ltd. Methods and apparatus for FinFET SRAM cells
US9003180B2 (en) * 2013-03-27 2015-04-07 Verizon Patent And Licensing Inc. Data encryption and decryption
US10057218B2 (en) * 2014-07-28 2018-08-21 The Boeing Company Network address-based encryption
US10608815B2 (en) * 2014-07-28 2020-03-31 The Boeing Company Content encryption and decryption using a custom key

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1187483A2 (en) 2000-09-07 2002-03-13 Eastman Kodak Company An encryption apparatus and method for synchronizing multiple encryption keys with a data stream
US20040268117A1 (en) 2003-06-25 2004-12-30 Wegener Communications, Inc. Rapid decryption of data by key synchronization and indexing

Family Cites Families (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1864840A (en) * 1928-11-26 1932-06-28 Lehner Louis Adjustable stock support bracket
US5253294A (en) * 1983-02-22 1993-10-12 At&T Bell Laboratories Secure transmission system
US4691610A (en) * 1986-06-13 1987-09-08 William H. Howard Guitar stand with fold-away, substantially concealable legs
US4874025A (en) * 1988-05-16 1989-10-17 Cleveland Gary D Miter saw utility stand
US4860807A (en) * 1988-10-13 1989-08-29 Ted Vacchiano Portable workbench and power saw stand
US4974651A (en) * 1989-02-27 1990-12-04 Carmon Jimmy W Portable workbench
US5029207A (en) * 1990-02-01 1991-07-02 Scientific-Atlanta, Inc. External security module for a television signal decoder
US5222137A (en) 1991-04-03 1993-06-22 Motorola, Inc. Dynamic encryption key selection for encrypted radio transmissions
CA2082760A1 (en) * 1992-02-24 1993-08-25 Douglas G. Break Portable saw table
US5193598A (en) * 1992-06-23 1993-03-16 Estrem Jim J Portable support stand attachable to a sawhorse
US5320150A (en) * 1992-12-22 1994-06-14 Ryobi America Corp. Collapsible stand
US5420866A (en) * 1994-03-29 1995-05-30 Scientific-Atlanta, Inc. Methods for providing conditional access information to decoders in a packet-based multiplexed communications system
JPH07295800A (ja) 1994-04-22 1995-11-10 Advance Co Ltd ソフトウエアプロテクト方式
US20040136532A1 (en) * 1995-04-03 2004-07-15 Pinder Howard G. Partial dual-encrypted stream utilizing program map tables
US8548166B2 (en) * 1995-04-03 2013-10-01 Anthony J. Wasilewski Method for partially encrypting program data
WO1996042155A1 (en) * 1995-06-08 1996-12-27 Motorola Inc. Method of encrypting data packets and detecting decryption errors
US5526856A (en) * 1995-06-27 1996-06-18 Pedri; Attilio Device for supporting workpiece for a portable power tool
US5592981A (en) * 1995-11-03 1997-01-14 Tracrac, Inc. Portable work bench having sliding connections for releasably and adjustably attaching accessories thereto
US5774549A (en) * 1995-12-04 1998-06-30 Sun Microsystems, Inc. Method and apparatus that processes a video signal to generate a random number generator seed
EP0786881B1 (en) 1996-01-29 2003-03-05 International Business Machines Corporation Method and system for synchronisation of encryption/decryption keys in a data communications network using marker packets
US5844478A (en) * 1996-05-31 1998-12-01 Thomson Consumer Electronics, Inc. Program specific information formation for digital data processing
US5822430A (en) * 1996-11-20 1998-10-13 Technical Communications Corporation System for encoding encryption/decryption information into IFF challenges
US6016348A (en) * 1996-11-27 2000-01-18 Thomson Consumer Electronics, Inc. Decoding system and data format for processing and storing encrypted broadcast, cable or satellite video data
US6970564B1 (en) * 1998-07-13 2005-11-29 Sony Corporation Data multiplexing device, program distribution system, program transmission system, pay broadcast system, program transmission method, conditional access system, and data reception device
US5836365A (en) * 1997-06-19 1998-11-17 Tracrac, Inc. Portable work bench having multiple accessories
JP3657396B2 (ja) * 1997-07-07 2005-06-08 株式会社日立製作所 鍵管理システム、鍵管理装置、情報暗号化装置、情報復号化装置、およびプログラムを記憶した記憶媒体
US5988243A (en) * 1997-07-24 1999-11-23 Black & Decker Inc. Portable work bench
US6123173A (en) * 1997-10-27 2000-09-26 Patros; George Extendable sawhorse top rail
US6215876B1 (en) * 1997-12-31 2001-04-10 Transcrypt International, Inc. Apparatus for and method of detecting initialization vector errors and maintaining cryptographic synchronization without substantial increase in overhead
US7035278B2 (en) * 1998-07-31 2006-04-25 Sedna Patent Services, Llc Method and apparatus for forming and utilizing a slotted MPEG transport stream
US6697488B1 (en) * 1998-08-26 2004-02-24 International Business Machines Corporation Practical non-malleable public-key cryptosystem
US6477252B1 (en) * 1999-08-29 2002-11-05 Intel Corporation Digital video content transmission ciphering and deciphering method and apparatus
US7151832B1 (en) * 1999-11-18 2006-12-19 International Business Machines Corporation Dynamic encryption and decryption of a stream of data
US6771657B1 (en) * 1999-12-09 2004-08-03 General Instrument Corporation Non real-time delivery of MPEG-2 programs via an MPEG-2 transport stream
US7213005B2 (en) * 1999-12-09 2007-05-01 International Business Machines Corporation Digital content distribution using web broadcasting services
US6834110B1 (en) * 1999-12-09 2004-12-21 International Business Machines Corporation Multi-tier digital TV programming for content distribution
US6179024B1 (en) * 1999-12-27 2001-01-30 Mai Yang Work piece adjustable support
US6650869B2 (en) * 2000-04-14 2003-11-18 Hughes Electronics Corporation System and method for managing return channel bandwidth in a two-way satellite system
US7463582B2 (en) * 2000-04-14 2008-12-09 Hughes Network Systems, Llc System and method for scaling a two-way satellite system
US7203311B1 (en) * 2000-07-21 2007-04-10 The Directv Group, Inc. Super encrypted storage and retrieval of media programs in a hard-paired receiver and storage device
FR2812504B1 (fr) * 2000-07-31 2003-01-24 At Sky Systeme de cryptage/decryptage "a la volee" pour la diffusion de donnees
GB0026121D0 (en) * 2000-10-25 2000-12-13 Lsi Logic Europ Ltd Apparatus and method for detecting a predetermined pattern of bits in a bitstream
US7254232B2 (en) * 2001-02-14 2007-08-07 Copytele, Inc. Method and system for selecting encryption keys from a plurality of encryption keys
US7155011B2 (en) * 2001-03-13 2006-12-26 Victor Company Of Japan, Limited Encryption method, decryption method, and recording and reproducing apparatus
US7151831B2 (en) * 2001-06-06 2006-12-19 Sony Corporation Partial encryption and PID mapping
US7747853B2 (en) * 2001-06-06 2010-06-29 Sony Corporation IP delivery of secure digital content
US7065213B2 (en) * 2001-06-29 2006-06-20 Scientific-Atlanta, Inc. In a subscriber network receiving digital packets and transmitting digital packets below a predetermined maximum bit rate
US6745804B2 (en) * 2001-07-11 2004-06-08 Black & Decker Inc. Portable work bench
US6575213B1 (en) * 2001-07-13 2003-06-10 Rubbermaid Incorporated Multi-functional work support
US20030024604A1 (en) * 2001-08-02 2003-02-06 Derecktor Thomas E. Portable work bench with an extension assembly having a workpiece support assembly and work stop assembly thereon
US7463737B2 (en) * 2001-08-15 2008-12-09 Digeo, Inc. System and method for conditional access key encryption
US20030058810A1 (en) * 2001-09-26 2003-03-27 Mark Petronic Hybrid satellite system for providing one-way and two-way communication services
US6925180B2 (en) * 2001-09-27 2005-08-02 Sony Corporation PC card recorder
JP3841337B2 (ja) * 2001-10-03 2006-11-01 日本放送協会 コンテンツ送信装置、コンテンツ受信装置およびコンテンツ送信プログラム、コンテンツ受信プログラム
EP1320006A1 (en) * 2001-12-12 2003-06-18 Canal+ Technologies Société Anonyme Processing data
US7233669B2 (en) * 2002-01-02 2007-06-19 Sony Corporation Selective encryption to enable multiple decryption keys
US7376159B1 (en) * 2002-01-03 2008-05-20 The Directv Group, Inc. Exploitation of null packets in packetized digital television systems
CA2474087C (en) * 2002-01-30 2009-11-10 Wolfcraft Gmbh Folding cross-cut saw stand
US7570766B2 (en) * 2002-03-01 2009-08-04 Intel Corporation Transparently embedding non-compliant data in a data stream
JP3965126B2 (ja) * 2002-03-20 2007-08-29 松下電器産業株式会社 コンテンツを再生する再生装置
US7356147B2 (en) * 2002-04-18 2008-04-08 International Business Machines Corporation Method, system and program product for attaching a title key to encrypted content for synchronized transmission to a recipient
KR100482287B1 (ko) * 2002-10-26 2005-04-14 한국전자통신연구원 디지털 데이터 방송을 위한 동기화 스트림 데이터 삽입장치 및 그 방법
US7092524B1 (en) * 2002-11-15 2006-08-15 The United States Of America As Represented By The National Security Agency Device for and method of cryptographically wrapping information
US20040124036A1 (en) * 2002-12-31 2004-07-01 Carl Ulshafter Portable work stand
KR100813954B1 (ko) * 2003-01-16 2008-03-14 삼성전자주식회사 암호화 장치 및 암호화 방법
US7062048B2 (en) * 2003-01-27 2006-06-13 Wegener Communications, Inc. Apparatus and method for single encryption with multiple authorization of distributed content data
US20040181811A1 (en) * 2003-03-13 2004-09-16 Rakib Selim Shlomo Thin DOCSIS in-band management for interactive HFC service delivery
US7292692B2 (en) * 2003-03-25 2007-11-06 Sony Corporation Content scrambling with minimal impact on legacy devices
US7210510B2 (en) * 2003-07-10 2007-05-01 Tracrac, Inc. Work bench
US7366302B2 (en) * 2003-08-25 2008-04-29 Sony Corporation Apparatus and method for an iterative cryptographic block
US20050097597A1 (en) * 2003-10-31 2005-05-05 Pedlow Leo M.Jr. Hybrid storage of video on demand content
US8352726B2 (en) * 2003-11-07 2013-01-08 Netapp, Inc. Data storage and/or retrieval
KR100636150B1 (ko) * 2004-07-01 2006-10-19 삼성전자주식회사 암호화 모듈을 포함하는 멀티미디어 장치
US20060031873A1 (en) * 2004-08-09 2006-02-09 Comcast Cable Holdings, Llc System and method for reduced hierarchy key management
US7409558B2 (en) * 2004-09-02 2008-08-05 International Business Machines Corporation Low-latency data decryption interface
US7496753B2 (en) * 2004-09-02 2009-02-24 International Business Machines Corporation Data encryption interface for reducing encrypt latency impact on standard traffic
US7555123B2 (en) * 2005-04-29 2009-06-30 Scientific-Atlanta, Inc. Processing an MPEG elementary stream in a conditional access overlay environment
US20070258586A1 (en) * 2006-04-28 2007-11-08 Chien-Chung Huang Personal video recorder having dynamic security functions and method thereof
US8046839B2 (en) * 2007-04-13 2011-10-25 Qualcomm Incorporated Mobile unit parental control

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1187483A2 (en) 2000-09-07 2002-03-13 Eastman Kodak Company An encryption apparatus and method for synchronizing multiple encryption keys with a data stream
US20040268117A1 (en) 2003-06-25 2004-12-30 Wegener Communications, Inc. Rapid decryption of data by key synchronization and indexing

Also Published As

Publication number Publication date
CA2882912C (en) 2016-11-29
CA2868652C (en) 2016-11-29
CA2876882A1 (en) 2006-11-30
US20070189529A1 (en) 2007-08-16
CA2873159A1 (en) 2006-11-30
CA2856945A1 (en) 2006-11-30
KR20120135430A (ko) 2012-12-13
CA2856945C (en) 2015-09-15
HK1112699A1 (en) 2008-09-12
CA2873159C (en) 2017-06-20
CA2862725C (en) 2016-10-18
CA2882912A1 (en) 2006-11-30
CA2862725A1 (en) 2006-11-30
US8144868B2 (en) 2012-03-27
CA2868652A1 (en) 2006-11-30
ES2398347T3 (es) 2013-03-15
CA2876882C (en) 2017-01-03

Similar Documents

Publication Publication Date Title
US8189786B2 (en) Encryption system
JP3655921B2 (ja) 伝送地点において複数のサービスを一意的に暗号化するための方法及び装置
KR101248218B1 (ko) 암호화 시스템을 위한 삼중 랩 방법
KR101260387B1 (ko) Psi 데이터를 제외한 프로그램 데이터의 복호화
JP2009171299A (ja) Tsパケット暗号化装置とその方法

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee