KR101560131B1 - 데이터를 보호할 때 적용되는 프로그램 가능한 프로세싱 단계들을 정의하기위한 시스템 및 방법 - Google Patents

데이터를 보호할 때 적용되는 프로그램 가능한 프로세싱 단계들을 정의하기위한 시스템 및 방법 Download PDF

Info

Publication number
KR101560131B1
KR101560131B1 KR1020097026293A KR20097026293A KR101560131B1 KR 101560131 B1 KR101560131 B1 KR 101560131B1 KR 1020097026293 A KR1020097026293 A KR 1020097026293A KR 20097026293 A KR20097026293 A KR 20097026293A KR 101560131 B1 KR101560131 B1 KR 101560131B1
Authority
KR
South Korea
Prior art keywords
data
drm
client
sequencer
functions
Prior art date
Application number
KR1020097026293A
Other languages
English (en)
Other versions
KR20100017844A (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 KR20100017844A publication Critical patent/KR20100017844A/ko
Application granted granted Critical
Publication of KR101560131B1 publication Critical patent/KR101560131B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • 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
    • 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
    • H04L9/088Usage controlling of secret information, e.g. techniques for restricting cryptographic keys to pre-authorized uses, different access levels, validity of crypto-period, different key- or password length, or different strong and weak cryptographic algorithms
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • H04L9/16Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms the keys or algorithms being changed during operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/60Digital content management, e.g. content distribution
    • H04L2209/603Digital right managament [DRM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Computer And Data Communications (AREA)

Abstract

클라이언트와 서버 사이에 전송되는 데이터를 보호하기 위한 시스템들 및 방법들은, 상기 데이터를 보호할 때 상기 서버에 의하여 적용되는 프로그램 가능한 프로세싱 단계들을 정의하는 능력을 포함하고, 상기 데이터의 보호를 해제할 때에는 상기 동일한 단계들이 상기 클라이언트에 의하여 적용된다.
상기 프로그램 가능한 프로세싱 단계들은 각각의 클라이언트에 대하여 유일하게 정의되고, 상기 프로그램 가능한 프로세싱 단계들은 상기 프로세싱 단계들을 정의하는 시퀀싱 데이터를 사용하는 다수의 함수들로부터 선택된다.
상기 프로그램 가능한 프로세싱 단계들은 각각의 클라이언트가 서로 다른 방식으로 암호화된 데이터를 처리할 수 있게 해주고, 상기 프로그램 가능한 프로세싱 단계들은 디지털 저작권 관리(DRM) 시퀀싱 키라고 불리는 것에 의하여 정의되며, 상기 시스템 및 방법은 키-에이블(key-able) DRM을 도입한다. 이에 의하여, 각각의 DRM 메시지는 유일(또는 의사적-유일)의 방법으로 처리될 수 있다.
DRM, 암호화, 시퀀싱 데이터, 시퀀싱 키

Description

데이터를 보호할 때 적용되는 프로그램 가능한 프로세싱 단계들을 정의하기위한 시스템 및 방법{System and method for defining programmable processing steps applied when protecting the data}
본 발명은 데이터 보안에 관한 것으로, 디바이스들 간에 전송되는 데이터를 암호화하고 복호화하기 위한 시스템들 및 방법들에 관한 것이다.
디지털 프라이버시 및 컴퓨터 해킹은 일반적인 문제이고, 특히 디지털 컨텐츠는 종종 인터넷을 통하여 공공이 이용 가능하기 때문에 더욱 그러하다. 디지털 프라이버시는 컨텐츠 생성 사이트들, 컨텐츠 준비 사이트들 그리고 컨텐츠 배포 네트워크들에서 발생된다.
디지털 컨텐츠의 프라이버시 또는 절도는 디지털 다운로드 서비스들 및 케이블 텔레비전 회사들과 같은 컨텐츠 배포 시스템들에 대하여 특히 문제가 된다. 암호화 기술, 워터마킹 등을 포함하는 보안 디지털 컨텐츠 파일들에 적용될 수 있는 보안 기술들이 알려져 있다. 이러한 실상에도 불구하고, 해킹, 절도 등의 결과로서 디지털 프라이버시의 문제는 여전히 발생한다.
따라서, 상기 설명한 바와 같이 종래의 시스템들에서 발견되는 이러한 중요한 문제들을 감소시키거나 극복하기 위한 시스템 및 방법이 필요하다.
개시된 몇몇 실시예들은 클라이언트와 서버 사이에 전송되는 데이터를 보호하기 위한 시스템들 및 방법들을 제공하는데, 이것들은 상기 데이터를 보호할 때 상기 서버에 의하여 적용되는 프로그램 가능한 프로세싱 단계들을 정의하는 능력을 포함한다. 그리고, 상기 데이터의 보호를 해제할 때에는 상기 동일한 단계들이 상기 클라이언트에 의하여 적용된다. 상기 프로그램 가능한 프로세싱 단계들은 각각의 클라이언트에 대하여 유일하게 정의되고, 상기 프로그램 가능한 프로세싱 단계들은 상기 프로세싱 단계들을 정의하는 시퀀싱 데이터를 사용하는 다수의 함수들로부터 선택된다. 상기 프로그램 가능한 프로세싱 단계들은 각각의 클라이언트가 서로 다른 방식으로 암호화된 데이터를 처리할 수 있게 해주고, 상기 프로그램 가능한 프로세싱 단계들은 디지털 저작권 관리(DRM) 시퀀싱 키라고 불리는 것에 의하여 정의되며, 상기 시스템 및 방법은 키-에이블(key-able) DRM을 도입한다. 이에 의하여, 각각의 DRM 메시지는 유일(또는 의사적-유일(pseudo-unique))한 방법으로 처리될 수 있다. DRM 시퀀스 키는 프로세싱 단계들의 상기 시퀀스와, 여기서 설명되는 상기 DRM에 의하여 보호되는 입력 데이터 상에서 수행되는 키 데이터를 정의하기 위하여 사용된다. DRM 시퀀스 키 및 DRM 시퀀스 데이터는 본 특허출원에서 상호 교환 가능하게 사용된다.
상기 본 발명의 다른 특징들 및 장점들은 뒤따르는 상세한 설명 및 첨부된 도면들을 검토한 후에, 당업자에게 보다 명확하게 될 것이다.
도 1의 일 실시예에 따른 시스템의 블록도이다.
도 2는 도 1의 상기 서버(10)의 기능적 블록도이다.
도 3은 클라이언트 디바이스 상에서, 상기 클라이언트 라이브러리 구조의 기능적 블록도이다.
도 4는 프로세싱 프리미티브들(processing primitives)의 표현이다.
도 5는 상기 DRM 프로세스에 의하여 데이터를 보호하는 데에 실행되는 프로세싱 단계들을 보여준다.
도 6은 클라이언트에게 보내지기 전에, 상기 DRM 시퀀스 키를 암호화하기 위한 프로세스의 흐름도이다.
도 7A, 7B 및 7C는 세 개의 다른 클라이언트들에 의하여 상기 입력 데이터에 적용되는 함수들의 상기 시퀀스를 보여주는 표현들이다.
도 8은 도 7로부터 상기 프로세싱 플로우(processing flow)를 암호화하는 프로세스의 흐름도이다.
도 9는 도 8에 보여지는 상기 프로세스를 역으로 하는 프로세스의 흐름도이다.
도 10은 상기 마스터 컨텐츠 암호화 키를 보호하기 위한 프로세스의 표현이다.
도 11은 클라이언트 특화된 가상 머신의 간략화된 블록도 또는 특정 클라이언트에 대하여 유일하게 암호화되는 또는 시퀀스 데이터이다.
도 12는 세 개의 함수들의 분해에 대한 그래픽적 표현이다.
당업자라면 이러한 설명을 읽은 후에는, 상기 발명을 다양한 대안적인 실시예들 및 대안적인 응용들로 구현할 수 있는 방법은 명확하게 이해될 것이다. 그러나, 본 발명의 다양한 실시예들이 여기서 설명됨에도 불구하고, 이러한 실시예들은 예제로서만 제시된 것이고 한정하는 의도가 아님을 이해하여야 할 것이다. 이와 같이, 다양한 대안적인 실시예들의 이러한 상세한 설명은 상기 본 발명의 범주 또는 넓이를 제한하기 위하여 해석되어서는 아니 된다.
여기에서 설명되는 어떤 실시예들은, 프로그램 가능한 프로세싱 단계들을 정의하는 능력을 포함하는 클라이언트 및 서버 사이에서 전송되는 데이터를 보호하기 위한 시스템들 및 방법들을 제공한다. 상기 프로그램 가능한 프로세싱 단계들은 상기 데이터를 보호할 때 상기 서버에 의하여 적용되고, 상기 동일한 단계들이 상기 데이터의 보호를 해제할 때 상기 클라이언트에 의하여 적용된다.
상기 프로그램 가능한 프로세싱 단계들은 각각의 클라이언트들에 대하여 유일하게 정의될 수 있고, 상기 프로그램 가능한 프로세싱 단계들은 상기 프로세싱 단계들을 정의하는 시퀀싱 데이터를 사용하는 다수의 함수들로부터 선택된다.
상기 프로그램 가능한 프로세싱 단계들은, 각각의 클라이언트가 암호화된 데이터를 다른 방식으로 처리할 수 있도록 허용하고, 상기 프로그램 가능한 프로세싱 단계들은 디지털 저작권 관리(DRM) 시퀀싱 키라고 불리는 것에 의하여 정의되며, 이러한 상기 시스템 및 방법은 키-에이블 DRM을 도입함으로써 각각의 DRM 메시지는 유일(또는 의사적-유일)한 방식으로 처리될 수 있다.
DRM 시퀀스 키는, 프로세싱 단계들의 상기 시퀀스, 및 여기서 설명되는 상기 DRM 프로세스에 의하여 보호되는 입력 데이터 상에서 수행되는 키 데이터를 정의하기 위하여 사용되는 데이터이다. DRM 시퀀스 키 및 DRM 시퀀스 데이터는 본 특허 출원에서 교환 가능하게 사용된다.
본 특허 출원에서, 다음의 용어들이 사용되며, 각각 다음의 의미를 갖는다.
DRM 프로세스: 상기 디지털 저작권 관리(DRM) 프로세스는 상기 클라이언트 및 서버 사이에서 전송되는 데이터를 보호하기 위하여 수행되는 상기 프로세싱이다. 상기 DRM 프로세스는 데이터를 보호(암호화 및 혼란화(obfuscate))하기 위하여 상기 서버에 의하여 실행되고 이후 상기 데이터에 적용된 상기 보호된 프로세스를 제거하거나 원상 복귀하기 위하여 상기 클라이언트에 의하여 수행되는 함수들(가역적, 암호학적 등의 성질을 가진)의 시퀀스의 어플리케이션으로 구성된다.
여기서 설명되는 상기 DRM 프로세스는, 하나 또는 그 이상의 키들, 해시 함수들, 데이터 변환들, 데이터 매핑 함수들을 암호화 알고리즘에 적용하는 것과 같은, 데이터의 보안을 위하여 사용되는 상기 단계들의 시퀀스이다. 따라서, 입력 데이터는 다른 출력 데이터, 데이터 쉬프팅, 데이터 교체, 라운드(round) 또는 라운드 키를 포함하는 함수들과 매핑되고, 상기 알고리즘의 라운드(round)는 새로운 키를 얻거나, 라운드 키는 서버 데이터, 데이터 쉬프팅, 배타적 OR 연산(XOR), 비트 반전, 비트 변환, 다중의 라운드 암호화 알고리즘의 하나 또는 그 이상의 라운드들을 적용하는 것, 및 상기 데이터의 보안화를 위한 다른 함수들로부터 얻어진다.
상기 DRM 프로세스는 단일의 암호학적 프로세싱 단계로 구성되거나, 보다 바 람직하게는, 상기 데이터를 한층 더 혼란화(obfuscate)하는 데에 적용되는 추가적인 암호학적 함수를 갖는 하나 또는 그 이상의 표준 암호화 알고리즘들의 사용을 포함하는 다중의 프로세싱 단계들의 어플리케이션으로 구성될 수 있다. 상기 DRM 프로세스는 어떠한 시스템 데이터에 적용될 수 있는데, 상기 시스템 데이터는 디지털 컨텐츠 또는 미디어에 대한 컨텐츠 사용 저작권 정보, 컨텐츠 컨트롤 정보(한번 재생, 복사 불허, 만료 일자, 과금 데이터, 영화 억세스 조건 등), 암호화된 컨텐츠를 복호화하기 위한 컨텐츠 키들, 및 서버 및 클라이언트 사이에 각각의 방향으로 전송되거나 상기 DRM 프로세서에 의하여 사용되는 데이터를 포함하는 시스템에서 사용되는 어떠한 데이터에 적용되는 다른 데이터를 포함한다.
상태 테이블: 상기 용어 상태 테이블 또는 시퀀서는, 컴퓨터 디바이스에 의하여 수행되는 인스트럭션들, 함수 클래스들 또는 프로세싱의 시퀀스를 정의하기 위하여 사용될 수 있는, 어떠한 종류의 소프트웨어 구조, 방법 또는 데이터를 정의하기 위하여 사용된다. 상기 용어 상태 머신, 가상 머신 또는 VM, VM 인스트럭션 세트, 시퀀서, 컨트롤 루프, 컴파일러, 인터프리터 등은, 코드를 실행할 때 소프트웨어 인스트럭션들을 프로세싱하는 현재의 소프트웨어 방법들의 예제들이고, 상기 프로세싱은 상기 상태 머신 정의, 상기 가상 머신 인스트럭션 세트, 상기 소프트웨어 디자인, 상기 컨트롤 루프의 소프트웨어 디자인, 상기 컴파일러나 인터프리터 등의 디자인 등에 의하여 결정된다.
본 특허 출원에서, 어떠한 형태의 가상 머신, 상태 머신, 시퀀스, 컨트롤 루프 또는 다른 구조들도, 사용되는 소프트웨어 방법에 적합한 상태 테이블에 의하여 정의되는 시퀀싱 단계들을 갖는 프로세스에 의하여 수행되는 인스트럭션들의 플로우를 시퀀싱하기 위하여 사용될 수 있다.
예를 들면, 가상 머신을 위한 상태 테이블은 컨트롤 루프나 인터프리터를 위한 상태 테이블과 상이할 것이다. 그러나, 각각의 방법을 위한 상태 테이블은 상기 특정 방법을 시퀀싱하는 소프트웨어를 정의하고, 상태 테이블 포맷으로 되어 있을 수는 있지만 반드시 그와 같은 포맷으로 되어 있어야 하는 것은 아니다. 어떠한 형태의 시퀀스 컨트롤도, 프로세싱 시에 실행되거나 적용되는 계산 단계들(또는 계산 플로우)을 정의하기 위하여 사용될 수 있다는 점은 고려되어야 한다.
상기 수행되는 시퀀스를 정의하는 몇몇의 또는 모든 컨트롤은, 상기 가상 머신 인스트럭션 세트, 컴퓨터의 인스트럭션 세트, 상기 상태 머신의 상태 테이블, 상기 인터프리터들의 인스트럭션 세트, 또는 상기 컨트롤 시퀀싱 데이터에서 총합적으로 또는 개별적으로 정의되는데, 본 특허 출원에서는 이를 상태 테이블, 상태 머신, 또는 가상 머신이라고 부른다.
여기서 사용되는 실시예에서의 상태 테이블은, 모든 클라이언트들을 위한 공통 키를 사용하여 추가적으로 암호화되거나, 상기 상태 테이블은 각각의 클라이언트에 대하여 유일하게 암호화될 수 있다. 상기 상태 테이블을 실제로 구현하는 상기 코드를 복호화하는 데에 사용되는 상태 테이블 복호화 키는, 상기 클라이언트 라이브러리 코드에 포함된 독립형(standalone) 키이거나, 상기 클라이언트 라이브러리 코드로부터 분리된 키일 수 있다. 또는, 그것은 상기 DRM 시퀀싱 키 정보의 일부나, 상기 클라이언트 라이브러리의 일부일 수도 있고, 상기 클라이언트 라이브 러리로부터 독립되어 어떤 방식으로 배포될 수도 있다.
이것은, 상기 DRM 시퀀스 키가 상기 암호화된 상태 테이블 실행 코드를 복호화하기 위하여 필요한 상기 키들도 포함할 수 있고, 따라서, 상기 클라이언트 디바이스 내의 CPU(중앙 처리 유닛)는 암호화되지 않은 상태 테이블 기반의 프로세싱 시퀀스들을 실행할 수 있다는 것을 의미한다.
일 실시예에 있어서, 하나 또는 그 이상의 상태 테이블들 또는 시퀀스들이 존재할 수 있고, 그 각각은 서로 다를 수 있고, 상기 상태 테이블 프로세싱이나 시퀀서 또는 VM을 구현하는 데에 사용되는 코드를 보호하기 위하여 사용되는 서로 다른 암호화 알고리즘들 및 키들을 가질 수 있다. 그리고, 상기 서로 다른 암호화들 각각은 공통 키, 유일한 키 또는 상태 테이블 유일한 키를 가질 수 있다. 또한, 이러한 키들의 어떤 것도 상기 클라이언트 라이브러리 내에 존재하거나 상기 클라이언트 라이브러리 외부에 존재하거나 이들의 조합으로 존재할 수 있고, 또한 DRM 시퀀스 키 데이터 내에 포함되어 있을 수도 있다.
사실, 다중의 키들이 사용될 수 있고 상기 상태 테이블 또는 VM 내의 인디케이터는 상기 상태 테이블 또는 VM 데이터를 복호화할 때 어떤 키가 사용되어야 하는지를 나타낼 수 있다. 또한, 또 다른 암호화 알고리즘들 또한 사용될 수 있다.
상태 머신: 이러한 용어는, 테이블 데이터, 인스트럭션 세트 정의들, 가상 머신 인스트럭션들, 컴파일러 기술들, 컨트롤 루프 디자인 방법들, 인터프리터 디자인, 또는 컴퓨터의 중앙 프로세싱 유닛(CPU)에 의하여 사용된 인스트럭션들의 시퀀스를 정의하는 어떠한 소프트웨어 방법을 사용하는 소프트웨어 프로세싱 시퀀스 들을 정의하는 다수의 소프트웨어 방법들 중 어느 하나를 의미한다.
상태 머신의 예들은, 여기에 한정하는 것은 아니지만, C 또는 C++ 스위치-케이스 스테이트먼트 컨스트럭트(statement constructs), 어떠한 종류의 가상 머신들, IF/Then 유형의 소프트웨어 컨트롤 플로우, 바이트 코드 인터프리터들, 컴파일러들(예: C, C++, C#, 자바, Forth, 베이직, 포트란 등), 또는 프로세싱 시퀀스들을 수행할 수 있거나 Soap, .net, CGI 등과 같은 어플리케이션 프로그래밍 인터페이스들(APIs)이나 Ruby-on-Rails, Perl, PHP, 자바스크립트 등과 같은 프로그래밍 유틸리티들을 제공할 수 있는 어떠한 스크립트 컨트롤 방법을 포함한다.
본 발명의 다양한 실시예들에서 상기 상태 머신은 모든 클라이언트들을 위한 공통 키를 사용하여 추가적으로 암호화될 수 있거나, 상기 상태 머신은 각각의 클라이언트에 대하여 유일하게 암호화될 수 있다.
상기 상태 머신 복호화 키는 독립형 키이거나, 상기 DRM 시퀀싱 키 정보의 일부일 수 있고, 상기 클라이언트의 일부로서 또는 상기 클라이언트 라이브러리로부터 분리된 형태로 방송 또는 유니캐스트 방법으로 배포될 수 있다. 그리고, 하나 또는 그 이상의 키들은 상기 상태 테이블 섹션에서 정의된 대로 사용될 수도 있고, 키 잠금(keying) 방법 또는 키 교환 방법의 어떠한 종류가 사용될 수도 있다.
또한, 본 발명에서 사용되는 어떠한 실시예(VM, 시퀀서, 바이트 코드 인터프리터 등)에서 상태 머신은 모든 클라이언트들에 대한 공통 키를 사용하여 추가적으로 암호화될 수 있다. 또는, 상기 상태 머신은 각각의 클라이언트에 대하여 유일하게 암호화될 수 있다.
상기 상태 머신 복호화 키는 독립형 키이거나, 상기 DRM 시퀀싱 키 정보의 일부이거나, 상기 클라이언트 라이브러리의 일부이거나, 상기 클라이언트 라이브러리로부터 분리되어 있을 수 있다. 상기 클라이언트 라이브러리로부터 분리된다는 의미는, 상기 클라이언트 라이브러리와 다른 시간에 다운로드하고, 상기 클라이언트 라이브러리의 일부로서 포함되지 않는다는 것을 의미한다.
몇몇의 실시예들에 있어서, 하나 또는 그 이상의 상태 머신들, 시퀀스들 또는 VM들이 존재할 수 있고, 그 각각은 서로 다를 수 있으며, 상기 상태 머신 프로세싱, 시퀀서 또는 VM을 구현하기 위하여 사용되는 상기 코드를 보호하기 위하여 사용되는 다른 암호화를 가질 수 있다.
사실, 다중의 키들이 사용될 수 있고, 상기 상태 머신 또는 VM 내의 인디케이터는 상기 상태 머신 또는 VM 데이터를 복호화할 때 어떠한 키가 사용되어야 하는지를 나타낼 수 있다. 또한 상기 프로세싱의 서로 다른 부분들을 위한 서로 다른 암호화 알고리즘들 또한 사용될 수 있다.
도 1은 서버(10) 및 하나 또는 그 이상의 클라이언트 디바이스들(12a, 12b, 12c)이 통신 네트워크(14)를 통하여 통신하는 일 실시예에 따른 시스템의 블록도이다. 상기 통신 네트워크는, 예를 들면, 로컬 영역 네트워크(LAN), 와이드 영역 네트워크(WAN), 인터넷 또는 이들의 조합, 또는 상기 서버(10) 및 상기 클라이언트 디바이스들(12)이 통신을 교환할 수 있도록 해 주는 다른 네트워크들일 수 있다. 상기 네트워크들은 유선 및/또는 무선일 수 있다. 상기 서버(10)는 일반적인 목적의 또는 특정한 목적의 컴퓨터이거나, 이러한 컴퓨터들의 집합일 수 있다. 상기 클 라이언트 디바이스들(12)은 마찬가지로, 셋톱 박스(STB), 일반적인 목적의 컴퓨터, 또는 상기 다수의 컴퓨팅 디바이스들을 포함하는 특정한 목적의 컴퓨터일 수 있다. 이러한 컴퓨팅 디바이스들은 네트워크, 예를 들면, 홈 컴퓨터, 랩 톱 컴퓨터, 개인용 디지털 비서(PDA) 또는 모바일 전화 등을 통한 통신을 허용한다.
상기 DRM 시퀀싱 키 또는 상기 설명된 시스템들 및 방법들을 사용하여 수행되는 DRM 시퀀스 키 단계들은, 상기 DRM 프로세스를 사용하여 데이터를 준비하고 프로세싱(암호화 또는 복호화)할 때, 상기 서버 및 상기 클라이언트가 클라이언트 유일한 DRM 시퀀싱 키 또는 DRM 프로세싱 시퀀스 키로부터 유도되는 클라이언트 유일한 프로세싱 단계들을 사용할 것이라는 점에서, 시스템 내의 각각의 클라이언트에 대하여 유일(또는 의사적-유일)하다.
상기 시스템들 및 방법들이 클라이언트 및 서버 사이에 전송되는 데이터를 보호하는 데에 적용될 때, 상기 시스템들 및 방법들은 DRM 프로세싱 단계들의 클라이언트 유일한 세트에 의하여 보호되는, 암호화된 키 데이터(또는 다른 종류의 데이터)를 생성한다. 이것은 상기 시스템 내의 모든 클라이언트들에, 단일의 공통 코드가 다운로드 됨으로써 수행될 수 있다. 상기 데이터를 보호 또는 암호화하는 데에 적용되는 상기 개별적 함수들은 상기 DRM 시퀀싱 키를 사용하여 설정 가능하기 때문에, 각각의 클라이언트, 또는 각각의 메시지 교환에 대한 상기 DRM 프로세스는 유일할 수 있다.
여기서 설명되는 상기 시스템들 및 방법들은 클라이언트 유일한 DRM 프로세싱 방법이 모든 클라이언트들에 전송되는 공통 펌웨어 또는 소프트웨어 코드 이미 지로부터 유도될 수 있다. 이것은 유일한 클라이언트 펌웨어 이미지가 각각의 클라이언트 디바이스에 배포할 필요를 없앤다. 각각의 클라이언트 디바이스에 대한 런타임 소프트웨어 코드 이미지를 의미하는, 각각의 클라이언트 디바이스에 대한 유일한 클라이언트 소프트웨어 코드 이미지를 생성하는 소프트웨어 방법들이 포함될 수 있다.
방법들 중 하나 또는 양자의 방법들, 공통 펌웨어 이미지 다운로드 및 클라이언트 유일한 펌웨어 다운로드 이미지가, 케이블 및 위성 비디오 네트워크들과 같은 많은 방송 네트워크들에 의하여 사용될 수 있고, 매우 많은 유일한 클라이언트들을 매우 많은 클라이언트 디바이스들(예: STB들)에 배포하는 데에 필요한 시간은 가용하지 않다. 그러나, 인터넷과 같은 양방향 네트워크들에 있어서는, 소프트웨어(예: 초기 셋업)는 각각의 클라이언트에 의하여 개별적으로 다운로드 되어, 각각의 클라이언트에 배포되는 상기 코드 이미지는 유일하게 될 수 있다. 위성 및 케이블(단방향) 네트워크들에 있어서는, 공통 코드 이미지가 모든 클라이언트들에게 전송될 수 있다.
상기 클라이언트 디바이스 펌웨어가 프로세스를 업데이트하는 동안, 상기 클라이언트 이미지는 상기 클라이언트 디바이스에 의하여 추가적으로 스크램블될 수 있다. 따라서, 각각의 클라이언트 코드 이미지는 유일(거의 유일)하게 된다. 상기 클라이언트가 상기 코드 이미지를 스크램블하는 방식은 상기 서버에 알려질 것이고, 따라서, 상기 서버는 개별적 클라이언트에 대하여 상기 입력 데이터를 정확하게 프로세싱할 수 있다.
하나의 예시적인 어플리케이션에 있어서, 클라이언트 디바이스 셋업 시에는, 상기 클라이언트 라이브러리 코드 이미지에 포함되는 클라이언트 라이브러리 DRM 프로세스 플로우 데이터(DRM 프로세스 또는 DRM 시퀀싱 키(시퀀서 데이터(60)), 또는 VM 인스트럭션 복호화 키 또는 상태 머신 키 잠금(keying) 데이터)는 존재하지 않는다. 이것은 상기 서버로부터 상기 클라이언트 라이브러리로 분리되어 전송되는 추가적인 데이터 없이는, 상기 클라이언트가 메시지들을 복호화하는 방법을 알지 못한다는 것을 의미한다.
상기 클라이언트 라이브러리에 대한 상기 프로세싱 시퀀스 또는 소프트웨어 코드 플로우는, 가상의 인스트럭션 데이터, 시퀀스 데이터, 상태 테이블 또는 DRM 시퀀싱 키라고 불리는 상태 테이블 키 잠금(keying) 데이터에 의하여 정의되는 DRM 시퀀싱 키에 의하여 정의된다. 또한, 상기 DRM 시퀀싱 키는 클라이언트의 파워-온 또는 리셋시에, 또는 상기 클라이언트가 복호화 데이터에 대한 상기 DRM 시퀀싱 키를 필요로 할 때, 서버로부터 다운로드된다. 또는, 상기 DRM 시퀀싱 키 정보는 스마트 카드 내의 데이터로부터 제공되고 저장되거나, 네트워크를 통하여 안전하게 전송되거나, 다른 데이터 교환 방법(네트워크를 통한 방법, 하드웨어로부터 획득되는 방법, 클라이언트에 특화된 식별자 데이터의 해시를 사용하여 획득되는 방법 등)에 의하여 획득된다.
상기 DRM 시퀀싱 키를 상기 클라이언트 펌웨어 코드 이미지에 저장하지 않음으로써, 상기 클라이언트 라이브러리는 IDAPro와 같은 정적 코드 분석 도구를 사용해서는 해킹될 수 없다. 또한, 해커가 상기 클라이언트 라이브러리의 연산을 이해 하기 위하여 사용하는 런타임 함수 콜 트리 데이터가 존재하지 않는다.
도 2는 도 1의 서버(10)의 기능적 블록도이다. 입력 데이터(11)는 상기 DRM 프로세스에 의하여 보안화되는 데이터이다. 이러한 데이터는 예를 들면, 음악, 영화들 또는 기타 정보와 같은 디지털 미디어 컨텐츠일 수 있다. 입력 데이터 인터페이스 모듈(21)은 보호될 입력 데이터(11)를 수신하기 위한 인터페이스이다. 시퀀서 데이터(또는 DRM 시퀀스 키)(60)는 함수들 F1(151) 내지 Fn(159)이 어떻게 실행되는지에 관한 시퀀스 플로우를 정의하는 데이터이다.
시퀀서 데이터(60)는 상기 클라이언트 디바이스에서 사용되는 상태 머신 또는 상태 테이블의 형태와 호환 가능한 포맷으로 되어 있다. 또는 시퀀서 데이터(60)는 함수 또는 함수들의 세트들에 의하여 변환될 때, 상기 클라이언트 디바이스와 호환되는 포맷으로 된 데이터로 되는 포맷으로 될 수 있다. 시퀀서 데이터(60)는 또한, 상기 클라이언트 디바이스(예를 들어, 상기 클라이언트 디바이스 상에 존재하는, 이하에서 설명되는 하나 또는 그 이상의 상기 함수들 F1(151) 내지 Fn(159)) 내에 포함되는 실제의 코드를 수정하기 위하여 사용될 수 있다.
이것은, 스스로 수정되는 수정 소프트웨어를 생성하는데, 상기 DRM 시퀀스 키 또는 시퀀서 데이터(60)는, DRM 시퀀스 키(60) 데이터에 의하여 구동되는 스스로 수정하는 코드를 생성하는, 상기 클라이언트 라이브러리 소프트웨어 인스트럭션들을 수정하는 데에 사용된다. 상기 스스로 수정되는 코드는 런타임 시에, 또는 상기 클라이언트 라이브러리가 상기 인스톨 프로세스 동안 다운로드될 때, 각각의 클라이언트를 유일화할 수 있다.
일 실시예에서의 선택적 단계는 상기 시퀀서 데이터 암호화 모듈(30)을 사용하여, 상기 시퀀스 데이터(60)를 상기 클라이언트에게 전송하기 전에, 상기 시퀀스 데이터(60)를 암호화하는 것이다. 상기 시퀀서 데이터 암호화(30)에 의하여 사용되는 키 또는 키들은, 각각의 클라이언트에 대하여 유일할 수 있다. 또는, 그것들은 각각의 클라이언트 별로 유일화되고 모든 클라이언트들 또는 클라이언트들의 그룹들에 대하여 공통인 몇몇의 키들의 조합일 수 있다.
상기 시퀀스 데이터 암호화(30)를 위한 키들은, 상기 클라이언트 라이브러리 릴리스의 일부로서 포함될 수 있다. 또는, 그것들은 상기 서버 및 상기 클라이언트 사이에 분리된 메시지로 전송될 수 있다. 또는, 그것들은 추가적인 데이터로서 상기 서버로부터 상기 클라이언트에 전송되는 메시지들에 부가될 수도 있다. 시퀀서 데이터 암호화(30)는 하나 또는 그 이상의 암호화 키들이나, 하나 또는 그 이상의 암호화 알고리즘들이나 또는 양자를 사용하여, 상기 함수들 F1(151) 내지 Fn(159)를 암호화하는 데에도 사용될 수 있다.
선택적으로, 함수 암호화 키들 #1(64) 및 함수 암호화 키 #2(66)으로 보여주는 추가적인 암호화 키들은, 함수들 F1(151) 내지 Fn(159)를 암호화하기 위하여 포함될 수 있다. 하나, 둘 또는 그 이상의 함수 암호화 키들(64, 66)은, 상기 클라이언트에 어떠한 방식으로 배포되는 상기 암호화 키들을 갖는 시스템에서 사용될 수 있다. 상기 방식은 바람직하게는, 보안 유니캐스트 연결을 사용하는 방식, 단방향 채널을 통한 방식, 양방향 채널을 통한 방식, 또는 상기 클라이언트 라이브러리 코드에 통합되거나 상기 클라이언트 디바이스에 의하여 접근 가능한 하드웨어에 통합 되거나, 또는 스마트 카드나 보안 메모리에 통합되는 방식이다.
시퀀서 인스트럭션 실행 모듈(50)은 상기 함수들 F1(151) 내지 Fn(159)의 실행의 시퀀싱을 수행하는 코드이다. 추가적인 선택적 단계는 상기 시퀀서 인스트럭션을 암호화하는 것이고, 이것은 시퀀서 인스트럭션 암호화 모듈(40)로서 보여진다. 또한, 이러한 단계는 상기 시퀀서(50)를 구현하기 위하여 사용되는 실제의 코드를 암호화한다. 하나 또는 그 이상의 키들 및 암호화 방법들은, 상기 시퀀서 인스트럭션 암호화(40)에 의해, 상기 시퀀서 인스트럭션 세트 또는 컨트롤 데이터를 암호화하기 위하여 사용될 수 있다.
상기 함수들 F1(151) 내지 Fn(159)은, 상기 시퀀스 데이터(60)에 따라 상기 입력 데이터(11)를 보호하기 위하여 사용되는 프로세싱 함수들의 세트를 나타낸다.
이러한 함수들은, 다음의 알고리즘 종류들을 포함하는 알고리즘들의 일부 또는 완전한 알고리즘들이다. 암호화 알고리즘들, 해시 함수들, 데이터 변환 단계들(선형 및 비선형), 데이터 매핑 함수들. 따라서, 입력 데이터는 다른 출력 데이터, 데이터 쉬프팅, 데이터 교체, 라운드(round) 또는 라운드 키를 포함하는 함수들과 매핑되고, 상기 알고리즘의 라운드(round)는 새로운 키를 얻거나, 라운드 키는 서버 데이터로부터 얻어지며, 상기 라운드는 단일의 또는 다중의 패스 알고리즘을 통한 하나의 패스, 데이터 쉬프팅, 배타적 OR 연산(XOR), 비트 반전, 비트 변환, 다중의 라운드 암호화 알고리즘의 하나 또는 그 이상의 라운드들을 적용하는 것, 및 상기 데이터를 보안화고, 상기 DRM 프로세스를 혼란화하고, 추가적인 보안을 부가하고, 메모리 내의 데이터를 셔플(shuffle)하고, 메모리 내의 데이터를 변환하기 위하여 사용되는 다른 함수들이다.
상기 함수들은 키들을 필요로 하는 알고리즘을 사용하는 함수들에 대한 하나 또는 그 이상의 키들을 사용할 수 있고, 상기 함수들은 상기 함수들의 적절한 위치에 추가적인 프로그램 가능성을 제공하는 다른 데이터를 포함할 수 있다. 예를 들면, F3(153)과 같은 함수가 데이터를 셔플하기 위하여 사용될 때, 상기 셔플링이 수행되는 방법은, 함수 자체 내에서의 데이터, 또는 다른 함수들에 의하여 제공되는 데이터, 또는 상기 서버(10)에 의하여 공급되는 데이터, 또는 상기 클라이언트 라이브러리 내에 포함된 데이터를 기초로 이루어질 수 있다.
상기 함수들(기능적 프로세싱)의 어플리케이션의 출력은 DRM 보호된 출력 데이터(70)이다. 상기 DRM 보호된 출력 데이터를 생성하기 위하는 상기 서버 단의 프로세싱은 다음과 같이 요약될 수 있다:
1. 상기 DRM에 의하여 보호될 입력 데이터(11)는 상기 입력 데이터 인터페이스(21)에 제공된다.
2. 시퀀서 데이터(60)는, 상기 함수들(F1(151) 내지 Fn(159))의 시퀀스들이 상기 입력 데이터(11)를 프로세스하도록 시퀀싱되는 방식을 기술하는 데이터를 포함하도록 생성된다. 시퀀서 데이터(60)는, 또한, 프로세스될 때 함수들(F1(151) 내지 Fn(159))에 의하여 사용되는 키들 및 다른 데이터를 포함할 수 있다.
3. 시퀀서 데이터(60)는, 함수들(F1(151) 내지 Fn(159))의 실행 시퀀스를 정의하기 위하여, 시퀀스 인스트럭션 실행(50)에 의한 입력으로서 사용된다.
4. 시퀀서 인스트럭션 실행(50)의 완료시에, 상기 프로세스된 데이터는 DRM 보호된 출력 데이터(70)로서 출력된다.
상기 단계 3(시퀀서 인스트럭션 실행(50)을 수행하는 것)은 다음과 같이 동작한다:
a. 상기 시퀀스 데이터(60)의 제1 부분을 사용하여, 상기 시퀀서 데이터(60)의 제1 부분과 관련된 함수 또는 함수들을 실행한다.
b. 상기 시퀀서 데이터(60)의 다음 부분을 사용하여, 시퀀서 데이터(60)의 다음 부분과 관련된 함수를 실행한다.
c. 모든 프로세싱이 수행될 때까지 단계 b를 반복한다.
예를 들면, 시퀀서 데이터(60)가 128비트로 구성되고 클라이언트(4비트) 당 16 함수 그룹들이 있다고 하면, 상기 시퀀서에 의하여 선택된 128/4=32 함수들이 존재한다.
상기 제1 단계는 16 함수들의 중 하나를 선택하기 위하여 시퀀스 데이터의 4비트를 사용할 것이다; 제2 단계는 16의 그룹 등으로부터 제2 함수를 실행하기 위하여 시퀀스 데이터(60)의 다음 4비트를 사용할 것이다.
상기 설명된 바와 같이, 시퀀스 데이터(60)의 상기 파티셔닝(partitioning)은, 시퀀서 데이터(60)가 프로세스 실행과 어떻게 매핑되는 지에 관한 단지 하나의 예에 불과하다는 것은 이해되어야 할 것이다. 당업자가 이러한 시퀀서를 구현할 수 있는 많은 다른 방식들이 있을 수 있다.
상기 시퀀서 연산을 추가적으로 설명하기 위하여, 서로 다른 함수들(F1(151) 내지 F512(159))을 갖는 라이브러리를 고려할 수 있다. 상기 시퀀서 데이터는 상기 함수 번호들의 이진 값들 및 그것들이 실행되어야 하는 상기 시퀀스를 포함하는 단순한 값일 수 있다. 예를 들면, 하나의 클라이언트에 대한 입력 데이터에 관한 상기 DRM 프로세싱은 다음의 함수 시퀀스를 사용할 수 있다:
프로세싱 시퀀스: F14, F57, F396, F127, F241, F501, F8, F72.
상기 시퀀스가 상기 함수 번호에 대한 이진 값들로서 정의되는 단순한 데이터 구조를 사용하여, 다음의 시퀀스 데이터는 상기 시퀀서 인스트럭션 실행 모듈(50)에게 상기 DRM 프로세스 함수 프로세싱을 표시할 것이다:
십진수로 된 시퀀스 데이터: 014, 057, 396, 127, 241, 501, 008, 072.
상기 예제에서, 상기 시퀀스 데이터(60)는 3 문자의 십진 숫자로서 표시된다. 그러나, 하나의 예제에 있어서, 상기 시퀀스 데이터(60)는, 순차적인 순서로 실행되는 상기 함수 번호들을 포함하는 단순한 데이터 구조가 아닐 수 있다. 이러한 실시예에서, 상기 시퀀스 데이터(60)는 스크램블되고 혼란화되기 때문에, 상기 함수들(F1(151) 내지 Fn(159))의 호출(call) 시퀀스의 결정은 간단하지 않고, 해커는 시스템 해킹을 하려면 보다 복잡한 소프트웨어 분석을 수행하여야만 한다. 또한, 상기 시퀀스 데이터(60)는 선택적으로 암호화될 뿐만 아니라, 상기 코드의 암호화는 상기 시스템 내의 모든 함수들을 식별하는 데에 사용된다. 데이터 구조, 인스트럭션 세트 정의, 인스트럭션 세트 그룹화 또는 매핑, 값 해싱 또는 압축의 어떠한 다른 종류도, DRM 보호된 출력 데이터(70)를 준비할 때, 상기 시퀀스 데이터(60)를 상기 DRM 프로세서를 구현하기 위하여 사용되는 실제의 인스트럭션들 및 함수들로 확장하는 데에 사용될 수 있다.
함수의 실행 시간에, 이러한 시점 이전에 사용되었던 상기 시퀀스 데이터(60) 중의 몇몇은, 스스로 수정(self-modifying)하는 시퀀스 데이터(60)를 생성하는 데에 호출되는 함수들에 의하여 수정될 수 있다. 상기 시퀀스 데이터(60)는 상기 정확한 함수가 상기 새롭게 업데이트되고 정확한 잔여 시퀀스 데이터(60)를 생성하기 위하여 호출되도록 요구할 것이다.
유사한 프로세스가 상기 전체 DRM 프로세스에 적용될 수 있다. 여기서, 상기 함수들(F1(151) 내지 Fn(159))의 정확한 시퀀스는 단지 상기 입력 데이터(11)를 프로세스하기 위하여 사용될 뿐만 아니라 시퀀스 데이터(60)를 수정하기 위하여 사용되는 데이터를 준비하기 위하여 호출될 필요가 있다.
상기 함수들이 기능적 조각들로 분해될 수 있는 많은 방법들이 있는데, 하나의 방법이 아래에서 기술될 것이다. DRM 시스템에 있어서는, 상기 시스템의 암호학적 구조가 보안을 위한 최소의 조건을 충족하는 것을 보장하기 위하여, 상기 DRM 프로세싱의 암호학적 강도를 수립하는 것이 중요하다.
일 실시예에 있어서, 이러한 시스템의 하나 또는 그 이상의 함수들은 상기 시스템에게 최소한의 암호학적 강도를 제공한다. 이것이 의미하는 것은, 상기 시스템의 DRM 프로세싱이, 알려진 수용 가능한 암호학적 강도를 갖는 적어도 하나의 함수를 최소한 포함한다는 것을 의미한다. 예를 들면, 하나의 함수는, 이러한 수준으로 상기 최소한의 암호화 강도를 수립하는, 128비트 또는 192비트의 AES 알고리즘일 수 있다.
상기 최소한의 암호화 강도를 증가시키기 위한 다른 함수들이 존재하지만, 상기 시스템들의 암호학적 강도는 이와 같은 128비트 AES 암호화와 같이 잘 알려져 있는 표준보다 강하다는 설명에 의해, 상기 최소의 암호학적 강도를 이해하고 설명하기에 보다 용이하게 된다. 추가적으로, 적어도 하나 이상의 수용 가능한 암호화 알고리즘은, 하나 이상의 단일의 암호화 함수를 사용할 때, 상기 암호학적 강도를 수립하기 위하여 사용될 수 있다. 예를 들면, 상기 시스템은 128 비트 AES 및 192 비트 AES와 더불어 삼중의 DES를 사용할 수 있다.
또한, 상기 DRM 프로세싱을 혼란화하고, 상기 DRM 프로세서의 리버스 엔지니어링 및 해킹에 대한 복잡성을 추가하기 위해 포함되는 추가적인 몇몇의 보안 함수들이 있다. 상기 시퀀서 데이터(60)는 실행되는 상기 함수들을 표시하고, 몇몇의 실시예들에 있어서, 서로 다른 암호학적 강도들을 갖는 함수들의 하나 또는 그 이상의 카테고리들로부터 선택되는, 다양한 암호학적 강도들을 갖는 함수들이 사용될 수 있다.
예를 들면, 각의 카테고리가 유사한 암호화 강도를 가지는 경우에, 일반적으로 함수들의 4개의 카테고리가 존재한다면, 상기 카테고리들은 다음과 같이 배열될 것이다:
카테고리 1: 완전 128 비트 AES, 완전 192 비트 AES, 삼중 DES, 블로우피시(BlowFish) 등.
카테고리 2: AES의 11 라운드, 삼중 DES의 5 라운드, AES의 17 라운드, 블로우피시의 6 라운드 등. 특정한 다중의 라운드 알고리즘들에서 다수의 라운드들이 사용될 때, 실행되는 라운드들의 실제 숫자는 시퀀스 데이터(60)에 의하여 결정될 수 있다.
카테고리 3: XOR, 비트 쉬프트, 변환, 매핑, 수학 함수들, 해시, 인증, 블록 프로세스 등.
카테고리 4: 데이터 트랜스포즈(transpose), 데이터 셔플, 데이터 메모리 셔플, 데이터 어드레스 셔플, 데이터 스크램블.
상기 보여진 바와 같이 각각의 카테고리 내의 각각의 함수는, 실제로 수십 또는 수백의 작은 함수의 조각들로 분해된다. 따라서, 상기 작은 함수 조각들의 큰 숫자가, 상기 카테고리에서 보여진 함수를 구현하기 위하여 실행될 필요가 있을 것이다. 예를 들면, 상기 완전 128 비트 AES 알고리즘은 다수의 작은 함수들로 분해될 수 있는데, 상기 작은 함수들은 상기 AES 알고리즘의 하나 또는 그 이상의 단계들을 구현한다. 이 때, 상기 함수들은 상기 알고리즘의 코드의 하나의 라인, 하나의 라운드의 부분, 하나의 라운드 또는 다른 알고리즘 또는 코드 해부(dissection) 크기 상에서 동작될 정도로 작다.
상기 DRM 프로세서 및 상기 DRM 시퀀스 또는 DRM 시퀀스 데이터(60)는 하나 또는 그 이상의 함수가 하나 또는 그 이상의 카테고리들로부터 실행될 수 있도록 하는 데이터를 포함할 것이다. 함수가 작은 함수들의 그룹으로 분해될 때, 상기 DRM 시퀀스 키 또는 DRM 시퀀스 데이터(60)는 함수의 모든 조각들을 실행하기 위한 데이터를 포함할 것이다. 또는, 상기 시퀀서 인스트럭션 실행(50)의 디자인은, 상기 함수를 더 작은 조각들로 해부한 것의 일부로서 생성되는 함수의 모든 조각들을 실행할 것이다.
도 3은 도 1의 클라이언트 디바이스와 같은 클라이언트 디바이스 상에 존재하는, 상기 클라이언트 라이브러리 구조의 일 실시예의 기능적 블록도이다. 프로세스되거나 복호화(110)되는 입력 데이터는, 상기 입력 데이터 인터페이스 모듈(121)을 통하여, 상기 클라이언트 코드 라이브러리 또는 모듈(100)에 입력된다. 시퀀서 데이터(160)는 함수들(F1(151) 내지 Fn(159))의 시퀀스를 사용하여 상기 입력 데이터(110)를 프로세스하는 방법을, 상기 시퀀서 인스트럭션 실행 모듈(150)에 명령하거나, 상기 시퀀서 인스트럭션 실행 모듈(150)을 위한 상기 인스트럭션들이다. 상기 시퀀서 데이터(160)는 도 2에 설명된 상기 서버 단의 DRM 프로세싱에 의하여 추가되는 상기 보호를 복호화하고 제거하는 함수들을 선택하기 위하여 사용된다.
상기 시퀀서 데이터(160)에 의하여 지시된, 상기 DRM 프로세싱의 대부분 또는 모두가 완료될 때, 상기 프로세스된 입력 데이터(110)는 상기 DRM 프로세싱의 대부분 또는 모두가 제거되도록 하고, 상기 출력은 보호되지 않은 출력 데이터(170)이다. 몇몇의 실시예들에 있어서, 상기 프로세싱은 상기 DRM 프로세싱의 대부분을 수행한다. 왜냐하면, 몇몇의 시스템들에서는, 데이터가 비워진 상태에서 출력되지 않도록, 상기 데이터에 대하여 수행되는 DRM 프로세싱의 대부분이나 전부는 아닌 과정에 의하여 데이터를 출력하는 것이 바람직하기 때문이다. 그리고, 상기 출력 데이터(170)는 상기 출력 데이터(170)를 사용하는 상기 프로세스 또는 함수에 의한 추가적인 프로세싱을 여전히 필요로 하게 된다.
이것은, 상기 출력 데이터(170)가 또 다른 함수 또는 인터페이스로 출력될 때, 상기 출력 데이터(170)를 부분적으로 보호되도록 한다. 상기 출력 데이터(170) 를 수신하는 상기 함수 또는 인터페이스는, 상기 데이터를 사용할 수 있기 전에 수행될 필요가 있는 모든 부분적인 프로세싱을 제거하기 위하여, 상기 남아 있는 필요한 단계들을 적용할 것이다. 대안적으로, 상기 클라이언트 라이브러리(100)로부터 보호되지 않은 출력 데이터(170)를 출력하지 않는 것이 가능하지만, 출력 데이터(170)를 수신하는 함수 또는 프로세스에 알려져 있는 암호화 프로세스로 암호화되는 출력 데이터를 출력하는 것도 가능하다.
상기 동일한 함수들(F1(151) 내지 Fn(159))이 도 2의 서버 단의 블록도와 도 3의 클라이언트 코드 라이브러리(100)의 양자에서 보여지지만, 그것들은 반드시 동일할 필요는 없다. 그것들이 동일하지 않을 때에는, 상기 다시 매핑된 함수를 사용하고 상기 시퀀스 데이터(60 및 160)를 조절하는 상기 클라이언트에게, 상기 DRM 프로세스가 상기 입력 데이터(110)의 보호를 해제할 수 있도록, 매핑 정보가 상기 클라이언트에게 (명시적 또는 내포적으로) 제공될 필요가 있을 것이다.
일 실시예에 있어서, 각각의 클라이언트는, 상기 시퀀서(150)가 시퀀스 데이터(160)라고 불리는 DRM 시퀀싱 키의 형태로된 상기 함수들을 통하여 시퀀싱하는 방법을 나타내는 런타임 클라이언트 특화된 정보를 얻는다. 상기 시퀀스 데이터(160)는 서버 및 특정한 클라이언트 사이의 유니캐스트 메시지 시퀀스에 의하여 제공될 수 있거나, 상기 시퀀스 데이터(160)는 서버로부터 상기 클라이언트에 의하여 다운로드될 수 있다. 또는, 그것은 클라이언트 소프트웨어 인스톨의 일부, 다중의 소프트웨어 다운로드 프로세스의 일부로서 제공될 수 있다. 상기 소프트웨어 다운로드 프로세서에서, DRM 로더 프로세스의 2개의 위상(topology) 중 위상 1은 멀 티캐스트 또는 카로셀(carousel) 유형의 다운로드를 통하여 단일의 공통 코드 이미지를 모든 클라이언트들에게 배포하고, 상기 위상 2는 유일한 코드를 갖는 유니캐스트, 또는 위상 2에서 배포되는 각각의 클라이언트에 유일한 상태 시퀀스 인스트럭션 플로우 데이터에서 발생된다.
상기 프로세스 및 상기 실제 단계들을 설명하는 두 개의 위상 로더의 설명은 단일의 소프트웨어 다운로드로 통합될 수 있다. 여기서, 상기 다운로드는 상기 클라이언트 라이브러리 프로세싱 플로우가 각각의 클라이언트에 의하여 수행되는 방법을 정의하는 클라이언트 특화된 키(또는 키들, DRM 키들 또는 시퀀스 데이터(60, 160))와 함께 클라이언트 공통 코드를 포함한다. 물론, 상기 시스템이 상기 네트워크 상의 각각의 클라이언트에 대한 클라이언트 유일한 라이브러리들을 다운로드할 충분한 대역폭을 가진다면, 상기 클라이언트 라이브러리 코드 이미지는 각각의 클라이언트에 대하여 유일할 수도 있다.
클라이언트 특화된 코드 라이브러리가 전달되는 시점의 예는, 개인용 컴퓨터가 상기 코드 이미지의 다운로드가 인스톨 프로세스의 일부인 어플리케이션 코드 이미지를 다운로드하는 시점이다. 선택적으로, 상기 시퀀스 데이터(160)는 상기 클라이언트 라이브러리의 일부로서, 혼란화된(obfuscated) 형태로 포함될 수 있다.
이러한 어플리케이션에 있어서, 스마트 카드라는 용어는, 보안 마이크로 프로세서, 보안 메모리를 갖는 칩, 보안 ID, 유일한 식별자를 갖는 암호화 프로세싱 시설, 또는 개인용 컴퓨터의 중앙 프로세싱 유닛(보안 프로세싱 지원 또는 보안 메모리를 갖는)을 포함하는 스마트 카드 종류의 디바이스를 의미한다. 본 특허 출원 에서는, 보안을 위하여 사용되는 이러한 하드웨어들과 소프트웨어 프로세싱 기술들 모두는 통합하여 스마트 카드라고 불린다.
셋톱 박스와 같은 클라이언트 디바이스가 스마트 카드를 포함할 때, 상기 클라이언트 라이브러리에 대한 코드 실행의 일부는 상기 스마트 카드로부터 얻어지거나, 상기 클라이언트 내의 스마트 카드 내에 포함된 데이터로 프로세시되는, 클라이언트 특화된 키 잠금(keying) 데이터를 필요로 할 것이다.
이것은, 공통 클라이언트 소프트웨어 이미지가 네트워크 상에서 동작하는 모든 클라이언트 디바이스들에게 배포될 수 있고, 상기 클라이언트 라이브러리의 소프트웨어 실행은, 칩의 보안 부분, 보안 프로세서, 스마트 카드, 보안 동글(dongle) 또는 다른 보안 디바이스 내에 저장되는 DRM 시퀀싱 키 데이터에 기초하여 각각의 클라이언트에 대해 유일할 수 있다.
상기 서버(10)(도 1 참조)이 특정 클라이언트(12)와 통신할 때, 상기 서버는, 각각의 클라이언트에 대하여 유일한 상기 DRM 시퀀싱 키로부터 유도되는 클라이언트 특화된 프로세싱 단계들을 수행함에 의하여, 특히 클라이언트에 대하여 데이터를 암호화하거나 키들을 준비하는 방법을 알 수 있을 것이다. 상기 클라이언트는 상기 클라이언트 특화된 DRM 시퀀싱 키를 적용함에 의하여, 상기 서버로부터 수신되는 데이터를 프로세스 하는 방법을 알게 될 것이다.
이것은 상기 서버가 특정 클라이언트에 대한 데이터를 암호화할 때 DRM 시퀀싱 키를 생성하고 사용하거나, 상기 서버가 특정 클라이언트에 대한 데이터를 암호화할 때 이미 정의된 DRM 시퀀싱 키를 사용한다는 것을 의미한다. 물론, 데이터 및 상기 키들을 암호화할 때, 다른 클라이언트에 특화되지 않은 키들이 사용될 수도 있고, 상기 키들은 AES(Advanced Encryption System)와 같은 암호화 알고리즘들에서 사용되는 일반적인 키들로서 기능할 수도 있으며, 또한 상기 키들은 알고리즘 키 데이터에 부가하여 적용되는 함수들의 상기 클라이언트 라이브러리 특화한 시퀀싱을 정의할 수도 있다.
상기 DRM 시퀀스 키는, 프로세싱 프리미티브들(primitives), 코드 조각들, 비가역적이거나 가역적일 수 있는 프로세싱 함수들, 변환들 또는 프로세싱 요소들(elements)이라고 불리는 다수의 소프트웨어 함수들로부터의 선택을 위하여 사용될 수 있다. 프로세싱 프리미티브들의 예들이 도 4에 도시된다.
제한된 수의 프로세싱 프리미티브들이 존재할 수 있는데, 예를 들면, 상기 DRM 시퀀스 키가 3비트의 길이를 가지면, 8개의 프로세싱 프리미티브들이 존재하거나 라이브러리에서 사용되는 수백의 프로세싱 프리미티브들이 존재할 수 있다. 프로세싱 프리미티브들은 배타적 논리합(XOR) 및 쉬프트와 같이 유일할 수도 있고, 쉬프트 함수의 16가지 서로 다른 변형들 또는 배타적 논리합의 32가지 서로 다른 변형들과 같은 유사한 루킹(looking) 연산들의 그룹들을 포함할 수 있다.
본 특허 출원에서 사용되는 바와 같이, 프로세싱 프리미티브는, 상기 AES 알고리즘의 완전 구현과 같은 알고리즘 전체 구현이나, 상기 AES 알고리즘(AES.n314)의 'n' 라운드와 같은 알고리즘의 어떤 수의 라운드를 포함할 수도 있다.
전체 AES 구현과 같은 전체 알고리즘을 많은 프로세싱 시퀀스 단계들 중 하나로 통합함에 의하여, 상기 DRM 프로세스의 보안 감사(audit)는 상기 DRM이 적어 도, 추가적인 클라이언트에 유일한 혼란화 기술들 및 프로세싱 단계들과 결합된 상기 AES 암호화 알고리즘만큼이나 강하다는 것을 보여준다. 물론, 당업자라면 상기 DRM의 기본적인 보안 강도를 향상시키기 위하여, 다중의 신뢰된 보안 암호화 알고리즘들을 결합할 수도 있을 것이다. 이것의 예는, 상기 DRM 프로세싱 시퀀스 내의 많은 프로세싱 단계들의 2가지로서, AES 및 삼중 DES를 사용하는 것이다.
도 2 및 3에서, 전술된 코어 프로세싱 조각들은, 하나 또는 그 이상의 키들에 의한 암호화를 상기 프로세싱 조각들에 부가함에 의하여, 보다 더 보안화될 수 있다. 예를 들면, 도 3에 도시된 바와 같이, 시퀀스 데이터(160)는 시퀀스 데이터 복호화 키(162)를 사용하여 암호화될 수 있고, 상기 암호화된 시퀀스 데이터(160)를 복호화하는 방법에 관한 지식이 상기 정확한 프로세싱을 수행하는 데에 필요할 수 있을 것이다. 도 2에 도시된 서버는, 상기 시퀀스 데이터(60)를 상기 클라이언트 및 상기 클라이언트 코드 라이브러리(100)에 전송할 때, 시퀀스 데이터 암호화 키(62) 및 암호화 알고리즘(미도시 됨)을 사용하여 시퀀스 데이터(60)를 암호화할 것이다.
상기 시퀀스 데이터(160)가 보안 및 암호화된 통신 링크를 통하여 전송된다고 하더라도, 해커는 상기 클라이언트의 연산을 이해하기 위하여, 상기 시퀀서 데이터(160)의 복호화를 추적할 필요가 있을 것이다. 상기 암호화된 시퀀스 데이터(60)가 도 3의 클라이언트 코드 라이브러리(100)에 의하여 수신될 때, 상기 적절한 시퀀스 데이터 복호화 키(162)는 상기 데이터를 복호화하기 위하여 사용될 것이다.
상기 시퀀스 데이터 복호화 키(162)는 혼란화된 방식으로 저장된 상기 클라이언트 라이블러리 코드의 일부일 수 있다. 또는 그것은 스마트 카드(보안 프로세서, 보안 메모리 등) 내에 보유되거나, 상기 서버로부터의 유니캐스트 메시지를 사용하여 전달될 수 있다.
하나 이상의 시퀀스 데이터 복호화 키가 존재할 수 있고, 상기 시퀀스 데이터(60, 160) 암호화 및 복호화는 하나 또는 그 이상의 암호화 알고리즘들을 사용할 수 있다. 상기 암호화 알고리즘들은 상기 시퀀스 데이터(60, 160)의 모두, 또는 하나 또는 그 이상의 복호화 키들을 사용하여 상기 암호화 알고리즘들 중 하나에 의하여 프로세스되는, 상기 시퀀스 데이터(60, 160)의 일부를 가진다.
도 2 및 3에서, 모두 보여지는 상기 함수들(F1(151) 내지 Fn(159))은 하나 또는 그 이상의 암호화/복호화 알고리즘들 사용하고 하나 또는 그 이상의 암호화/복호화 키들을 사용하여 암호화될 수 있다. 도 2에서, 두 개의 함수 암호화 키들은 요소(64) 및 요소(66)으로 보여지고, 함수를 암호화 할 때에는 이 키들의 각각이 사용될 수 있다. 방법들 및 키들의 어떠한 순열 또는 조합이라도 상기 실제 함수들을 암호화하고 복호화하는 데에 사용될 수 있다. 예를 들면, 두 개의 서로 다른 키들에 의하여 사용되는 두 개의 서로 다른 암호화 알고리즘이 존재할 수 있다. 또는 하나의 키를 갖는 하나의 알고리즘, 하나의 키를 갖는 두 개의 알고리즘들, 또는 세 개의 키들을 갖는 세 개의 알고리즘들이 존재할 수 있다.
도 2에서 상기 서버 단의 프로세싱 및 도 3에서 상기 클라이언트 코드 라이브러리는 상기 서로 다른 함수 암호화 방법들 및 키들을 적용하는 방법을 알 것이 다. 각각의 단에서 상기 함수들을 암호화/복호화하는 방법을 아는 방식은, 이러한 요소들에 대한 코드를 프로그래밍하는 프로그래머들에 의하여 결정된 방식으로 정의될 수 있다.
이러한 프로그래밍이 수행되는 많은 수의 방식이 있을 수 있는데, 몇몇 예제들은 다음을 포함한다:
1. 두 개의 알고리즘들이 상기 함수들을 암호화/복호화하기 위하여 사용될때, 모든 다른 함수를 암호화하기 위하여 알고리즘 1을, 모든 제2 함수를 암호화하기 위하여 알고리즘 2를 사용한다.
2. 제1의 10개의 함수들에 대한 알고리즘 1과 함께 키 1을 사용하고, 다음의 10개의 함수들에 대한 알고리즘 2와 함께 키 2를 사용하며, 그 다음 10개의 함수들을 암호화하기 위하여 알고리즘 1과 함께 키 3을 사용한다.
3. 단일의 키를 사용할 때에는, 모든 기함수들(odd functions)을 암호화/복호화하기 위하여 키 1을 사용하고, 모든 우함수들(even functions)을 암호화/복호화하기 위하여 키 2를 사용한다.
4. 함수들 1, 4, 8, 12...를 암호화/복호화하기 위하여 키 1 및 알고리즘 1을 사용하고, 함수들 2, 5, 9, 13...을 암호화/복호화하기 위하여 키 2 및 알고리즘 2를 사용하여, 함수들 3, 6, 10, 14...를 암호화/복호화하기 위하여 키 3 및 알고리즘 3을 사용한다.
상기 함수들을 암호화하기 위하여, 공개/비밀 키 암호화(공개 키 인프라스트럭쳐(PKI))를 사용하는 것이 또한 가능하다. 이것은 하드웨어가 PKI 복호화를 신속 히 수행할 수 있는 고속 CPU를 지원하는 것을 필요로 하거나, 상기 라이브러리가 초기화 또는 런타임에 있을 때 상기 라이브러리가 복호화될 수 있는 것을 필요로 한다.
상기 함수들이 전술한 바와 같은 상기 방법들 중 하나를 사용하여 암호화될 때, 런타임 실행시에, 라이브러리 초기화시에, 또는 상기 함수의 실행 직전과 같은 라이브러리 실행 동안의 어떤 시점에 발생할 수 있는 클라이언트 라이브러리에 의하여 추가되는 함수 복호화 단계가 존재할 수 있다.
함수 암호화/복호화를 추가하는 하나의 방법은, 상기 키 및 알고리즘을 사용하여 각각의 함수를 암호화하는 시퀀서 인스트럭션 암호화 블록 또는 모듈(40)을 사용하여 상기 서버로 하여금 상기 함수들을 암호화하도록 하는 것이다. 상기 암호화된 함수들은 복호화될 필요가 있을 것이고, 상기 클라이언트 코드 라이브러리(100)(도 3)는, 상기 적절한 시퀀서 데이터 복호화 키(들) 및 알고리즘(들)을 사용하여, 시퀀서 인스트럭션 복호화 모듈(140)로 하여금 상기 함수를 복호화할 수 있도록 할 것이다.
다음의 도 4는 몇몇의 함수들의 예와, 그것들이 상기 서버(10) 및 상기 클라이언트(12)의 메모리 내에 어떻게 저장되는지를 보여준다. 예를 들면, 함수 1에 대한 상기 메모리 어드레스에서, 몇몇 종류의 비트 쉬프팅을 수행하기 위한 쉬프트 인스트럭션 시퀀스(310)가 존재할 수 있다. 함수 2는 배타적 논리합 함수를 수행하는 XOR(312) 함수일 수 있다. 함수 3은 AES.n(314)에 보여지는 바와 같이 AES 알고리즘의 부분적인 구현이다. 함수 4는 모든 라운드들을 포함하는 완전한 AES(316) 알고리즘이다. 함수 5는 입력 데이터를 출력 데이터에 매핑하는 매핑 알고리즘(318)이다. 함수 6은 변환, 쉬프팅, 셔플링 등의 일종을 수행하는 변환 알고리즘(320)이다. 함수 7은 암호학적 또는 통상의 해시 계산을 수행하는 해싱 함수(322)이다. 도 4는 설명상의 편의를 위하여 단지 9개의 함수들만을 보여준다. 그러나, 수백의 또는 수천의 함수들이 상기 라이브러리들에 포함될 수 있다.
도 4에 도시되고 본 특허 출원의 다른 부분에 설명된 상기 함수들은, 추가적으로 작은 유닛들로 분해될 수 있고, 상기 수행되는 프로세싱은 상기 데이터를 정확히 프로세스하는 데에 필요한 적절한 작은 기능적인 조각들을 실행할 것이다. 예를 들면, 상기 AES 알고리즘(316)은 30, 40, 50 또는 더 많거나 더 적은 함수들로 분해될 수 있다. 따라서, F1 내지 Fn과 같은 각각의 기능적 블록은, 완전한 알고리즘을 포함하는 기능적 프로세싱 블록이거나, 알고리즘의 조각 또는 프래그먼트일 수 있다. 상기 조각 또는 프래그먼트란, 다중 소스 코드 라인의 알고리즘에서 소스 코드의 단일의 라인 또는 일부분일 수 있다.
본 발명의 또 다른 측면은, 클라이언트 라이브러리를 포함하는 상기 함수들에 추가적인 복잡성을 부가하기 위한 플래그 해킹 시도들에 사용되거나 사용되지 않을 수 있는 "보거스(Bogus)" 함수들(324)를 선택적으로 포함하는 것이다. 해킹 시도들을 표시하는 데에 사용될 때, 보거스 함수는 결코 실행되어서는 아니 되는 함수가 유력한 해킹 시도로 인하여 실행되었다는 것을 나타내는 인디케이터를 설정할 것이다.
도 4는 상기 코드를 더욱 이해하기 어렵게 만들기 위하여 추가되는 위 장(Camouflage) 함수들(326)을 보여준다. 사실, 상기 위장 함수들은 실제로 호출되는 상기 함수들보다 보다 더 인식 가능한 함수들일 수 있다. 많은 위장 함수들의 하나는, DRM 프로세스의 일부가 아닌 데이터 상에서 동작하는 전체 AES 알고리즘의 텍스트 북 소프트웨어 예제일 수 있다. 반면에, 상기 DRM 프로세싱에 사용되는 상기 실제의 AES 프로세스는 텍스트 북 알고리즘처럼 보이지 않고 수십 개의 서브 함수 조각들로 분해될 수 있다.
많은 보거스 함수들 및 위장 함수들에 더하여, 클라이언트 라이브러리 내에 포함되는 다수의 유사하게 보이거나 동일한 함수들(서로 다른 데이터 상에서 동작하는)이 존재할 수 있다. 이것은 함수의 일부 또는 전부를 수행하는 각각의 코드 조각을 갖는, 많은(예를 들면, 12) 매우 유사한 코드 조각들이 존재할 수 있다는 것을 의미한다. 그리고, 각각의 서로 다른 버전이 데이터 상에서 동작하거나, 데이터에 접근하는 방식에는 약간의 차이점들이 존재할 수 있고, 이러한 다른(예를 들면, 12) 버전들은 상기 클라이언트 라이브러리 전체를 통하여 확산되어 있다.
다수의 유사하게 보이는 함수들이 상기 클라이언트 라이브러리에 존재할 수 있기 때문에, 특정 함수에 대한 코드를 발견하는 위치에 관한 하나의 위치 지점은 존재하지 않을 것이다. 해커가 상기 AES 복호화를 파악하기 위한 코드를 찾는다면, 그는 AES 복호화 코드처럼 보일 수 있는 코드의 12개, 24개 또는 36개의 서로 다른 버전들을 발견하게 될 것이다. 여기에는, 다수의 서로 다른 해시 함수들, 서로 다른 보거스 함수들, 서로 다른 위장 함수들 및 사용되는 각각의 함수에 대한 유사하게 보이는 다수의 함수들이 존재할 수 있다.
도 5는 도 1의 서버(10)에 의하여 수행될 수 있는 상기 DRM 프로세스에 의하여 데이터를 보호하는 데에서 수행되는 상기 프로세싱 단계들을 보여준다. 이러한 예에서, 상기 입력 데이터는 컨텐츠의 조각에 대한 마스터 컨텐츠 암호화 키(405)이다. 그 후, 상기 마스터 컨텐츠 암호화 키(405)는 일련의 함수들(F1(411) 내지 Fn(419))에 의하여 프로세스 된다. 상기 함수들은 본 특허 출원의 다른 영역들에서 설명되는 바와 같은 데이터를 보호하기 위하여, 암호학적 함수들, 변환들, 매핑들 등을 수행한다. 어떠한 수의 함수들도 실행될 수 있고, 상기 함수들은 도 2, 3 및 4와 관련하여 상기 설명된 함수들 및 다른 함수들로부터 선택된다. 도 5에서, 상기 용어(F1(411), F2(412), F3(413), F4(414))가 사용된다. 그러나, 상기 실제의 구현에 있어서는, 상기 숫자들은 순차적이 아니라 보다 더 임의적일 수 있다.
컨텐츠의 조각에 대한 상기 마스터 컨텐츠 암호화 키(405)를 암호화하는 DRM 프로세스는 해커들이 상기 컨텐츠를 도용하기 위한 시도로부터 상기 컨텐츠 키를 보호하기 위하여 사용된다. 마스터 컨텐츠 암호화 키(405)는, 상기 마스터 컨텐츠 암호화 키(405)의 DRM 보호 버전을 생성하기 위하여, 그 위에서 수행되는 일련의 함수들을 가지며, 상기 DRM 보호된 마스터 컨텐츠 암호화 키(495)라고 불린다. 도 5는 마스터 컨텐츠 암호화 키(405)에 적용되는 DRM 프로세스를 보여주는데, 어떠한 데이터도 도 4에 도시된 상기 단계들에 의하여 프로세스 될 수 있고, 상기 프로세스는 마스터 컨텐츠 암호화 키 만으로 한정되지 않는다. 예를 들면, 시스템에서 사용되는 어떠한 종류의 데이터도, 단계(405)에서 입력될 수 있고, 단계(495)에서 프로세스 되고 출력될 수 있다.
도 5에서, 상기 단계들은 기능적 단계들(F1, F2, F3,..., Fn)로 라벨링된다. 상기 기능적 지시자들(designators)(F1, F2, F3 등)은 상기 데이터에 적용되는 일련의 기능적 단계들을 지시하는 데에 사용된다. 실제로는, 상기 함수들(F1, F2, F3 내지 Fn)은 상기 DRM 시퀀스 키에 의하여 결정된 함수들일 수 있다. 그리고, 상기 함수들의 실제 시퀀스는 상기 DRM 시퀀스 키에 의하여 정의될 수 있기 때문에, 프로세싱 단계들의 상기 시퀀스는 프로그래밍 가능하다.
각각의 함수 블록은, 추가적으로 작은 기능적 블록들로 분해될 수 있고, 상기 함수 블록 프로세싱은 상기 기능적 프로세싱 블록에 적용되는 추가적인 데이터(키들, 변수들, 변환 데이터, 제한 조건들)없이 또는, 추가적인 데이터(키들, 변수들, 변환 데이터, 제한 조건들)를 가지고 수행될 수 있다.
이러한 실시예들은 도 2의 서버가 서버 및 클라이언트 사이에 전송되는 DRM 보호된 데이터의 각각의 조각에 유일한 DRM 프로세스를 적용할 수 있게 해 준다. 상기 시퀀스 데이터 키(도 2의 60)를 변경함으로써, 보호되는 데이터에 적용되는 상기 DRM 프로세스는 변경될 것이다. 이것은 상기 시퀀스 데이터(60)를 변경함에 의하여, 상기 실제의 DRM 프로세싱 함수들 또는 사용되는 상기 키들 또한 변경될 것이라는 것을 의미한다. 도 5에 보여지는 상기 프로세싱 단계들을 수행하는 각각의 개별적 클라이언트는, 분리된 또는 공통 키들을 사용할 수 있고, 심지어 분리된 가상 머신 또는 암호화된 상태 머신 프로세싱 방법들 또는 인스트럭션 세트들을 사용할 수 있다. 각각의 분리된 가상 머신 또는 암호화된 상태 머신은 클라이언트 유일한 키들 또는 모든 클라이언트들에 대하여 공통된 키를 사용하여 개별적으로 암 호화될 수 있다.
아래의 테이블은 DRM 프로세스 함수 코드들(주소들, 상태들, 또는가상 머신 인스트럭션들과 유사함)에 매핑되는 상기 DRM 시퀀스 키의 논리적 분해를 제시한다. 따라서, DRM 시퀀스 키 데이터는, 상기 DRM 프로세스의 일부로서 적용되는 함수들의 시퀀스를 지시하기 위하여 사용된다.
함수 블록 분해
필요한 프로세싱
F1 = 3, 4 비트를 갖는 XOR 데이터 바이트
F2 = 우측으로 3비트 쉬프트
F3 = 맵 함수들 8을 사용하는 맵
F4 = 변환 함수 17을 사용하는 변환
F5 = 완전한 128 비트 AES 암호화
알고리즘
F1 = 코드 조각 33
F2 = 코드 조각 137
F3 = 코드 조각 8
F4 = 코드 조각 246
F5 = 코드 조각 227
도 6에 도시된 바와 같이, 상기 DRM 시퀀스 키(도 2 및 3에서 시퀀스 데이터(60 및 160))는 암호화되어 예를 들면, 상기 서버에 의하여 상기 클라이언트에 전송된다. 암호화는 클라이언트에 유일하거나 그룹 또는 모든 클라이언트들에 대하여 공통될 수 있다. 대안적으로, 상기 DRM 시퀀스 키는 암호화되지 않거나 SSL을 사용하여 암호화된 채로, 상기 클라이언트에 전송될 수 있다. 상기 DRM 시퀀스 키의 보호는 여기서 설명된 프로세싱을 사용할 수도 있다. 상기 DRM 시퀀스 키는 예를 들면, 상기 마스터 컨텐츠 암호화 키에 대한 DRM 시퀀스 키를 보호하기 위하여 사용되는 또 다른 DRM 시퀀스 키를 사용하여 암호화될 수 있다. 이것은 시스템 내의 데이터의 각각의 키 또는 각각의 조각이 상기 DRM 시퀀스 데이터에 의하여 정의되는 클라이언트 유일한 DRM 프로세싱에 의하여 보호될 수 있다.
암호화된 데이터를 프로세스 하기 위하여 사용되어야 하는 단계들의 시퀀스를 지시하는 데에 사용되는 상기 DRM 시퀀스 키를 전송하는 방법은 상기 추가적인 DRM 시퀀스 키 데이터에 의하여 스스로 보호될 수 있다. 클라이언트 및 서버 사이의 상기 프로토콜은, 암호화의 클라이언트 유일한 프로토콜 계층을 생성하기 위하여, 프로토콜 계층 DRM 시퀀스 키를 사용할 수 있다. 물론, 실시예들은 다양한 종류의 암호화/복호화 어플리케이션에 사용될 수 있고, 상기 기술들은 상기 라이브러리의 다른 부분들을 보호하기 위하여, 상기 동일한 라이브러리 내에서 재사용될 수 있다.
도 7A, 7B 및 7C는, 각각의 클라이언트에 의하여 상기 입력 데이터에 적용되는 함수들의 시퀀스를 보여줌으로써, 세 개의 서로 다른 클라이언트들이 상기 DRM 프로세스를 적용하는 방법을 나타낸다. 도 7A에서, 클라이언트 1은 상기 데이터를 보호하기 위하여 상기 함수들 33, 137, 8 및 246을 적용하고, 상기 시퀀스 플로우 는 상기 시퀀스 데이터(도 3의 시퀀스 데이터(162))에 의하여 부분적으로 또는 완전하게 결정된다.
도 7B에서, 클라이언트 2는 상기 함수들 137, 8, 8, 104를 적용하고, 클라이언트 3은 함수들 61, 4, 307 및 175를 실행함으로써, 상기 DRM 프로세스를 수행한다. 도 7A, 7B 및 7C에 나타낸 상기 함수들 각각은, 잘 알려진 보안 암호화 알고리즘과 동등한 최소의 암호화 강도를 가질 수 있다. 데이터를 복호화(및 해킹)하기 위하여 필요한 실제의 프로세싱은, 각각의 클라이언트에 대하여 유일할 것이다. 도 7A, 7B 및 7C에서, 클라이언트에 특화된 DRM 프로세싱은 유일하게 수행된다. 왜냐하면, 시퀀스 데이터가 유일하거나, 상기 클라이언트 라이브러리(상기 함수들의 메모리 레이아웃을 포함함)가 유일하거나, 양자가 모두 유일하기 때문이다.
스마트 카드들을 사용하는 시스템들에서, 클라이언트에 의하여 사용되는, 상기 시퀀싱 데이터, 키 데이터 또는 상태 머신 데이터의 전부 또는 일부를 상기 스마트 카드에 부가하는 것이 가능하다. 대안적으로, 스마트 카드 기반의 시스템 디자인은, 스마트 카드 데이터 및 상기 스마트 카드 외부에 있는 다른 데이터 모두가 필요할 수 있다.
도 8은 상기 서버에 의하여 수행되는 도 7로부터의 프로세싱 플로우를 암호화하는 프로세스의 흐름도이다. 도 8에서, 'ENC'라고 표시된 요소(625, 635, 645)는 상태 머신, 상태 테이블들, 또는 데이터 중 어느 하나일 수 있는데, 상기 데이터는, 프로세싱 플로우, 가상의 인스트럭션들, 또는 상기 디바이스 CPU 상에서 또는 상기 디바이스 스마트 카드(있다면)에서 실행될 수 있고 상기 디바이스 펌웨어 에 지역적으로 존재하거나 상기 디바이스에 다운로드될 수도 있는 코드를 얻는 데에 사용된다.
'ENC' (625, 635, 645)는 메모리에 저장될 때에 암호화되고, 상기 프로세서가 예를 들면, 단계(625)를 실행하거나 프로세싱할 때에만 복호화된다. 도 8(요소(645, 635, 625)에 의하여 표현되는 상기 프로세싱은, 도 9에서 요소(845, 835, 825)로서 상기 흐름도에 표현되는 클라이언트 프로세싱 단계들에 의하여, 역으로 될 것이다.
도 10을 참조하면, 도 10은 상기 서버에 의하여 구현될 수 있는 상기 마스터 컨텐츠 암호화 키(1310)(또는 다른 데이터)를 보호하기 위한 프로세스의 표현이다. 상기 DRM 프로세스 키 잠금(keying) 블록(1320)은, 상기 마스터 컨텐츠 암호화 키(1310) 또는 어떠한 데이터를 보호하기 위하여 적용되는 상기 키들의 시퀀스 및 데이터 프로세싱(1330)을 정의하는 데에 사용되는, 코드, 데이터(상태 머신, 시퀀스 또는 키 잠금 등) 또는 다른 인스트럭션들을 포함한다.
DRM 프로세스 키 잠금 블록(1320) 및/또는 DRM 프로세스 인스트럭션 상태 머신, 가상 머신 인스트럭션 프로세서 또는 총합적이나 개별적으로 DRM 프로세스(1330)라고 불리는 시퀀서는 클라이언트 라이브러리 프로세싱을 추가적으로 혼란화하기 위한 방법으로 암호화될 수 있다. 상기 DRM 프로세스를 정의하는 데에 사용되는 DRM 프로세스 키 잠금 데이터(1320)는 여기서 정의된 상기 방법들을 사용하여 암호화될 수도 있다.
상기 DRM 프로세스 키 잠금 데이터(1320)을 수정함으로써, 상기 프로세싱 단 계들은 변경될 수 있다. 왜냐하면, 상기 DRM 프로세스 키 잠금 데이터(1320)는 상기 DRM 프로세스(1330)에 의하여 사용되는 프로세싱 단계들의 시퀀스를 정의하기 때문이다.
일 실시예에 있어서, 각각의 클라이언트 라이브러리는, 그것이 입력 데이터(상기 DRM 프로세스, 도 10의 요소 1330)를 보호하기 위하여 적용되는 프로세싱을 실행하는 방식에 있어서 유일하다. 상기 DRM 프로세스 키 잠금(도 10의 요소 1320)은 여기에서 설명된 기술들을 DRM 프로세싱 키 잠금(1320) 및 상기 DRM 프로세스(1330)의 양자에 적용하는 각각의 클라이언트에 대하여 유일할 수 있다.
이와 같이 함으로써, DRM 프로세스(1330)만이 이러한 기술들을 사용할 때, 보다 더 혼란화된 실행 환경을 제공할 수 있다. 따라서, 상기 DRM 프로세스 키 잠금(1320)은 그 자신의 키들과 프로세스 플로우를 가질 수 있고, 이것은 유일한 데이터(1310)를 보호하기 위한 상기 DRM 프로세스에 부가하여, 상기 키 프로세싱 및 클라이언트 프로세싱을 유일하게 만든다.
해커들이 DRM을 해킹하기 위해서는, 상기 DRM 프로세스 키 잠금 데이터(1320) 및 DRM 프로세스(1330) 블록들을 모두 해킹하여야 할 것이다. 각각의 블록(1320, 1330)은, 각각의 클라이언트 또는 각각의 컨텐츠 다운로드에 대한 런타임 코드 또는 다른 어떤 입자성에 적용되는 유일한 암호화를 갖는 클라이언트에 대하여 유일할 수 있다.
이것은 상기 DRM 프로세스 키 잠금(1320)은, 상기 DRM 보호를 적용하고 제거하기 위하여 수행될 필요가 있는 상기 단계들을 시퀀싱할 때 사용되는 추가적인 키 잠금 데이터(미도시 됨)를 사용하여, 키 잠금될 수 있다. 마찬가지로, DRM 프로세스(1330)가 DRM 프로세스를 실행하는 방식은, DRM 시퀀스 데이터(또는 프로세스 키 잠금(1320) 데이터)의 형태로 된 시퀀스 데이터를 사용하는 것이고, DRM 프로세스(1330)가 실제로 상기 DRM 프로세스 키 잠금(1320)을 내부적으로 프로세스 하는 방식도 키 잠금이 이루어질 수 있다(미도시 됨).
여기에 설명된 기술들은 키 데이터, 시퀀스 데이터 및 다른 어떤 데이터를 보호하고, 여기에 설명된 상기 프로세스들을 사용하여 DRM 보호된 각각의 데이터 항목의 상기 내부 프로세싱을 혼란화하기 위하여 반복적으로 적용될 수 있다.
일 실시예에 있어서, 상기 VM 인스트럭션 세트는, 키 또는 클라이언트에 적용되는 상기 DRM을 정의하기 위하여 사용되는 상기 VM 인스트럭션 시퀀스가 그러하듯이, 각각의 클라이언트에 대하여 키 잠금 가능(keyable) 하다. 키 잠금 가능한 VM 인스트럭션 세트는 하나이고, 상기 인스트력션 세트는 하나이고, 여기서 상기 인스트럭션 세트는 상기 키를 사용하여 암호화되거나, 상기 VM에 의하여 수행되는 상기 실행 시퀀스는 키, 즉, 상기 인스트럭션 세트를 암호화하기 위한 암호화 키, 또는 상기 인스트럭션 시퀀싱 실행 플로우를 제어하기 위한 서로 다른 키, 또는 양자에 의하여 제어된다.
상기 DRM 프로세싱 시퀀스는 상기 VM 인스트럭션 세트와 함께 키 잠금 가능하고, 양자는 각각의 특정한 클라이언트 디바이스 또는 컨텐츠의 조각 또는 양자에 대하여 유일하게 키 잠금 가능하다.
상기 DRM 시퀀스 키 데이터는 상기 서버에 의하여 암호화되고 상기 클라이언 트에 의하여 런타임으로 복호화될 수 있다. 상기 DRM 시퀀스 키 데이터 복호화를 위한 상기 암호화 및 복호화는 시간에 따라 변경될 수 있다. 이것은 해커들이 클라이언트 라이브러리 해킹을 재시작하도록 만든다. DRM 시퀀스 키 프로세싱, DRM 프로세싱 및 클라이언트 라이브러리는 각각의 라이브러리에 대하여 유일하거나, 상기 항목들 중 어느 하나는 각각의 클라이언트에 대하여 유일할 수 있다.
암호화되는 상기 DRM 시퀀스 키 데이터는 PKI 키들 또는 디피-헬만(Diffie Hellmen) 시퀀스에 의하여 생성된 키들, 또는 PKI 및/또는 디피-헬만 및/또는 클라이언트 특화된 키 생성 코드의 조합을 사용하여 암호화될 수 있다.
상기 DRM 키 잠금 프로세스를 상기 DRM 프로세싱의 각각의 위상에 적용함으로써, 상기 DRM 설계자들은, 해커로 하여금 다중의 암호화된 VM들을 역 가공(reverse engineer)할 수 밖에 없도록 강제하는 각각의 프로세싱의 위상에 대한 동일하거나 서로 다른 키 잠금 방법들과 함께, 서로 다른 가상 머신들을 사용할 수 있다. 상기 DRM 프로세싱의 각각의 조각은 보안을 향상시키기 위하여 분리된 암호화를 사용할 수 있다.
여기에 설명되는 상기 시스템들 및 방법들은 클라이언트에 특화된 방식으로 클라이언트 상에 저장된 데이터를 보호화기 위하여 사용될 수도 있다. 예를 들면, 네트워크 연결 없이(오프라인 DRM) 시청될 수 있는 영화 파일을 보호하기 위하여 사용되는 마스터 컨텐츠 키는 클라이언트 유일한 프로세싱 단계들을 사용하여 저장된 상기 영화를 복호화하기 위해, 상기 컨텐츠 특정한 키들 데이터가 필요하도록 요구할 수 있다. 이것은 상기 DRM 시퀀싱을 사용함에 의하여, 그리고 클라이언트에 의하여 수행되는 각각의 영화 다운로드에 대하여 유일한 시퀀스 데이터를 가짐에 의하여 수행될 수 있다. 이와 같이, 하나의 클라이언트 상의 컨텐츠의 각각의 조각에 대한 상기 복호화 키들은, 컨텐츠의 각각의 조각에 대하여 유일할 것이고, 각각의 클라이언트 디바이스에 대한 클라이언트 라이브러리도 유일할 수 있다. 이러한 구성의 결과로서, 해커는 글로벌 DRM 해킹을 불가능하게 만드는, 하나의 클라이언트에 대한 컨텐츠의 하나의 조각 내로 고립될 수 있다.
이러한 시스템들 및 방법들은 상기 스마트 카드 내의 VM 인스트럭션 세트 키 잠금 알고리즘과 함께 스마트 카드들에 적용될 수도 있다. 상기 스마트 카드(ECM/EMM 데이터를 포함하는 어떠한 종류의 데이터)를 사용하는 상기 클라이언트는, 스마트 카드의 정적 분석을 방지하기 위하여, 상기 스마트 카드로 접속하는 상기 클라이언트의 정적 분석을 방지하기 위하여, 시퀀스 데이터를 상기 스마트 카드 내에서 내부적으로 사용할 것이다. 왜냐하면, 복호화 키들은 필수적이고, 상기 복호화 키들은 상기 원시(native) 라이브러리의 일부가 아니라, 상기 DRM 시퀀스 데이터나 상기 서버로부터 전송된 다른 데이터의 일부일 것이기 때문이다.
여기서 설명되는 상기 시스템들 및 방법들의 설계에 있어서, 코드 스파이들(spies)도 포함될 수 있다. 코드 스파이들은 상기 서버에 되돌아 보고를 수행하는 서브-시퀀스를 위한 데이터를 수집하는 코드 또는 함수들의 조각들이다. 또는, 그것들은 해킹 시도들을 감지하기 위하여 사용될 수 있는 조건들을 수립하기 위하여, 상기 클라이언트 내에서 상기 런타임 프로세싱 동안 사용되는 데이터를 수집한다. 이러한 조건들은 해킹이 의심될 때, 컨텐츠 배포 시스템의 헤드 엔드(또는 다 른 적절한 수신자)에 되돌아 보고될 것이다. 또는 이러한 조건들은 상기 클라이언트 소프트웨어의 정확한 실행을 위하여 필요한 데이터를 생성할 것이다.
예를 들면, 코드 스파이는 예컨대 시리얼 번호를 포함하는 하드웨어 레지스터 값을 얻을 수 있고, 그 후, 상기 시리얼 번호는 해싱되어 비자명하게 된다. 그 후, 상기 해싱된 시리얼 번호는 어떤 시간에 또는 어떤 이벤트 후에 메모리로부터 분리되어 저장된다. 그 후, 상기 스파이 데이터가 수집되는(시리얼 번호가 독출되고 해싱되는) 시간 또는 바람직하게는 이후의 시간에, 또 다른 코드 함수는 상기 스파이 데이터를 사용하거나, 상기 서버가 서버 단의 복제 감지를 할 수 있도록 상기 서버로 되돌려지는 스파이 데이터를 보고할 것이다.
코드 조각들은 새로운 것을 만들기 위한 코드 조각을 개인화하기 위하여 필요하고 상기 해커에 의하여 예상될 수 없는 데이터에 대한 홀더들(holders)을 배치할 수도 있다. 그리고, 상기 코드 조각의 활성화는, 임의의 시간 또는 상기 클라이언트가 구동되는 시간마다 발생된다.
코드 조각이 홀더를 배치하는 일 예는 다음과 같이 동작한다.
클라이언트 라이브러리 연산의 첫 10일 동안, 상기 해커는 메모리 어드레스를 읽는 미끼 코드(decoy code)의 조각을 발견하고, 상기 메모리 어드레스에 있는 데이터는 뒤따르는 클라이언트 라이브러리 프로세싱에서 중요하지 않은(미끼) 방식으로 사용된다. 상기 미끼 코드는 상기 DRM 시퀀스 키 데이터에 의하여 결정되는 디폴트 프로세싱 경로이다.
이후의 시간에, 상기 DRM 시퀀스 키 또는 데이터는 변경되고 상기 변경은위 조(tempering)를 감지하기 위하여 상기 클라이언트(스파이 코드)를 탐색하는 새로운 코드를 유발한다. 예를 들면, 상기 DRM 프로세싱의 첫 10일 동안, 상기 미끼 루틴은 무결(innocent)(특정한 칩 또는 클라이언트에 특화된 데이터를 읽지 않음)하게 보이는 데이터를 수집하였고, 그것은 정적 데이터의 읽고 쓰기를 수행하는 것으로 보인다. 그러나, 상기 연산의 11일에 또는 상기 DRM 시퀀스 데이터가 변경될 때, 상기 미끼 메모리 억세스 코드는 실행되지 않고, 스파이 코드라고 불리는 새로운 코드의 조각이 구동된다.
상기 스파이 코드는 클라이언트 하드웨어 관련된 식별 데이터 또는 시리얼 번호 또는 MAC 어드레스 또는 상기 서버 또는 헤드 엔드에 되돌아 보고되는 퀀텀 데이터를 읽을 것이고, 상기 시스템 프로세싱의 다른 부분들에 사용되는 시리얼 번호와 일치하지 않는 상기 클라이언트 디바이스 시리얼 번호와 같은 복제를 감지하기 위하여 사용된다. 왜냐하면, 해커가 상기 첫번째 10일 동안 상기 라이브러리를 관찰함에 의하여 상기 라이브러리를 해킹할 때, 상기 해커에 의하여 스풉(spoof)되었기 때문이다.
상기 서버 단이나 클라이언트 단의 데이터는 그것이 정확하고 위조되지 않았는지를 확인하기 위하여 상기 스파이 데이터를 체크하는 데에 사용될 것이다. 상기 DRM 시퀀스 데이터 또는 클라이언트 라이브러리 내부 이벤트의 변경과 같은 트리거 이벤트가 발생할 때까지, 스파이 코드가 상기 클라이언트 라이브러리에 추가될 수 있고 스파이 코드 프로세싱이 잠재적으로 유지될 수 있는 제한되지 않는 방식들이 존재한다.
미끼 코드 함수들 및 조각들은 미리 계획된 클라이언트 라이브러리 또는 DRM 프로세싱 단계들 또는 프로세싱 DRM 단계들에서 사용될 수 있는 함수들이며, 클라이언트 라이브러리 해킹 및 복제를 감지하기 위하여, 상기 클라이언트 또는 서버에 의하여 사용되는 데이터(스파이 데이터)를 수집하기 위한 것이다.
도 11은 클라이언트 특화된 가상 머신, 또는 특정 클라이언트에 대하여 유일하게 암호화되는 시퀀스 데이터의 간략화된 블록도이다. 상기 VM 데이터 키(1240)는 상기 가상 머신 또는 시퀀서 데이터 플로우 또는 양자를 복호화하기 위하여 상기 클라이언트에 의하여 사용될 것이다. 이러한 VM 데이터 키(124)는 각각의 클라이언트에 대한 유니캐스트 전달 방식으로, 또는 하나 또는 그 이상의 클라이언트들에 대한 다중 전달 방송을 사용하여, 또는 상기 클라이언트 내의 스마트 카드로부터 얻어지는 데이터(스마트 카드 초기화 동인 미리 전달됨)를 사용하거나, 다른 데이터 교환 메커니즘을 사용함에 의하여, 상기 클라이언트에 전달될 수 있다. 상기 VM 키 데이터는 하나 또는 그 이상의 키들일 수 있다.
추가적인 실시예에 있어서, 코드 조각들에 대한 다수의 키들, 상기 가상 머신, 런타임 무결성(integrity)체크 코드들 및 런타임 보안 익스텐션들(extensions)이 존재할 수 있다. 상기 키들 또는 데이터는, 상기 시스템에서 사용되는 각각의 키 또는 데이터에 대한 서로 다른 암호화 알고리즘들로 보호될 수 있다. 예를 들면, 요소에 대한 키 블록은 상기 클라이언트 라이브러리의 코드 조각들을 암호화하기 위하여 다중 암호화되고 혼란화된 키들을 사용할 수 있다. 따라서, 그 요소의 암호화는 하나 또는 그 이상의 키들로 구성될 것이고, 예를 들면, 이러한 키들에 의하여 보호되는 상기 코드 조각들 각각은 서로 다른 암호화/복호화 알고리즘을 사용할 수 있다.
예를 들어, 상기 다중의 키 시퀀스의 키 1을 사용하는 프로세싱은 AES-ECB 모드 암호화를 사용할 수 있고, 키 2를 사용하는 프로세싱의 제2 부분은 삼중-DES와 같은 서로 다른 알고리즘을 사용할 수 있다. 키 3은 블로우피시(BlowFish)를 사용할 것이고, 키 4는 AES-CTR 모드를 사용할 것이다. 이상에서 설명된 바와 같이, 하나의 프로세싱 블록 또는 데이터에 대한 다중의 키들의 사용은, 이러한 블록들 내에서 수행되는 상기 프로세싱을 성공적으로 해킹(또는 이해)하기 위해서는 반드시 해킹되어야 하는 추가적인 보안 계층들 또는 상기 데이터의 보호를 제공한다.
예시적인 목적으로, 상기 시퀀스 플로우 데이터는 88 바이트의 길이를 갖는 것으로 가정한다. DRM 시퀀서 플로우 데이터의 암호화는 하나의 키 또는 하나의 암호화 알고리즘만을 사용하는 것을 필요로 하지 않는다. 그 보다는, 상기 시퀀서 플로우 데이터는, 상기 시퀀서 플로우 데이터의 첫번째 256비트(32 바이트)에 대한 AES 및 이후 삼중의 DES를 사용하거나, DRM 시퀀서 데이터의 192비트(24 바이트)에 대한 AES 및 이후 265비트(32 바이트)에 대한 블로우피시(BlowFish)를 사용하는 것과 같이, 암호화 알고리즘들의 조합을 사용할 수 있다. 이러한 예에서, 상기 88 바이트의 DRM 시퀀서 플로우 데이터를 보호하기 위하여 사용되는 이러한 세 가지 서로 다른 암호화 알고리즘들 각각에 대하여 단일의 키가 사용될 수 있다. 또는, 자신의 키를 갖는 DRM 시퀀서 플로우 데이터의 부분 상에서 동작하는 각각의 알고리즘으로, 상기 88 바이트 시퀀스를 보호하기 위하여 다중의 키들(2 또는 3 이상)이 사용될 수 있다.
몇몇의 설계에 있어서, 도 11의 상기 클라이언트 키는 클라이언트 기반으로 클라이언트 상에서 변경될 필요가 없고, 클라이언트들의 그룹들 또는 모든 클라이언트들에 대하여 공통 키를 가질 수 있다. 그러나, 상기 시스템들 및 방법들은 디자인들을 지원할 수도 있는데, 여기서, 도 11의 상기 클라이언트 키(1242)가 클라이언트-대-클라이언트 기초 또는, 지역적 기초 또는, 헤드-엔드(또는 서버) 기초, 또는 국가 기초 또는 상기 DRM 소프트웨어 설계자가 희망하는 다른 단위로, 변경될 수 있다. 실시예들은 또한, 상기 서로 다른 클라이언트 키(1242) 및 DRM 프로세싱 방법들은, 상기 클라이언트 라이브러리 소프트웨어 디자인을 변경할 필요없이, 각각의 클라이언트나 영역에 대하여 유일한 것을 허용한다. 이와 같이, 다중의 서로 다른 DRM들은 여기에서 설명된 상기 기술들을 사용하여 하나의 소프트웨어 코드 기초로부터 유도된다.
상기 DRM 프로세싱 방법에 대하여 변화가 필요할 때, 상기 VM 키 잠금(keying) 데이터는 상기 VM을 잠그기 위해 사용될 수 있을 뿐만 아니라, 다중의 VM들 및 복호화 알고리즘들이 단일의 클라이언트 라이브러리 코드 이미지로 생성될 때, N개의 VM들 또는 시퀀서들 중에서 하나를 선택할 수도 있다. 이것은, 단일의 클라이언트가 클라이언트 디바이스에 배포될 수 있도록 허용한다. 여기서, 상기 단일의 클라이언트는 서로 다른 키 잠금 및 복호화 알고리즘들을 사용할 수 있는 다중의 DRM 프로세싱 방법들을 포함한다.
클라이언트 라이브러리 릴리스 이후에, 제1 DRM 프로세싱 방법 및 관련된 키 잠금 데이터 및 복호화 알고리즘은 사용되지만, 상기 다른 DRM 프로세싱 방법들 및 상기 클라이언트 라이브러리 내의 VM들은, 사용되고 있는 제1 DRM 프로세싱 방법이 손상되었다는 염려가 있을 때까지, 잠재적으로 남아 있다.
이와 같이, 상기 단일의 클라이언트 라이브러리는 서로 다른 가상 머신들 또는 잠재적인 시퀀스들을 포함할 수도 있다. 그리고, 상기 DRM 키 잠금이 변경될 때, 상기 제1 DRM 프로세싱 및 키 잠금 방법들이 사용되었던 상기 클라이언트 라이브러리의 연산과 비교해서 매우 다른 런타임 실행 환경이 활성화된다.
이러한 매우 다른 런타임 환경은 다음 중 하나 또는 그 이상을 변경함에 의하여 비롯된다: DRM 키 잠금; 또는 선택된 VM이나 시퀀스; 또는 DRM 프로세싱 키 잠금. 이것은, 클라이언트 라이브러리들이 작성될 수 있도록 해 주는데, 상기 클라이언트 라이브러리들은 새로운 클라이언트 라이브러리 DRM을 다운로드 할 필요 없이, 상기 첫 번째 사용된 DRM 프로세싱 방법에 해킹이나 보안 브리치(breech)가 발생한 경우에는 변경될 수 있다. 상기 클라이언트 라이브러리는 상기 클라이언트 라이브러리의 외부에 있는 키 잠금 데이터를 사용할 것이기 때문에, 해커는 상기 잠재적인 DRM 프로세싱 방법들이 상기 서버에 의하여 활성화되기 이전에는 그것들을 해킹할 수 없다.
이제 우리는 개발 환경의 일 실시예를 간단히 설명할 것이다.
- 50 내지 100의 소프트웨어 함수들(도 2의 F1-151에서 Fn-159까지) 또는 상기 DRM 프로세싱을 구현하는 데에 사용될 수 있는 코드 조각들을 생성한다.
- 전프로세서(preprocessor)에서, 상기 50 내지 100의 코드 조각들을 더 큰 숫자(1000 또는 그 이상)의 코드 조각들, 함수들 또는 함수 조각들로 변경(예를 들어, 모프(morph) 또는 분해)한다. 대안적으로, 수십에서 수백의 코드 조각들을 기록한다. 여기서, 상기 DRM 프로세싱에 의하여 요구될 코드 조각들만이 테스트될 필요가 있다. 상기 DRM 프로세스의 일부가 아니지만 단순한 위장인 코드 조각들은 상기 DRM 프로세스의 일부로서 테스트될 필요가 없고 단지 그것들이 상기 시스템을 매다는 것(hang)을 확실하게 하기 위하여 테스트될 수 있다. 상기 위장 함수들은 상기 DRM 프로세스에 사용되는 실제의 함수들보다 더 실제적으로 보이도록 만들 수 있다. 예를 들면, 위장 AES 알고리즘은 공개 소스 라이센스의 '텍스트 북' 버전의 AES 알고리즘을 사용할 수 있고, 상기 DRM 프로세스에 의하여 사용되는 실제의 AES 알고리즘은 쉽게 식별되는 '텍스트 북' 알고리즘 코딩 기술들 없이도 텍스트-북 버전과 완전히 다르게 보일 수 있다. 또한, 상기 메인 프로세싱 코드가 해커가 코드를 위조하는 것을 감지할 때 위장 함수들이 활성화될 수 있다. 상기 클라이언트 라이브러리는, 상기 위장 코드가 상기 실제 DRM 프로세싱 코드가 아닌 코드 실행 경로를 제공하고 상기 해커에게 잘못된 프로세싱 경로를 전송하도록 실행될 것이다.
- 상기 DRM 시퀀스 데이터에 의하여 정의되는 프로세싱 시퀀스로 DRM 프로세싱 시퀀스를 실행하기 위하여, 상기 코드 조각들 전체를 시퀀싱할 수 있는 하나 또는 그 이상의 시퀀서들 또는 가상 머신들을 형성한다.
- 상기 시퀀서(들) 및 DRM 프로세스를 테스트한다.
- 상기 시퀀서, 또는 시퀀스 컨트롤 정보 또는 시퀀서 데이터 또는 코드 조각들을 암호화하는 하나 또는 그 이상의 시퀀스 인크립터(encryptor)를 형성한다. 여기서, 상기 복호화 키들 및/또는 실행은 "키 잠금"될 수 있고, 디바이스에 런타임으로 다운로드될 수 있으며, 상기 코드 펌웨어 이미지 내에 고정적으로 포함되는 것은 아니다.
- 상기 헤드 엔드로부터 시퀀스 키 잠금 데이터에 의하여 활성화될 수 있는 하나 또는 그 이상의 코드 조각 스파이들을 선택적으로 포함한다. 상기 코드 조각 스파이들은 해킹된 소프트웨어를 감지하고 클라이언트 해킹 및 위조를 감지하는 데에 사용될 수 있는 관련 데이터를 선택적으로 보고하는 데에 사용될 수 있고, 상기 서버에 복제를 보고하거나 상기 클라이언트 내의 이러한 데이터를 이용한다. 스파이 코드는 또한, DRM 시퀀스 키 프로세싱 경로를 비활성화할 수 있고 상기 클라이언트 라이브러리에 포함되는 위장 코드를 실행할 수 있다.
- 상기 수천의 코드 조각들은 DRM 시퀀스 키 잠금 데이터가 그것의 실행을 지시할 때까지 잠재적인 상태로 있을 수 있다. 또한, 상기 DRM 프로세싱에 대한 실행 경로 1은 코드 조각들의 하나의 세트를 사용할 수 있고, 어떤 시간이 지난 후에 상기 DRM 프로세싱은 라이브러리 내의 수십, 수백 또는 수천의 코드 조각들로부터 서로 다른 코드 조각들을 사용할 것이다. 이것은 결국, 하나의 라이브러리 코드 이미지가 서로 다른 버전의 DRM 프로세싱을 포함하고, 상기 DRM 프로세싱이 코드 라이브러리 업데이트 없이 변경될 수 있도록 허용한다. 만약 상기 코드 라이브러리들이 추가적으로 암호화되면, 상기 코드 라이브러리 내에 포함되는 상기 다양한 다른 DRM 프로세싱 시퀀스들은 서로 다른 암호화 키들 및 프로세싱을 사용할 수 있다. 상기 DRM 프로세싱이 변경되면, 그것은 상기 변경이 만들어질 때까지 상기 해커에 의하여 이용될 수 없었던 라이브러리 함수들 및 복호화 키 들의 세트로 변경된다.
상기 코드 라이브러리 내에 포함되거나, 런타임으로 또는 상기 VM 인스트럭션 시퀀싱 또는 시퀀싱 보호/혼란화를 활성화하거나 변경하기 위한 트리거가 전송될 때 상기 서버로부터 동적으로 전송되는 DRM 키 잠금(또는 시퀀싱) 데이터에 기초하여, 상기 시스템의 향상된 버전은 상기 VM 인스트럭션 실행 보호 암호화/복호화를 변경한다. 상기 라이브러리 디자인은 상기 VM 또는 새로운 VM 인스트럭션 또는 새로운 VM 어드레싱 또는 데이터 억세스 내의 새로운 복호화 경로를 활성화하는 활성화 트리거들(또는 컨트롤 비트 변경들)을 포함할 수 있다. 이것은, 상기 이미지 복호화가 입력 데이터 또는 상기 클라이언트나 서버에 의하여 감지되는 이벤트에 기초하여 수행되는 방식을 상기 라이브러리가 변경할 수 있다는 것을 의미한다.
예를 들면, 연산의 첫번째 60일 동안, 상기 코드 이미지 복호화 경로는 복호화를 위한 128 비트 AES를 포함하는 경로를 사용하고, 61번째 날에, 상기 코드 라이브러리는 상기 라이브러리 내의 서로 다른 코드의 삼중-DES 복호화를 사용하는 서로 다른 코드를 실행할 것이다. 상기 삼중-DES 암호화된 코드에 대한 코드 라이브러리를 복호화하는 데에 필요한 키는, 상기 클라이언트 라이브러리 내에 포함되지 않기 때문에, 상기 해커는 삼중-DES 암호화된 코드가 존재하는 것과, 삼중-DES 코드 복호화 라이브러리가 몇몇의 지점에서 활성화되어 있다는 것을 감지하지 못하였을 것이다. 상기 해커는 상기 삼중-DES 코드 이미지에 대하여 난폭한 공격을 할 수 없을 것이다. 왜냐하면, 그것은 먼저 압축된 후에 암호화되고 상기 코드 이미지를 압축하는 프로세스는 난폭한 공격의 어려움을 매우 증가시키기 때문이다. 상기 해커는 상기 코드가 언제 가능하게 될 지, 상기 코드가 무엇을 할 지, 그리고 어떤 스파이 데이터(있다면)가 상기 라이브러리에 포함되는 지를 알지 못한다.
본질적으로, 두 개의 서로 다른 키들로 암호화되거나 두 개의 서로 다른 방식으로 암호화된 둘 또는 그 이상의 코드 이미지들의 병합은, 상기 해커가 해킹할 수 없었던 코드를 포함하는 상기 클라이언트 라이브러리 내에 작동되는 시한 폭탄을 배치하는 것이다. 일 실시예에 있어서, 전술한 내용은 이진의 코드 압축 프로세스 또는 상기 라이브러리의 암호화 이전에 수행되는 다른 혼란화 프로세스로 확장된다. 따라서, 상기 배포된 클라이언트 라이브러리는 암호화 이전에 압축된 이진 코드를 포함한다. 상기 암호화된 데이터는 압축되거나 혼란화되기 때문에, 인스트럭션 세트에 기초한 코드 일람표(dictionary)나 난폭한 공격은 어렵게 된다.
또한, 상기 스파이 코드 섹션에서 설명된 바와 같이 사용될 수 있는 스파이 함수들도 추가될 수 있다.
스파이 데이터는 많은 다른 형태로 형성될 수 있고, 몇몇 예제들은 얼마나 많은 영화들이 시청되었는가와, 어떤 채널이 변경되는 시간 간격과, 언제 상기 클라이언트가 최초로 켜졌는가 등을 포함한다. 그리고, 다른 종류의 퀀텀 데이터가 복제 감지를 수행하는 데에 사용될 수 있다. 상기 퀀텀 데이터는 서로를 다르게 만드는 유일 암호화를 갖는 코드 이미지들을 사용하여 생성될 수 있다.
전술한 바와 같이, 상기 클라이언트 라이브러리는 상기 클라이언트 라이브러리의 다른 부분을 복호화하기 위하여 그 내부에 포함되는 키들을 갖지 않기 때문에, 해커는 단지 상기 라이브러리의 부분만을 역 가공(reverse engineer)할 수 있 다는 점에서, 그것은 특정 클라이언트에 대하여 다른 클라이언트로부터 달라질 수 있다. 상기 클라이언트 라이브러리를 배포하는 하나의 방법은 상기 클라이언트 라이브러리 내에 상기 코드의 제1 동작 부분에 대한 클라이언트 코드 복호화 키들을 포함하지 않는 것과, 상기 클라이언트가 동작하는 동안, 상기 해커가 클라이언트로부터 상기 코드 이미지 복호화 키를 추출하는 것을 강제하는, 클라이언트 런타임에서 얻어지는 클라이언트 라이브러리 또는 함수 암호화 키들(도 2의 64, 66 및 미도시 된 다른 것들)을 요구하는 것이다.
그리고, 상기 라이브러리를 형성하기 위하여 사용되는 둘 또는 그 이상의 서로 다른 함수 암호화 키들이 존재하기 때문에, 사용되는 함수 복호화 키가 변경될 때, 상기 해커들은 상기 클라이언트 라이브러리들을 재차 해킹하여야(정적이지 않은 환경에서 상기 런타임 라이브러리 해킹을 반복하여야) 할 것이다.
상기 시퀀서 또는 VM은 상기 해커들의 주요 공격 지점이기 때문에, 이러한 영역에서의 소프트웨어 디자인은 소위 "최적 실행들"이라고 불리는, 다음을 포함하는 소프트웨어 보호의 방법들을 사용할 수 있다:
- 각각의 코드 이미지를 디지털적으로 사인하는 것;
- 상기 코드가 수정되지 않았고, 디버거들(debuggers)이 첨부되지 않았고, 코드 중단 지점(breakpoint)들이 삽입되지 않았다는 것을 확인하는 런타임 코드 무결성 체크;
- 바람직하게는 다중의 암호화 키들 및 다중의 시퀀싱 키 잠금 데이터를 사용하고, 다중의 암호화/복호화 알고리즘들을 사용하는 클라이언트 라이브러리의 서 로 다른 부분들을 보호한다;
- 시퀀스 데이터 또는 이벤트 데이터에 기초한, 암호화 알고리즘들의 변경;
- 클라이언트에 특화된 단일 시간 패드들(pads)를 사용하여 날조 키들(invention keys) 및 데이터를 추가적으로 혼란화한다;
- 키들이 상기 VM/시퀀서 내에서 새로운 실행 경로를 선택한다;
- 어떤 시간 이벤트 이후에 해킹되지 않은 프로세싱 경로들이 활성화될 수 있도록, 잠재적 시퀀스 경로들이 키 데이터에 기초하여 활성화된다. 예를 들면, 상기 라이브러리가 배포되고 90일이 지난 후;
- 바람직하게는 압축된 소프트웨어 코드 이미지들은 난폭한 공격을 어렵게 하기 위하여 암호화된다;
- 다중의 암호화/복호화 알고리즘들은 상기 클라이언트 라이브러리 내에 저장되지 않은 복호화 키들로, 소프트웨어 코드 이미지를 복호화하는 데에 사용된다;
- 본 특허 출원의 다른 섹션들에서 설명되는, 사후 컴파일 (post compile) 시간 프로세스를 사용하는 클라이언트를 위한 새로운 라이브러리들을 생성하는 것이 가능하다.
상기 시스템들 및 방법들의 하나의 요소는 함수들을 코드 조각들로 분해하는 것이다. 이것은 다수의 방식으로 수행될 수 있다. 도 12는, 하나의 실시예로서, 도 2로부터의 함수들과 같이, F1, F2, F3로 표시된 3개의 함수들에 대한 코드 조각 시퀀스 맵들을 보여준다.
도 12의 함수 F1은 코드 조각들(CP 80, 31, 608, 422 및 96)을 포함한다. 물 론, 상기 함수를 코드 조각들로 분해하는 것은 추가적인 코드 조각들을 포함한다. 상기 클라이언트 연산의 바람직한 방법은, 해커들에 의하여 이용될 수 있는 정적 호출(call) 트리를 갖는 것이다. 따라서, 상기 클라이언트 라이브러리 소프트웨어에서, CP80 내지 CP31 또는 CP31 내지 CP608 등으로부터의 호출은 존재하지 않는다.
그 보다는, 리턴 인스트럭션의 형태를 갖는 코드 조각들의 총합 또는, 상기 DRM 프로세싱을 정확하게 제거하기 위하여 반드시 수행되어야 하는 코드 조각들의 실제 시퀀스를 시퀀스 데이터가 정의할 수 있도록 허용하는 연결(linkage) 메커니즘이 존재한다. F1을 실행하기 위한 상기 DRM 시퀀스 데이터는, 코드 조각들(80, 31, 608, 422 및 96)이 실행될 필요가 있다는 것을 지시/식별하는 어드레스, 또는 인덱스, 또는 데이터일 것이다. 마찬가지로, 함수 F2에 대한 시퀀스 데이터는 코드 조각들(3033, 1045, 201, 17 및 762)를 지시할 것이다.
선택적 디자인 요소는 몇몇의 상기 코드 조각들이 시퀀스 데이터의 크기를 감소시키기 위하여 쌍으로 될 수 있다는 것이다. 예를 들어, 함수 F1에 대한 CP(80)가, CP80이 실행되어야 한다는 것을 나타내는 시퀀스 데이터에 의해 실행되는 코드의 두 조각들이 실행될 수 있도록 허용하는 CP31에 대한 호출을 포함한다. CP31이 완료될 때, CP608에 대한 호출은 없다. 왜냐하면, 이것은 해커의 정적 코드 분석의 일부로서 CP80, 31 및 608을 함께 연결하는 능력을 해커들에게 제공할 것이기 때문이다. 바람직하게는, 각각의 코드 조각은 그 자신의 영역(island)으로 분리되고, 함수에 대한 코드 조각들의 호출 시퀀스를 지시하는 연결(linkage) 정보를 갖지 않는다.
또한, 함수들은 코드 조각들로 분해되기 때문에, DRM 함수들을 구현하기 위하여 사용되는 코드 조각들의 순서를 스크램블하는 코드 조각 스크램블러를 포함하는 것이 가능하다. 상기 서버는 클라이언트 디바이스에 배포되는 셔플된 코드 조각 코드 이미지 상의 데이터를 보유하고, 특정 클라이언트를 위한 DRM 시퀀스 키를 준비하는 방법을 알고 있다. 도 12에 도시된 함수들 F1, F2 및 F3은 함수가 분해되는 방법을 보여준다. 예를 들면, 함수 F1이 AES 암호화 알고리즘의 모든 프로세싱 라운드들이라면, CP80, CP31, CP 608, CP 422 및 CP 96은 상기 AES 알고리즘의 하나의 라운드 또는 상기 AES 알고리즘의 모든 라운드들을 구현하기 위한 코드 조각들일 것이다.
상기 코드 조각들이 알고리즘의 부분, 이를테면 상기 AES 알고리즘의 하나의 라운드를 나타낸다면, DRM 시퀀스 데이터는 상기 코드 조각들을 실행하기 위한 시간들의 수를 지시하는 데이터를 포함할 수도 있다. 예를 들면, AES 알고리즘의 32 라운드들이 요구되고 상기 분해는 F1이 하나의 라운드인 경우라면, 상기 시퀀스 데이터는 F1의 32 라운드들이 프로세스되어야 한다는 것을 나타내는 데이터를 포함할 수 있다. 또한, 코드 조각들은, 상기 함수 분해가 하나의 알고리즘의 단일의 라운드에 관한 것일 때, 키들 및 데이터를 스케쥴하기 위한 프로세싱을 포함한다. 예를 들면, CP 608은 어떠한 라운드가 수행되고 있는지를 검사하고 상기 라운드에 특정된 데이터에 접근하기 위한, 데이터 체크를 포함할 수 있다.
상기 분해 프로세스의 흥미로운 요소는, 소프트웨어 컴파일을 거치고 코드조 각들을 스크램블하는 분리된 후속 소프트웨어 개발 프로세스에 의한 테스트를 거친 후에 코드 조각들 또는 함수들이 스크램블될 수 있다는 것이다. 이러한 프로세스는 상기 객체 또는 상기 코드 조각들의 이진 버전들을 링크하는 링킹 단계와 유사할 뿐만 아니라, 그것은, 상기 서버가 상기 적절한 프로세싱을 상기 DRM 추가 프로세스에 적용할 수 있도록 허용하는 방식으로 상기 코드 조각들을 배열함에 의하여, 상기 코드 조각들을 키 잠금한다. 상기 DRM 추가 프로세스는 상기 클라이언트 내에서 수행되는 DRM 제거 프로세스에 의하여 정확히 복호화된다. 상기 클라이언트 라이브러리 내의 코드 조각들의 스크램블 순서는 상기 서버에게 알려지고, 상기 서버는 상기 클라이언트에 의하여 정확하게 복호화되고 처리될 수 있는 프로세스(키 잠금 또는 시퀀싱)를 사용하여 상기 암호화를 적용할 것이다.
일 실시예에 있어서, DRM 시퀀스 키도 사용되고, 상기 DRM 시퀀스 키는 상기 코드 조각들이 스크램블되는 방식에 적합하게 될 것이다. 예를 들면, 도 12의 함수 F1은 코드 조각들(80, 31, 608, 422 및 96)으로 분해되었다. 이러한 코드 조각들의 순서 배치는 클라이언트 1에 전달될 수 있다. 그러나, 다른 라이브러리와 비교하여, 다른 클라이언트들은 스크램블된 라이브러리들을 수신할 수 있다.
예를 들면, 사후 컴파일(post compilation)을 사용하고 스크램블을 테스트하는 소프트웨어를 사용함에 의하여, 프로세스는 각각의 클라이언트 라이브러리의 메모리 레이아웃이 유일하도록 상기 코드 조각들을 스크램블할 수 있다. 예를 들면, 소프트웨어 라이브러리에 있어서, 컴파일되고 링크되는 테스트 버전의 함수 1은 다음과 같은 표에 보여지는 바와 같은 스크램블된 사후 컴파일(post compilation)일 수 있다:
클라이언트 클라이언트에서 함수에 대한 코드 조각 순서 배치
F1
번호
1 80 31 608 422 96
2 201 81 93 17 3
3 199 9 23 41 130
4 4 7 109 18 86
상기 테이블에서, 코드 조각 메모리 어드레스의 순서 배치는, 컴파일되고 테스트된 소스 코드를 사용하여 배포되는 서로 다른 네 개의 클라이언트들에 대하여 보여진다. 상기 코드 조각들은, 클라이언트에게 배달되기 이전에, 또는 상기 소프트웨어 설치 프로세스 동안 또는 다른 시간에, 스크램블될 수 있다. 이러한 예에서, 각각의 클라이언트는 각각의 클라이언트 상에서 함수 1을 적절히 실행하기 위하여, 클라이언트에 유일한 시퀀스 데이터(DRM 시퀀스 데이터)를 요구할 것이다. 상기 클라이언트에 유일한 DRM 시퀀스 데이터는 상기 코드 조각들을 조립하기 위한 프로세스 플로우를 지시하는 데에 사용될 것이다. 각각의 클라이언트에 유일한 DRM 시퀀스 데이터는 다음에 보여지는 바와 같다:
클라이언트 번호 선택적 암호화 또는 다른 혼란화 이전의 DRM 시퀀스 데이터
1 80, 31, 608, 422, 96
2 201, 81, 93, 17, 3
3 199, 9, 23, 41, 130
4 4, 7, 109, 18, 86
상기 테이블에서 반영된 바와 같이, 상기 클라이언트 라이브러리 코드 이미지가 각각의 클라이언트에 대하여 유일하게 스크램블 될 때, 상기 DRM 시퀀스 데이터(DRM 키 잠금 데이터)는 각각의 클라이언트에 대하여 유일할 수 있다. 또한, 적절한 가상 머신 인스트럭션 세트 디자인 기술들이 적용될 때, 상기 스크램블 함수는 상기 가상 인스트럭션 실행 환경 내에 존재할 수 있다. 대안적으로, 상태 머신 또는 상태 테이블 디자인이 상기 클라이언트 라이브러리를 위하여 사용될 때, 상기 DRM 시퀀스 데이터는 상기 디자인에 대하여 적합하게 적용될 것이다.
상기 DRM 시퀀스 데이터를 암호화하는 것에 더하여, 클라이언트에 유일한 변환 테이블들을 사용하는 클라이언트 기반으로, 상기 DRM 시퀀스 데이터 프로세싱이 클라이언트 상에서 혼란화될 수 있다. 따라서, 클라이언트에 유일한 변환이 상기 서버에 의하여 상기 DRM 시퀀스 데이터에 적용된다. 상기 클라이언트는 클라이언트에 유일한 변환을 적용하여 위에 보여진 바와 같이 필요한 시퀀스 데이터를 생성할 것이다.
이러한 변환들은 각각의 코드 조각 시퀀스 데이터 값과 같은 희망하는 크기로 적용될 수 있다. 이것은 각각의 클라이언트가, 상기 단일 시간 패드를 적용하는 상기 서버 및 클라이언트 상에서 실제의 DRM 시퀀스 데이터를 변환하는 데에 사용되는 단일 시간 패드 데이터로 구성되는, 클라이언트의 단일 시간 패드도 포함할 수 있다는 것을 의미한다. 상기 DRM 시퀀스 데이터를 추가적으로 혼란화하고 실제의 코드 실행에 매핑되는 다른 방법들 또한 적용될 수 있다.
또 다른 흥미있는 실시예는, 각각 서로 다른 크기의 키들을 사용하는 다중의 키 프로세싱 코드 조각들을 가짐에 의하여, 상기 시스템에 사용되는 상기 키들에 대한 서로 다른 키 길이를 생성하는 것을 포함한다. 상기 DRM 시퀀스 데이터는 서로 다른 길이를 갖는 DRM 컨텐츠 키들을 생성하기 위하여 서로 다른 코드 조각들을 선택한다. 예를 들면, 다음의 테이블에서, 테이블 내의 비트의 수를 처리하는 DRM 프로세싱 함수들 조각들이 존재한다. 상기 DRM 시퀀스 데이터는, 상기 DRM 프로세 싱이 128 비트의 키 프로세싱을 갖는 함수들 및 서로 다른 비트의 수를 갖는 함수들로 구성되어야 한다는 것을 나타낼 것이다. 상기 해커는 상기 시스템의 기본적 DRM 컨텐츠 키 길이를 모르고, 키 길이를 결정하기 위해서 조차도 코드를 분석하여야 하기 때문에, 이러한 선택적 단계의 사용은 해커들이 좌절하도록 할 것이다. 각각의 클라이언트는 키 길이의 서로 다른 조합들을 사용할 수 있다.
함수 번호 1 2 3 4 5 6 7 8 9 10 11 12 13
키 길이 (비트) 128 128 128 17 11 4 3 21 18 7 16 8 19
상기 테이블은 각각의 함수에 의하여 프로세스되는 비트의 수를 보여준다. 물론, 상기 함수들 각각은 본 발명의 다른 영역들에서 설명된 바와 같이, 더 작은 조각들로 분해될 수 있다. 클라이언트에 대한 DRM 프로세싱은 적어도 상기 128 비트 키 프로세싱 함수 또는 그 이상과, 상기 더 작은 수의 비트 키 프로세싱 함수들의 하나 또는 그 이상으로 구성될 것이다. 다음의 테이블은 상기 DRM 시퀀스 데이터가 어떻게 서로 다른 키 길이를 가지고 DRM 프로세싱을 생성하기 위하여 사용될 수 있는지를 보여준다.
DRM 클라이언트 DRM 프로세싱에서 사용되는 함수들 DRM 키 길이 (비트)
1 1, 5, 10 146
2 5, 1 139
3 7, 10, 2 138
4 6, 3, 12 140
상기 비트들이 처리되는 방법에 관한 시퀀스 순서는 매우 다양할 수 있다. 또한, 다중의 프로세싱 체인들은 보다 복잡한 DRM 프로세싱 단계들을 생성하기 위하여 사용될 수 있다. 예를 들면, DRM 클라이언트(1)는 함수들 1, 5 및 10과 더불어 동일한 키 길이를 갖는 다른 함수들을 사용할 수 있고, 상기 함수들(1, 5, 10)의 제1 패스와 더불어, 함수들(5, 10)을 사용하는 제2 패스를 추가하는 것과 같은 방식으로, 상기 키들을 제2 패스에서 재사용할 수 있다. 이와 같이, 상기 키들은 두 번 재적용될 것이다(각각의 패스 당 한번씩).
물론, 각각의 패스에 대하여 추가적인 키들이 전송될 수 있고, 두 패스의 예에서는, 상기 146 비트의 DRM 프로세싱의 두 패스들이 사용될 때, 292 비트가 전송될 것이다. 다중의 패스들은, 예를 들면, 함수들(1, 5, 10)을 사용하는 제1 패스를 갖는 DRM와 같이, 상기 제1 패스에서 사용되지 않는 추가적인 비트들을 사용할 수 있다. 그리고, 제2 패스에서는 함수(1, 5, 10)와 더불어, 제2 패스의 키 길이에 8비트를 추가하는 함수를 사용할 수 있다. 상기 서로 다른 키 길이들의 전부는, 상기 DRM 프로세싱 동안 적용되는 상기 함수들의 시퀀스를 정의함에 의하여 생성되고 프로세스되는데, 이러한 예에서, 상기 시퀀스는 함수들(1, 5, 10)의 제1 패스 및 함수들(1, 5, 10 및 12)의 제2 패스가 될 것이다.
도 12에서, 암호화되지 않은 시퀀스 데이터가 우측에 보여진다. 각각의 박스 내의 번호는 상기 특정 함수를 수행하기 위하여 실행되는 코드 조각들에 대응된다. 추가적인 보안을 위하여, 상기 시퀀스 맵 데이터에서 보여지는 상기 코드 조각들은, 상기 클라이언트에 전송되기 전에, 하나 또는 그 이상의 키들을 이용하는 단일의 또는 서로 다른 암호화 알고리즘을 사용하여 암호화될 수 있다. 상기 예에서, 함수 'F1'을 형성하는 상기 코드 조각들은 상기 시퀀스의 짝수 값들(즉, 요소, 0, 2, 4, 6, 8,...)에 대하여 AES로 암호화될 수 있고, 상기 시퀀스의 홀수 값들(1, 3, 5, 7, 9)에 대하여 DES로 암호화될 수 있다.
물론, 상기 동작을 수행하는 당업자는 보안을 향상시키기 위하여 서로 다른 알고리즘들의 조합들 및 서로 다른 패턴들을 적용할 수 있다. 상기 코드 조각 시퀀스 맵을 암호화하기 위하여 사용되는 키 데이터는 클라이언트에 특화된 데이터로부터 유도될 수 있고, 각각의 클라이언트에 유일하게 전달되거나, 상기 라이브러리 내에 임베드되거나, 클라이언트 하드웨어에 특정한 데이터나 퀀텀 데이터 또는 다른 몇몇의 수단들로부터 유도될 수 있다.
도 12에서는 또한, 각각의 함수(F1, F2, F3)는 예를 들면, 함수 F1에 대한 단락 이전에서 전술한 바와 같이, 암호화에 대한 자신의 키들과, 각각의 함수에 대하여 유일한 자신의 암호화 알고리즘 시퀀스를 갖는다.
또 다른 어플리케이션은 각각의 클라이언트 디바이스에 대한, 유일한 소프트웨어 클라이언트 라이브러리 코드 이미지를 생성하는 것이다. 여기서, 상기 유일한 소프트웨어 클라이언트는 프로세싱 코드의 공통 세트로부터 유도되고, 상기 서버는 클라이언트 소프트웨어나 펌웨어 이미지를 상기 클라이언트에 전달할 때, 또는 오프라인 프로세스로, 상기 클라이언트 소프트웨어 이미지를 유일하게 만든다.
클라이언트 소프트웨어 라이브러리 코드 이미지를 유일하게 만드는 상기 기술들은 또한, 본 발명의 다른 부분들에서 설명되는 DRM 시퀀스 키 방법들을 사용하는 클라이언트 라이브러리 디자인에 적용될 수 있다. 각각의 클라이언트 라이브러리 소프트웨어 코드 이미지가 유일할 때(또는 거의 유일할 때), 보안 해킹 또는 브리치(breech)의 범주는 단일의 클라이언트, 또는 상기 동일한 클라이언트 라이브러리 소프트웨어를 사용하는 디바이스들만으로 지역화된다. 상기 설명된 기술들을 사용하여 유일한 클라이언트 소프트웨어 코드를 생성하는 많은 방법들이 존재한다. 유일한 클라이언트 소프트웨어 라이브러리 이미지들을 준비하는 데에 사용될 때, 상기 시스템들 및 방법들을 설명하기 위한 하나의 방법이 이하에서 제시된다.
1. 상기 클라이언트 소프트웨어 라이브러리 디자인을 다수의 함수들로 분해한다. 상기 함수들은 알고리즘들 또는 알고리즘들의 조각들 또는 코드 시퀀스들이다. 이것들은 총합적으로 상기 함수들이라고 지칭된다.
2. 각각의 함수의 시작 지점 및 상기 시퀀스 플로우(각각의 함수에 대한 호출 순서)를 식별한다. 예를 들면, 상기 DRM 프로세싱을 수행하기 위하여 함수들(8, 4, 2 및 1)이 호출되어야 한다. 상기 함수들의 각각의 시작 지점 또는 상기 함수들의 시작 지점을 식별하기 위하여 사용될 수 있는 데이터와 함께, 상기 호출 순서(8, 4, 2, 1)가 식별된다.
3. 상기 각각의 함수의 소프트웨어 프로세싱이 정확한지, 그리고 상기 DRM 프로세싱이 상기 클라이언트 및 상기 서버 단에서 정확히 적용되는지를 확실히 하기 위하여, 상기 함수들 각각을 개별적으로 테스트한다.
4. 각각의 코드 조각의 시작과 각각의 코드 조각의 종료를 식별하고, 상기코드 조각들을 재배열하는, 후 컴파일 및 테스팅 소프트웨어를 개발한다. 각각의 클라이언트 라이브러리의 상기 배열은 저장되어, 상기 서버가 클라이언트와 통신할 때, 상기 클라이언트가 상기 서버에서 암호화된 데이터를 복호화할 수 있도록, 상기 서버가 상기 DRM 프로세스로 상기 데이터를 정확하게 프로세스하는 방법을 알게 될 것이다.
각각의 클라이언트 라이브러리가 DRM 시퀀스 키 데이터를 프로세스하기 위한 소프트웨어를 포함할 때, DRM 시퀀스 데이터는 상기 클라이언트에 전송될 수 있다. DRM 시퀀스 키를 갖지 않는 라이브러리들은 여기에서 설명되는 상기 기술들을 사용하여, 각각의 클라이언트에 대하여 유일하게 생성될 수 있다.
또한, 유일한(스크램블된) 클라이언트 라이브러리들은, 각각의 클라이언트에 의하여 추가적으로 유일한 프로세싱을 허용하기 위하여, 상기 클라이언트 라이브러리 프로세싱에 병합되는 DRM 시퀀스 키 데이터에 의해 생성될 수 있다. DRM 시퀀스 키 데이터를 갖지 않는 라이브러리들은, 상기 클라이언트로 전송될 때 또는, 상기 클라이언트에 의하여 인스톨될 때 스크램블될 수 있지만, 바람직하게는, 상기 서버 단에서 상기 클라이언트에 전송되기 전에 스크램블된다.
5. DRM 시퀀스 키 데이터가 상기 라이브러리에 포함될 때, 클라이언트 디바이스에 전달되는 코드 라이브러리는, 상기 함수들이 어떻게 호출되는지를 나타내는 정보를 갖지 않는 다수의 함수들로 구성된다. 상기 서버로부터 수신되는 데이터로 덮어쓰기 되는 디폴트 코드 실행 시퀀스를 갖는 코드 시퀀싱 데이터(DRM 시퀀스 키) 및 상기 실행 시퀀스의 변경은 새로운 클라이언트 라이브러리를 전송하지 않고, 수행될 수 있다. 이것은 서버가 공급하는 데이터가 상기 클라이언트 라이브러리의 코드 실행 시퀀스를 정의할 수 있다는 것을 의미한다.
6. 상기 클라이언트 라이브러리에 의하여 실행될 각각의 가역적인 코드 프리미티브(primitive)는 상기 코드 프리미티브가 충돌되거나 상기 데이터에 오류를 일으키지 않고, 진정하게 가역적이라는 것을 확실하게 하기 위하여 테스트된다(비가역적 함수들도, 사용될 수 있지만, 상기 코드 실행 시퀀스를 유일하게 난수화하는 용어들에서 탄력적이지 않다. 가역적인 함수들의 상기 실행 시퀀스가 그것들이 시퀀스될 수 있는 방식에 있어서 비가역적인 것 보다 훨씬 랜덤하게 만들어 질 수 있다는 것을 의미한다).
7. 상기 클라이언트 라이브러리의 코드 구조는 상기 가상 머신 인스트럭션 세트 또는 상기 상태 머신 시퀀스 또는 다른 시퀀싱 프로세스들을 해석함에 의하여 시퀀싱된다.
8. 상기 코드 개발 프로세스는 코드 프리미티브의 어드레스, 또는 가상의 인스트럭션을 실행하는 데에 필요한 코드, 또는 가역적인 함수를 식별한다. 각각의 가상의 인스트럭션의 길이는 상기 서버 클라이언트 라이브러리 빌더의 서버 프로세스에 의하여 알려진다.
9. 클라이언트가 코드 다운로드를 요청할 때, 상기 클라이언트 라이브러리 빌더의 서버 프로세스는 상기 가상의 인스트럭션들을 랜덤한 순서로 섞거나 배열한다. 따라서, 가상의 인스트럭션들 또는 코드 프리미티브들의 순차적인 어드레스 순서는, 상기 코드 시퀀스들 또는 상기 클라이언트 라이브러리를 재컴파일할 필요없이, 클라이언트 별로 상이하다.
10. 상기 프로세스는 라이브러리를 생성하고, 따라서, 상기 코드 라이브러리에 포함되는 시퀀싱 정보가 존재하고, 상기 클라이언트 라이브러리 빌더 프로세스는 상기 랜덤화된 코드 라이브러리 내에 적절한 시퀀스 데이터를 임베드한다. 그러나, 다른 실시예들은 상기 클라이언트 라이브러리 내에서 시퀀싱 정보 없이 클라이언트 라이브러리를 생성하기 위하여 전술한 프로세스를 스크램블링하는 클라이언트 라이브러리 메모리 이미지로 확장된다.
이러한 실시예들에 있어서, 클라이언트 라이브러리가 데이터를 실행하는 방법을 정의하는 시퀀싱 정보는, 상기 클라이언트 라이브러리가 다운로드된 후 또는 상기 클라이언트 라이브러리가 인스톨된 후, 상기 서버로부터 수신되는 데이터일 수 있다. 또는, 상기 시퀀싱 데이터는, 보호되는 컨텐츠로부터, 또는 상기 컨텐츠 다운로드 프로세스의 일부로서, 또는 소비자가 상기 컨텐츠를 사용(상기 컨텐츠의 재생, 청취, 구동, 실행 또는 억세스)하려 할 때 상기 컨텐츠 다운로드 프로세스 이후에, 수신될 수 있다.
11. 상기 서버는 상기 클라이언트 디바이스에 대한 DRM 데이터를 준비할 때, 각각의 클라이언트 라이브러리의 레이아웃을 알 것이고, 각각의 클라이언트에 대하여 유일한 인스트럭션 시퀀스들 데이터 및 키 프로세싱 시퀀스들을 사용하여 상기 키 데이터를 프로세스 할 것이다.
어떠한 소프트웨어 디자인 또는 코드 구조라도, 본 발명에서 설명하는 어떠한 데이터나 실행 시퀀스를 설계하고 프로세스 하는 데에 사용될 수 있다. 가상 머신 인스트럭션 세트, 상태 머신들, 계층적 상태 머신들, 플로우 다이어그램들, 시퀀서 다이어그램들, 또는 함수 포인트 테이블, 또는 이중의 인디렉션(indirection) 함수 포인터 테이블들(다중 레벨의 포인터 인디렉션), 또는 링크되고 리스트화된 실행 시퀀스들, 상태들 또는 인스트럭션들이, 프로세싱 시퀀서 및 다른 데이터와 함께 사용될 수 있다.
또 다른 측면은, 공통 DRM 프로세스 단계들을 포함하는 각각의 유일한 코드 이미지를 갖는 클라이언트 유일의 펌웨어 코드를 생성하기 위하여 사용되는 프로세스를 정의하는 것이다. 또는, 각각의 코드 이미지는 클라이언트에 유일한 DRM 프로세스 단계들을 포함할 수 있다. 일 실시예에 있어서, 두 개의 요소들이 존재할 필요가 있다. 그것들은 상기 클라이언트 펌웨어 라이브러리와, 상기 서버로부터 수신되는 데이터를 암호화(보호)하기 위하여 사용되는 상기 프로세싱 단계들(DRM 프로세스 단계들)을 정의하는 정보이다. 상기 프로세싱 단계들은 상기 DRM 프로세스 단계들이라고 지칭된다.
상기 클라이언트에 유일한 DRM 프로세싱 정보 및 클라이언트에 유일하거나 클라이언트에 공통된 펌웨어 라이브러리가 상기 클라이언트에 로딩되고, 다음을 포함하는 많은 방법들 중에서 하나로 실행될 수 있다:
1. 클라이언트 펌웨어 또는 소프트웨어 코드는 프로세스를 로딩하여, 각각의 클라이언트 라이브러리는 유일하거나 의사적으로 유일하게 된다. 이러한 방법들을 사용하여, 각각의 클라이언트는 유일한 클라이언트 라이브러리 코드(코드 이미지 또는 코드 및 데이터 이미지)를 수신하고, 바람직하게는, 상기 서버에 의하여 전달되는 소프트웨어 코드 이미지 내에는 DRM 시퀀싱 키가 존재하지 않는다. 상기 서버로부터 전달되는 각각의 라이브러리는 유일한 코드와, 상기 코드 내에서 고유한 각각의 클라이언트에 대한 유일한 DRM 프로세싱을 갖는다. 상기 실제의 DRM 프로세스는 DRM 시퀀싱 키를 사용함이 없이, 유일한 클라이언트 코드와 더불어, 각각의 클라이언트에 대하여 유일할 수 있다.
2. DRM 시퀀싱 키가 추가되는 상기 프로세스.
3. 클라이언트 펌웨어 또는 소프트웨어 코드는 프로세스를 로딩하고, 따라서, 각각의 클라이언트 라이브러리는 유일하며 상기 서버에 의하여 전달되는 소프트웨어 코드 이미지 내에 DRM 시퀀싱 키도 요구하고, 상기 서버로부터 전달되는 각각의 라이브러리는 각각의 클라이언트에 대하여 유일하며 유일한 DRM 시퀀싱 키도 사용한다. 상기 유일한 클라이언트 코드와 더불어, 상기 실제의 DRM 프로세스도 각각의 클라이언트에 대하여 유일할 수 있다. 또한, 각각의 클라이언트의 상기 유일한 DRM 프로세스는, 상기 클라이언트에 유일한 DRM 시퀀싱 키를 클라이언트에 유일한 펌웨어 이미지에 적용함으로써, 한층 더 유일하게 될 수 있다.
4. 클라이언트 펌웨어 또는 소프트웨어는 프로세스를 로딩하고, 따라서, 각각의 클라이언트 라이브러리는 동일하지만, 상기 실제의 DRM 프로세싱은 상기 코드 라이브러리의 일부로서 또는 분리된 단계로서 전송되는 DRM 시퀀싱 키에 의하여 유일하게 정의된다.
5. 둘 또는 그 이상의 위상(다중의 위상들)은 프로세스를 다운로드하고, 따라서, 공통의 펌웨어 다운로드 프로세스는 하나 또는 그 이상의 추가적인 코드 다운로드 위상들에 의하여 지원된다. 따라서, 각각의 추가적인 다운로드 위상은 상기 클라이언트 소프트웨어 라이브러리가 수정되지 않고, 변조되지 않고, 해킹되지 않았다는 것을 보장하기 위하여, 클라이언트 무결성 체크를 수행한다.
6. 전술한 단계들의 어떤 하나의 조합
(1) 로더 - 현재의 DRM 기술처럼 보임
(2) 위상 2 - 각각의 클라이언트를 유일하게 만드는, 클라이언트에 유일한 DRM 상태 프로세싱 "키 잠금"
당업자라면, 여기서 개시되는 실시예들과 관련하여 설명되는, 다양한 논리적 블록들, 모듈들, 회로들 및 알고리즘 단계들이, 전자적 하드웨어, 컴퓨터 소프트웨어 또는 이들의 조합으로서 구현될 수 있다는 것을 충분히 이해할 것이다. 이러한 하드웨어 및 소프트웨어의 상호 교환성을 명확히 설명하기 위하여, 다양한 예시적인 구성요소들, 블록들, 모듈들, 회로들 및 단계들이 그 기능성을 갖는 용어들로 일반화하여 이상에서 설명된 바 있다. 이러한 기능성이 하드웨어에서 실행될지 또는 소프트웨어에서 실행될지는, 상기 특정 어플리케이션과, 상기 전체 시스템에 부과되는 디자인 제한 조건에 따라 결정될 것이다.
당업자라면 각각의 특정 어플리케이션에 대한 다양한 방식들로 상기 설명된 기능성을 구현할 수 있지만, 이러한 구현의 결정은 상기 발명의 범주의 일탈을 야기하는 것으로 해석되어서는 아니 될 것이다. 또한, 모듈, 블록, 회로 또는 단계 내에서 함수들의 그룹화는 설명의 편의를 위한 것이다. 상기 발명을 일탈하지 아니하고서도, 하나의 모듈, 블록 또는 회로로부터 특정한 함수들 또는 단계들이 이동될 수 있다.
여기서 개시되는 실시예들과 관련하여 설명되는, 상기 다양한 설명적인 논리적 블록들, 모듈들 및 회로들은, 일반적인 목적의 프로세서, 디지털 신호 프로세서(DSP), 어플리케이션 특정의 집적 회로(ASIC), 필드 프로그램 가능한 게이트 어레이(FPGA) 또는 다른 프로그램 가능한 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 구성요소들, 또는 여기에 설명된 상기 함수들을 수행하기 위하여 고안된 어떠한 조합들에 의하여 구현되거나 수행될 수 있다. 일반 목적의 프로세서는 마이크로 프로세서일 수 있지만, 대안적으로는, 상기 프로세서는 어떠한 종류의 프로세서, 컨트롤러, 마이크로 컨트롤러 또는 상태 머신일 수도 있다. 프로세서는 또한, 컴퓨팅 디바이스들의 조합, 예를 들면, DSP 및 마이크로 프로세서의 조합, 복수의 마이크로 프로세서들, DSP 코어와 결합되는 하나 또는 그 이상의 마이크로 프로세서들, 또는 다른 구성들로 구현될 수 있다.
여기에 개시된 실시예들과 관련하여 설명된 방법 또는 알고리즘의 단계들은 직접 하드웨어로 구현될 수도 있고, 프로세서에 의하여 실행되는 소프트웨어 모듈로 구현될 수도 있으며, 상기 두 가지의 조합에 의하여 구현될 수도 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드 디스크, 제거 가능한 디스크, CD-ROM 또는 다른 형태의 저장 매체에 포함될 수 있다. 예시적인 저장 매체는 상기 프로세서에 결합되어, 상기 프로세서가 상기 저장 매체로부터 정보를 읽고 상기 저장 매체에 정보를 기록할 수 있다. 대안적으로, 상기 저장 매체는 상기 프로세서에 통합될 수 있다. 상기 프로세서 및 상기 저장 매체는 ASIC 내에 포함될 수도 있다.
상기 개시된 실시예들의 설명은 당업자가 상기 발명을 제작하고 사용하는 것이 가능하도록 제공된다. 이러한 실시예들에 대한 다양한 변형들은 당업자에게는 자명할 것이며, 여기서 정의된 일반적인 원리들은 상기 발명의 사상 또는 범주를 일탈하지 않고서도 다른 실시예들에 적용될 수 있다. 따라서, 상기 발명은 여기에 보여지는 실시예들에 한정되도록 의도하는 것이 아니지만, 상기 발명에는 여기서 개시된 원리들 및 새로운 특징들에 부합하는 가장 넓은 범주가 주어질 수 있다.

Claims (34)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 보호되는 입력 DRM(digital rights management) 데이터를 수신하는 단계;
    선택된 보호 함수가 상기 입력 DRM 데이터에 적용될 순서를 기술하는 시퀀서 데이터(sequencer data)를 생성하는 단계; 및
    보호되는 출력 DRM 데이터를 생성하기 위해 상기 시퀀서 데이터에 의해 기술된 상기 순서에 따라 상기 선택된 보호 함수를 상기 입력 DRM 데이터에 순차적으로 적용하는 단계를 포함하되,
    상기 시퀀서 데이터에 의해 기술된 상기 순서는 상기 시퀀서 데이터의 제1부분에 의해 식별된 제1함수 및 자가 수정(self-modified) 시퀀서 데이터의 일부분에 의해 식별되는 제2함수를 포함하고, 상기 자가 수정 시퀀서 데이터는 상기 시퀀서 데이터의 적어도 일부분 상에서 상기 제1함수를 수행하는 것에 의해 생성되는, 클라이언트 장치로 전송되는 DRM 데이터를 보호하는 방법.
  12. 보호되는 입력 DRM(digital rights management) 데이터를 수신하는 단계;
    선택된 보호 함수가 상기 입력 DRM 데이터에 적용될 순서를 기술하는 시퀀서 데이터(sequencer data)를 생성하는 단계; 및
    보호되는 출력 DRM 데이터를 생성하기 위해 상기 시퀀서 데이터에 의해 기술된 상기 순서에 따라 상기 선택된 보호 함수를 상기 입력 DRM 데이터에 순차적으로 적용하는 단계를 포함하되,
    상기 순차적으로 적용하는 단계는,
    제1 함수를 식별하기 위해 상기 시퀀서 데이터의 제1 부분을 사용하고, 제1 출력을 생성하기 위해 상기 입력 DRM 데이터 상에서 상기 제1 함수를 수행하는 단계;
    제2 함수를 식별하기 위해 상기 시퀀서 데이터의 다음 부분을 사용하고, 제2 출력을 생성하기 위해 상기 제1 출력 상에서 상기 제2 함수를 수행하는 단계;
    하나 이상의 함수를 식별하기 위해 상기 시퀀서 데이터의 하나 이상의 부분을 사용하고, 상기 보호되는 출력 DRM 데이터를 생성하기 위해 상기 제2 출력 상에서 상기 하나 이상의 함수를 순차적으로 수행하는 단계;
    상기 보호되는 출력 DRM 데이터를 클라이언트 장치로 전송하는 단계;
    상기 시퀀서 데이터로부터 상기 보호 함수를 선택하기 위해 상기 클라이언트 장치에 의해 사용되는 매핑(mapping)에 기반해 상기 클라이언트 장치에 대한 상기 시퀀서 데이터를 매핑하는 단계; 및
    상기 매핑된 시퀀서 데이터를 상기 클라이언트 장치로 전송하는 단계를 포함하는, 클라이언트 장치로 전송되는 DRM 데이터를 보호하는 방법.
  13. 보호되는 입력 DRM(digital rights management) 데이터를 수신하는 단계;
    선택된 보호 함수가 상기 입력 DRM 데이터에 적용될 순서를 기술하는 시퀀서 데이터(sequencer data)를 생성하는 단계;
    상기 시퀀서 데이터로부터 상기 보호 함수를 선택하기 위해 클라이언트 장치에 의해 사용되는 매핑(mapping)에 기반해 상기 클라이언트 장치에 대한 상기 시퀀서 데이터를 매핑하는 단계;
    상기 클라이언트 장치를 위한 보호되는 출력 DRM 데이터를 생성하기 위해 상기 맵핑된 시퀀서 데이터에 의해 기술된 상기 순서에 따라 상기 선택된 보호 함수를 상기 입력 DRM 데이터에 순차적으로 적용하는 단계를 포함하되,
    상기 순차적으로 적용하는 단계는,
    제1 함수를 식별하기 위해 상기 시퀀서 데이터의 제1 부분을 사용하고, 제1 출력을 생성하기 위해 상기 입력 DRM 데이터 상에서 상기 제1 함수를 수행하는 단계;
    제2 함수를 식별하기 위해 상기 시퀀서 데이터의 다음 부분을 사용하고, 제2 출력을 생성하기 위해 상기 제1 출력 상에서 상기 제2 함수를 수행하는 단계;
    하나 이상의 함수를 식별하기 위해 상기 시퀀서 데이터의 하나 이상의 부분을 사용하고, 상기 보호되는 출력 DRM 데이터를 생성하기 위해 상기 제2 출력 상에서 상기 하나 이상의 함수를 순차적으로 수행하는 단계;
    상기 보호되는 출력 DRM 데이터를 상기 클라이언트 장치로 전송하는 단계; 및
    상기 시퀀서 데이터를 상기 클라이언트 장치로 전송하는 단계를 포함하는, 클라이언트 장치로 전송되는 DRM 데이터를 보호하는 방법.
  14. 제 12항 또는 제 13항에 있어서,
    상기 클라이언트 장치는 상기 시퀀서 데이터로부터 보호 함수를 선택하는 유니크 매핑(unique mapping)을 가지는, 클라이언트 장치로 전송되는 DRM 데이터를 보호하는 방법.
  15. 삭제
  16. 제 11항 또는 제 12항 또는 제 13항에 있어서,
    상기 선택된 보호 함수 중 적어도 하나는 분해되고, 상기 시퀀서 데이터에 의해 기술되는 상기 순서는 상기 하나 이상의 분해된 함수 중 일부분에만 적용하는 것을 포함하는, 클라이언트 장치로 전송되는 DRM 데이터를 보호하는 방법.
  17. 제 11항 또는 제 12항 또는 제 13항에 있어서,
    상기 시퀀서 데이터는 상기 클라이언트 장치에 대한 정보를 사용하여 발생되는, 클라이언트 장치로 전송되는 DRM 데이터를 보호하는 방법.
  18. 제 17항에 있어서,
    상기 클라이언트 장치에 대한 상기 정보는 상기 클라이언트 장치에서 이용할 수 있는 복호화 함수에 대한 정보를 포함하는, 클라이언트 장치로 전송되는 DRM 데이터를 보호하는 방법.
  19. 제 11항 또는 제 12항 또는 제 13항에 있어서,
    상기 선택된 보호 함수는, 상기 시퀀서 데이터에 의해 선택될 수 없는 위장 함수를 포함하는 복수의 보호 함수로부터 선택되는, 클라이언트 장치로 전송되는 DRM 데이터를 보호하는 방법.
  20. 제 11항 또는 제 12항 또는 제 13항에 있어서,
    상기 선택된 보호 함수 중 적어도 하나는 부분적인 AES 암호화(partial AES encryption), 데이터 쉬프팅(data shifting), 데이터 교체 및 비트 반전 함수로 구성된 그룹에서 선택되는, 클라이언트 장치로 전송되는 DRM 데이터를 보호하는 방법.
  21. 제 11항 또는 제 12항 또는 제 13항에 있어서,
    상기 선택된 보호 함수는 시간 의존적인, 클라이언트 장치로 전송되는 DRM 데이터를 보호하는 방법.
  22. 제 11항 또는 제 12항 또는 제 13항에 있어서,
    상기 클라이언트 장치로 상기 선택된 보호 함수 중 적어도 일부를 위한 전송 키를 더 포함하는, 클라이언트 장치로 전송되는 DRM 데이터를 보호하는 방법.
  23. 보호되는 입력 DRM(digital rights management) 데이터를 수신하는 입력 데이터 인터페이스 모듈(input data interface module);
    복수의 보호 함수 및 상기 복수의 보호 함수 중 선택된 보호 함수의 순서를 기술하는 시퀀서 데이터(sequencer data)를 저장하는 메모리;
    상기 입력 데이터 인터페이스 모듈 및 상기 메모리와 접속되고, 상기 시퀀서 데이터에 의해 기술되는 상기 순서로 상기 복수의 보호 함수 중 상기 선택된 보호 함수를 순차적으로 적용하는 것에 의해 상기 입력 DRM 데이터를 보호하여, 클라이언트 장치로 전송하기 위한 보호되는 출력 DRM 데이터를 생산하는 프로세서를 포함하되,
    상기 시퀀서 데이터에 의해 정의되는 상기 순서는 상기 시퀀서 데이터의 제1부분에 의해 식별되는 제1함수 및 자가 수정(self-modified) 시퀀서 데이터의 일부분에 의해 식별되는 제2함수를 포함하고, 상기 자가 수정 시퀀서 데이터는 상기 시퀀서 데이터의 적어도 일부분 상에서 상기 제1함수를 수행하는 것에 의해 생성되는 컴퓨터 서버.
  24. 제 23항에 있어서,
    상기 하나 이상의 보호 함수는 분해되고, 상기 시퀀서 데이터에 의해 기술되는 상기 순서는 상기 하나 이상의 분해된 함수 중 일부분에만 적용하는 것을 포함하는 컴퓨터 서버.
  25. 제 23항에 있어서,
    상기 시퀀서 데이터는 상기 클라이언트 장치에 대한 정보를 사용하여 발생되는 컴퓨터 서버.
  26. 제 23항에 있어서,
    상기 복수의 보호 함수는 상기 시퀀서 데이터에 의해 선택될 수 없는 위장 함수를 포함하는 컴퓨터 서버.
  27. 제 23항에 있어서,
    상기 복수의 보호 함수 중 적어도 하나는 부분적인 AES 암호화(partial AES encryption), 데이터 쉬프팅(data shifting), 데이터 교체 및 비트 반전 함수로 구성된 그룹에서 선택되는 컴퓨터 서버.
  28. 제 23항에 있어서,
    상기 복수의 보호 함수 중 상기 선택된 보호 함수는 시간 의존적인 컴퓨터 서버.
  29. 제 23항에 있어서,
    상기 메모리는 상기 프로세서에 의해 수행된 인스트럭션을 가지는 암호화된 버전의 시퀀서 인스트럭션 실행 모듈(sequencer instruction execution module)을 더 저장하여 상기 입력 DRM 데이터를 보호하는 컴퓨터 서버.
  30. 복수의 복호화 함수를 저장하는 메모리;
    보호되는 DRM(digital rights management) 데이터 및 상기 복수의 복호화 함수 중 선택된 복호화 함수가 상기 보호되는 DRM 데이터에 적용될 순서를 정의하는 시퀀서 데이터(sequencer data)를 수신하기 위한 입력 데이터 인터페이스 모듈(input data interface module); 및
    상기 입력 데이터 인터페이스 모듈 및 상기 메모리와 접속되고, 상기 시퀀서 데이터에 의해 정의되는 상기 순서로 상기 복수의 복호화 함수 중 상기 선택된 복호화 함수를 상기 보호되는 DRM 데이터에 순차적으로 적용하도록 배열된 프로세서를 포함하되,
    상기 시퀀서 데이터에 의해 정의되는 상기 순서는 상기 시퀀서 데이터의 제1 부분에 의해 식별되는 제1 함수 및 자가 수정(self-modified) 시퀀서 데이터의 일부분에 의해 식별되는 제2 함수를 포함하고, 상기 자가 수정 시퀀서 데이터는 상기 시퀀서 데이터의 적어도 일부분 상에서 상기 제1 함수를 수행하는 것에 의해 생성되는, 암호화된 DRM 데이터를 사용하는 클라이언트 장치.
  31. 삭제
  32. 제 30항에 있어서,
    상기 시퀀서 데이터는 상기 보호되는 DRM 데이터가 수신되는 메시지(message)와 분리된 메시지로 수신되는, 암호화된 DRM 데이터를 사용하는 클라이언트 장치.
  33. 제 30항에 있어서,
    상기 복수의 복호화 함수는 상기 시퀀서 데이터에 의해 선택될 수 없는 위장 함수를 포함하는, 암호화된 DRM 데이터를 사용하는 클라이언트 장치.
  34. 제 30항에 있어서,
    상기 메모리는 상기 입력 DRM 데이터를 복호화하는 상기 프로세서에 의해 수행된 인스트럭션을 가지는 암호화된 버전의 시퀀서 인스트럭션 실행 모듈(sequencer instruction execution module)을 더 저장하는, 암호화된 DRM 데이터를 사용하는 클라이언트 장치.
KR1020097026293A 2007-05-18 2008-05-16 데이터를 보호할 때 적용되는 프로그램 가능한 프로세싱 단계들을 정의하기위한 시스템 및 방법 KR101560131B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US93899407P 2007-05-18 2007-05-18
US60/938,994 2007-05-18

Publications (2)

Publication Number Publication Date
KR20100017844A KR20100017844A (ko) 2010-02-16
KR101560131B1 true KR101560131B1 (ko) 2015-10-26

Family

ID=40028729

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097026293A KR101560131B1 (ko) 2007-05-18 2008-05-16 데이터를 보호할 때 적용되는 프로그램 가능한 프로세싱 단계들을 정의하기위한 시스템 및 방법

Country Status (5)

Country Link
US (2) US8478980B2 (ko)
EP (2) EP2158718B1 (ko)
KR (1) KR101560131B1 (ko)
CN (2) CN103532707B (ko)
WO (1) WO2008144524A1 (ko)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9571902B2 (en) 2006-12-13 2017-02-14 Quickplay Media Inc. Time synchronizing of distinct video and data feeds that are delivered in a single mobile IP data network compatible stream
EP2177010B1 (en) 2006-12-13 2015-10-28 Quickplay Media Inc. Mobile media platform
US9124650B2 (en) * 2006-12-13 2015-09-01 Quickplay Media Inc. Digital rights management in a mobile environment
US8892761B1 (en) 2008-04-04 2014-11-18 Quickplay Media Inc. Progressive download playback
US8478980B2 (en) * 2007-05-18 2013-07-02 Verimatix, Inc. System and method for defining programmable processing steps applied when protecting the data
JP5105408B2 (ja) * 2007-05-23 2012-12-26 独立行政法人科学技術振興機構 量子プログラム秘匿化装置及び量子プログラム秘匿化方法
EP2243254B1 (en) * 2007-12-21 2018-07-18 Intel Corporation Peer-to-peer streaming and api services for plural applications
US8239967B2 (en) * 2008-01-15 2012-08-07 Microsoft Corporation Simultaneous tamper-proofing and anti-piracy protection of software
EP2184695A1 (de) * 2008-11-10 2010-05-12 Siemens Aktiengesellschaft Verfahren zum Kombinieren von Daten mit einer zur Verarbeitung der Daten vorgesehenen Vorrichtung, korrespondierende Funktionalität zur Ausführung einzelner Schritte des Verfahrens und Computerprogram zur Implementierung des Verfahrens
CA2777102A1 (en) * 2009-10-09 2011-04-14 Quickplay Media Inc. Digital rights management in a mobile environment
KR101066977B1 (ko) * 2009-12-30 2011-09-22 주식회사 디지캡 다운로드 기반의 수신제한 시스템에서 카스 이미지의 복제여부 판단 방법
DE102010009458A1 (de) * 2010-02-26 2011-09-01 Siemens Aktiengesellschaft Hardware-Einrichtung
CN101894233B (zh) * 2010-07-23 2012-10-31 北京工业大学 一种可信赖的可重构器件及其使用方法
US8625429B2 (en) * 2010-12-17 2014-01-07 Jakub Schmidtke Scheduling data over multiple network interfaces
WO2012122994A1 (en) * 2011-03-11 2012-09-20 Kreft Heinz Off-line transfer of electronic tokens between peer-devices
US9778912B2 (en) * 2011-05-27 2017-10-03 Cassy Holdings Llc Stochastic processing of an information stream by a processing architecture generated by operation of non-deterministic data used to select data processing modules
US10469455B2 (en) * 2011-10-28 2019-11-05 Danmarks Tekniske Universitet Dynamic encryption method
US9134983B2 (en) 2012-01-09 2015-09-15 International Business Machines Corporation Uniquely identifying a machine
CN103577318B (zh) * 2012-08-07 2018-01-30 腾讯科技(深圳)有限公司 一种代码检测方法和装置
CN105190643A (zh) * 2013-05-09 2015-12-23 西门子工业公司 利用两因素认证的移动身份提供商
US9411574B2 (en) * 2013-08-19 2016-08-09 Dresser, Inc. System and method for updating firmware across devices in a process facility
US9576149B2 (en) * 2014-06-13 2017-02-21 BicDroid Inc. Methods, systems and computer program product for providing verification code recovery and remote authentication
CN104410616B (zh) * 2014-11-20 2018-01-05 广州日滨科技发展有限公司 数据加密、解密、传输方法和系统
CN106161366B (zh) * 2015-04-03 2020-02-14 阿里云计算有限公司 一种减少ssl占用空间的方法及系统
US9703973B2 (en) * 2015-04-28 2017-07-11 International Business Machines Corporation Customer load of field programmable gate arrays
US10068097B2 (en) * 2015-08-12 2018-09-04 Microsoft Technology Licensing, Llc Data center privacy
US9767318B1 (en) * 2015-08-28 2017-09-19 Frank Dropps Secure controller systems and associated methods thereof
US10108809B2 (en) * 2015-10-30 2018-10-23 Airwatch Llc Applying rights management policies to protected files
GB2545409B (en) * 2015-12-10 2020-01-08 Advanced Risc Mach Ltd Wear levelling in non-volatile memories
CN108475316B (zh) * 2016-03-08 2022-07-26 惠普发展公司,有限责任合伙企业 使数据安全
EP3330859A1 (en) 2016-12-05 2018-06-06 Universiteit Gent Self-debugging
US10200692B2 (en) 2017-03-16 2019-02-05 Cisco Technology, Inc. Compressed domain data channel for watermarking, scrambling and steganography
FR3079638B1 (fr) * 2018-03-29 2021-04-09 Airtag Procede de mise en oeuvre d'une fonction cryptographique pour une cle secrete
US11210664B2 (en) * 2018-10-02 2021-12-28 Capital One Services, Llc Systems and methods for amplifying the strength of cryptographic algorithms
US11620389B2 (en) 2019-06-24 2023-04-04 University Of Maryland Baltimore County Method and system for reducing false positives in static source code analysis reports using machine learning and classification techniques
CN111241008B (zh) * 2019-12-31 2022-09-23 潍柴动力股份有限公司 用于校正eeprom变量与地址的方法、装置和控制器
CN111510745B (zh) * 2020-03-27 2021-01-19 曹新 一种互联网视频数据加密传输方法
CN112069468B (zh) * 2020-08-26 2023-05-30 上海上讯信息技术股份有限公司 一种页面动态水印的方法及设备
JP2023042903A (ja) * 2021-09-15 2023-03-28 株式会社東芝 通信装置、通信方法および通信システム
CN114826729B (zh) * 2022-04-22 2024-05-28 马上消费金融股份有限公司 一种数据处理方法、页面更新方法及相关硬件

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030084310A1 (en) * 1995-02-14 2003-05-01 Ryota Akiyama Software encoding and decoding method and software encryption system and software decoding system

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4658093A (en) * 1983-07-11 1987-04-14 Hellman Martin E Software distribution system
US4817140A (en) * 1986-11-05 1989-03-28 International Business Machines Corp. Software protection system using a single-key cryptosystem, a hardware-based authorization system and a secure coprocessor
US4853962A (en) * 1987-12-07 1989-08-01 Universal Computer Consulting, Inc. Encryption system
US5029207A (en) * 1990-02-01 1991-07-02 Scientific-Atlanta, Inc. External security module for a television signal decoder
JPH0522281A (ja) * 1991-07-15 1993-01-29 Mitsubishi Electric Corp 秘話装置
US5301231A (en) * 1992-02-12 1994-04-05 International Business Machines Corporation User defined function facility
US5237611A (en) * 1992-07-23 1993-08-17 Crest Industries, Inc. Encryption/decryption apparatus with non-accessible table of keys
US5592212A (en) 1993-04-16 1997-01-07 News Datacom Ltd. Methods and systems for non-program applications for subscriber television
US5452358A (en) * 1994-02-08 1995-09-19 Apple Computer, Inc. Method and apparatus for improving the security of an electronic codebook encryption scheme utilizing a data dependent encryption function
ATE419586T1 (de) * 1995-02-13 2009-01-15 Intertrust Tech Corp Systeme und verfahren zur gesicherten transaktionsverwaltung und elektronischem rechtsschutz
US5987181A (en) * 1995-10-12 1999-11-16 Sharp Kabushiki Kaisha Coding and decoding apparatus which transmits and receives tool information for constructing decoding scheme
US20060265336A1 (en) * 1996-02-26 2006-11-23 Graphon Corporation Automated system for management of licensed digital assets
US20010011253A1 (en) * 1998-08-04 2001-08-02 Christopher D. Coley Automated system for management of licensed software
US6023564A (en) * 1996-07-19 2000-02-08 Xilinx, Inc. Data processing system using a flash reconfigurable logic device as a dynamic execution unit for a sequence of instructions
US6178242B1 (en) 1997-02-07 2001-01-23 Nds Limited Digital recording protection system
US6240183B1 (en) * 1997-06-19 2001-05-29 Brian E. Marchant Security apparatus for data transmission with dynamic random encryption
WO2000076119A1 (en) * 1999-06-08 2000-12-14 General Instrument Corporation Cryptographic processing system
US7093137B1 (en) * 1999-09-30 2006-08-15 Casio Computer Co., Ltd. Database management apparatus and encrypting/decrypting system
US20010050989A1 (en) * 2000-06-07 2001-12-13 Jabari Zakiya Systems and methods for implementing encryption algorithms
US20020018565A1 (en) * 2000-07-13 2002-02-14 Maximilian Luttrell Configurable encryption for access control of digital content
DE50111786D1 (de) * 2000-12-15 2007-02-15 Siemens Ag Verschlüsselung von Steuerungsprogrammen
US7310734B2 (en) * 2001-02-01 2007-12-18 3M Innovative Properties Company Method and system for securing a computer network and personal identification device used therein for controlling access to network components
US20030035547A1 (en) * 2001-03-27 2003-02-20 John Newton Server with multiple encryption libraries
AU2002233609B2 (en) 2001-03-28 2008-05-29 Nds Limited Digital rights management system and method
JP2003018143A (ja) * 2001-06-28 2003-01-17 Mitsubishi Electric Corp 情報処理装置
US7699703B2 (en) * 2001-09-20 2010-04-20 Igt Method and apparatus for registering a mobile device with a gaming machine
CN100431295C (zh) * 2002-11-26 2008-11-05 松下电器产业株式会社 数据加密、解密方法及装置
DE10260406B4 (de) * 2002-12-16 2007-03-08 Francotyp-Postalia Gmbh Verfahren und Anordnung zur unterschiedlichen Erzeugung kryptographischer Sicherungen von Mitteilungen in einem Hostgerät
EP1616229B1 (en) 2003-03-31 2008-10-08 NDS Limited Method and apparatus for preventing cloning of security elements
US7440574B2 (en) * 2003-06-11 2008-10-21 Hewlett-Packard Development Company, L.P. Content encryption using programmable hardware
WO2005010695A2 (en) * 2003-07-16 2005-02-03 Josh Hogan A copy protected mastering system
US6980650B2 (en) 2003-10-27 2005-12-27 Nds Limited System for providing keys
US7434050B2 (en) * 2003-12-11 2008-10-07 International Business Machines Corporation Efficient method for providing secure remote access
US7546641B2 (en) * 2004-02-13 2009-06-09 Microsoft Corporation Conditional access to digital rights management conversion
NZ549543A (en) * 2004-03-22 2008-06-30 Samsung Electronics Co Ltd Authentication between device and portable storage for digital rights management ( DRM )
US7477749B2 (en) 2004-05-12 2009-01-13 Nokia Corporation Integrity protection of streamed content
KR101100391B1 (ko) 2004-06-01 2012-01-02 삼성전자주식회사 휴대형 저장장치와 디바이스간에 디지털 저작권 관리를이용한 콘텐츠 재생방법 및 장치와, 이를 위한 휴대형저장장치
US20050289061A1 (en) * 2004-06-24 2005-12-29 Michael Kulakowski Secure authentication system for collectable and consumer items
US7941794B2 (en) * 2004-08-30 2011-05-10 Sanyo Electric Co., Ltd. Data flow graph processing method and processing apparatus provided with reconfigurable circuit
JP2006080642A (ja) * 2004-09-07 2006-03-23 Sony Corp 情報処理装置および方法、プログラム並びに記録媒体
JP4578366B2 (ja) * 2004-09-20 2010-11-10 株式会社ソニー・コンピュータエンタテインメント ソフトウエアアプリケーションを配布する方法および装置
WO2007075154A2 (en) * 2004-12-06 2007-07-05 The Trustees Of The Stevens Institute Of Technology Method and apparatus for maintaining data integrity for block-encryption algorithms
WO2006085103A1 (en) * 2005-02-11 2006-08-17 Simplex Major Sdn, Bhd. Software protection method
EP1875405B1 (en) 2005-04-20 2013-11-27 NDS Limited Improved cipher system
IL174494A0 (en) 2006-03-22 2007-07-04 Nds Ltd Period keys
US7428306B2 (en) * 2006-04-18 2008-09-23 International Business Machines Corporation Encryption apparatus and method for providing an encrypted file system
US8127130B2 (en) * 2006-04-18 2012-02-28 Advanced Communication Concepts, Inc. Method and system for securing data utilizing reconfigurable logic
MX2009007995A (es) * 2007-01-26 2009-09-30 Interdigital Tech Corp Método y aparato para proteger la información de ubicación y control de acceso utilizando la información de ubicación.
US8478980B2 (en) * 2007-05-18 2013-07-02 Verimatix, Inc. System and method for defining programmable processing steps applied when protecting the data
US8225165B2 (en) * 2007-10-12 2012-07-17 Industrial Technology Research Institute Methods and devices for encoding data in communication systems
US8824684B2 (en) * 2007-12-08 2014-09-02 International Business Machines Corporation Dynamic, selective obfuscation of information for multi-party transmission
US20100278338A1 (en) * 2009-05-04 2010-11-04 Mediatek Singapore Pte. Ltd. Coding device and method with reconfigurable and scalable encryption/decryption modules
US20100325431A1 (en) * 2009-06-19 2010-12-23 Joseph Martin Mordetsky Feature-Specific Keys for Executable Code
US20130214902A1 (en) * 2010-12-02 2013-08-22 Viscount Systems Inc. Systems and methods for networks using token based location

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030084310A1 (en) * 1995-02-14 2003-05-01 Ryota Akiyama Software encoding and decoding method and software encryption system and software decoding system

Also Published As

Publication number Publication date
KR20100017844A (ko) 2010-02-16
WO2008144524A1 (en) 2008-11-27
US9268949B2 (en) 2016-02-23
CN103532707B (zh) 2018-01-26
US8478980B2 (en) 2013-07-02
US20130298255A1 (en) 2013-11-07
CN101682506A (zh) 2010-03-24
EP2158718A1 (en) 2010-03-03
US20080288771A1 (en) 2008-11-20
EP2158718A4 (en) 2014-09-24
CN101682506B (zh) 2013-10-16
CN103532707A (zh) 2014-01-22
EP2158718B1 (en) 2019-04-17
EP3522050A1 (en) 2019-08-07

Similar Documents

Publication Publication Date Title
KR101560131B1 (ko) 데이터를 보호할 때 적용되는 프로그램 가능한 프로세싱 단계들을 정의하기위한 시스템 및 방법
EP2656266B1 (en) Improvements relating to cryptography using polymorphic code
US7549147B2 (en) Security framework for protecting rights in computer software
US9698973B2 (en) Securing accessible systems using dynamic data mangling
US9053300B2 (en) Device and a method for generating software code
US8000473B2 (en) Method and apparatus for generating cryptographic sets of instructions automatically and code generator
KR101216995B1 (ko) 인덱스 테이블 기반 코드 암호화 및 복호화 장치 및 그 방법
CN1759560A (zh) 来自数字权利管理加密解码器的受保护的返回路径
WO2001069355A1 (en) Technique for producing tamper-resistant executable code through watermarking
AU2011349802A1 (en) Improvements relating to cryptography using polymorphic code
CN104318135A (zh) 一种基于可信执行环境的Java代码安全动态载入方法
CN104298932A (zh) 一种so文件的调用方法及装置
WO2013139398A1 (en) Software fingerprinting
CN103250372B (zh) 获得控制字以揭示客户端设备标识
US20150269367A1 (en) Code diversity method and system
CN112597453A (zh) 程序代码加密解密方法和装置
Plasmans White-box cryptography for digital content protection
US7783038B2 (en) Using code as keys for copy protection
GB2391142A (en) Cryptographic key management for content protection
US20080289046A1 (en) Method and device for the prevention of piracy, copying and unauthorized execution of computer-readable media

Legal Events

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

Payment date: 20180927

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190925

Year of fee payment: 5