KR20100031106A - 데이터 보안 - Google Patents

데이터 보안 Download PDF

Info

Publication number
KR20100031106A
KR20100031106A KR1020097026630A KR20097026630A KR20100031106A KR 20100031106 A KR20100031106 A KR 20100031106A KR 1020097026630 A KR1020097026630 A KR 1020097026630A KR 20097026630 A KR20097026630 A KR 20097026630A KR 20100031106 A KR20100031106 A KR 20100031106A
Authority
KR
South Korea
Prior art keywords
data
content data
key
content
predetermined
Prior art date
Application number
KR1020097026630A
Other languages
English (en)
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 KR20100031106A publication Critical patent/KR20100031106A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption

Landscapes

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

Abstract

데이터 보안을 증가시키기 위한 시스템(100)은 보호될 미리 결정된 시스템 데이터(104)를 포함한다. 암호화 유니트(108)는 각각의 키들에 따라 콘텐트 데이터의 각각의 블록들의 암호화 처리를 위해 사용된다. 키 제공자(106)는 미리 결정된 시스템 데이터(104)의 각각의 부분(112)에 따라 콘텐트 데이터의 각각의 블록의 처리를 위해 사용된 각각의 키를 결정하고, 상기 부분은 모든 미리 결정된 시스템 데이터를 포함하지 않고, 여기서 미리 결정된 시스템 데이터의 상이한 각각의 부분들은 콘텐트 데이터의 각각의 블록들을 위해 선택된다. 데이터 보안을 증가시키기 위한 서버 시스템(200)은 클라이언트 시스템(100)에 처리된 콘텐트 데이터(110)를 제공하기 위한 출력(202)을 포함하고, 클라이언트 시스템은 보호될 미리 결정된 시스템 데이터(104)를 포함한다. 서버 시스템(200)은 또한 암호화 유니트(208) 및 키 제공자(206)를 포함한다.
데이터 보안, 암호화 유니트, 서버 시스템, 키 제공자, 클라이언트 시스템

Description

데이터 보안{DATA SECURITY}
본 발명은 데이터 보안을 증가시키는 것에 관한 것이다.
저작권 콘텐트에 대한 분배 매체로서 인터넷의 사용은 콘텐트 제공자의 권리들을 보호하기 위한 도전을 생성하였다. 특히, 콘텐트 제공자들의 저작권들 및 비지니스 모델들을 보장하는 것이 요구된다. 점점, 고객 전자제품 플랫폼들은 소프트웨어가 로딩된 처리기를 사용하여 동작된다. 상기 소프트웨어는 오디오 및/또는 비디오 같은 디지털 콘텐트의 렌더링(재생)을 위한 기능의 메인 부분을 제공할 수 있다. 콘텐트가 사용될 수 있는 기간들 및 조건들을 포함하는 콘텐트 소유자의 권리들을 강화하기 위한 하나의 방법은 재생 소프트웨어를 통한 제어를 제공하는 것이다. 예를 들어 텔레비젼들 또는 DVD 플레이어들에서 구현되는 종래의 많은 고객 전자제품 플랫폼들이 폐쇄적으로 사용되는 반면, 현재보다 많은 플랫폼들이 적어도 부분적으로 개방되었다. 이것은 특히 PC 플랫폼에 적용할 수 있는데, 몇몇 사용자들은 콘텐트에 액세스를 제공하는 PC 하드웨어 및 소프트웨어를 통해 완전한 제어를 할 수 있다고 생각하기 때문이다. 또한, 사용자들은 임의의 콘텐트 보호 메카니즘들을 공격 및 바이패스하기 위한 다량의 시간 및 자원들을 가질 것이라 생각하였다. 결과적으로, 콘텐트 제공자들은 안전하지 않은 네트워크를 통해 합법의 사 용자들에게 그리고 모든 사용자들 또는 장치들을 신뢰할 수 없는 경우 커뮤니티에 콘텐트를 전달하여야 한다.
디지털 권리 관리 시스템들은 종종 불법 분배 콘텐트의 소스를 추적할 수 있도록 콘텐트 및/또는 디지털 서명 방법들의 인증되지 않은 사용을 방지하기 위한 암호화 방법들을 사용한다. 디지털 권리 관리시 발생하는 문제들 중 하나는 콘텐트가 사용될 수 있는 기간들 및 조건들을 강화하는 소프트웨어 코드가 탬퍼(tampered)되지 않아야 한다는 것이다.
암호화에 따른 디지털 권리 관리의 취약성 중 두 개의 영역들은 콘텐트가 사용될 수 있는 기간들 및 조건들을 강화하는 소프트웨어 컴포넌트들, 및 키 분배 및 처리이다. 상기 기간들 및 조건들의 강화를 제거하는 것을 목적으로 하는 공격자는 소프트웨어 컴포넌트들로 구성된 프로그램 코드의 탬퍼링을 통해 이를 달성하고자 할 수 있다. 키 처리와 관련하여, 재생 동안 미디어 플레이어는 라이센스 데이터베이스로부터 해독 키를 검색하여야 한다. 그 다음 암호화된 콘텐트의 해독을 위하여 메모리에 이런 해독 키를 어딘가에 저장하여야 한다. 이것은 키 공격에 대한 두 개의 옵션들을 공격자에게 제공한다. 첫째, 라이센스 데이터베이스 액세스 기능의 역방향 엔지니어링은 블랙 박스 소프트웨어(즉, 공격자는 소프트웨어 기능의 내부 작업들을 이해하지 않음)를 유발하여, 공격자가 모든 라이센스 데이터베이스로부터 애셋 키들(asset keys)을 검색하게 한다. 둘째, 콘텐트 해독 동안 메모리로의 액세스들의 관찰에 의해, 애셋 키를 검색하는 것이 가능할 수 있다. 양쪽 경우들에서 키는 절충되도록 고려된다.
탬퍼-방지 소프트웨어는 목적 지향 탬퍼링을 복잡하게 하기 위한 특정 특징들을 가진 소프트웨어를 나타낸다. 소프트웨어 애플리케이션들의 탬퍼 방지를 증가시키기 위한 다양한 기술들이 존재한다. 이들 기술들의 대부분은 소프트웨어 애플리케이션의 제어 및 데이터 경로 모두에서 랜덤성 및 복잡성의 장막을 부가함으로써 애플리케이션의 내장 지식을 숨기는 것을 바탕으로 한다. 이런 것의 숨은 생각은 단순히 코드 검사에 의해 정보를 추출하기에는 보다 어렵게 되는 것이다. 그러므로 애플리케이션의 액세스 및 허가 제어를 처리하고 결과적으로 이를 변경하기 위한 코드를 발견하는 것은 보다 어렵다. 그러나, 소프트웨어 애플리케이션들의 탬퍼 방지를 증가시키기 위한 이들 기술들은 항상 만족스럽진 않다.
데이터 보안을 증가시키기 위한 개선된 시스템을 가지는 것이 바람직하다. 이런 관심 사항을 보다 잘 처리하기 위해, 본 발명의 제 1 측면에서 시스템으로서,
처리될 콘텐트 데이터를 수신하기 위한 입력부;
보호될 미리 결정된 시스템 데이터;
각각의 키들에 종속하여 콘텐트 데이터의 각각의 블록들의 암호화 처리를 위한 암호화 유니트; 및
상기 미리 결정된 시스템 데이터의 각각의 부분에 종속하여 콘텐트 데이터의 각각의 블록을 처리하기 위해 사용된 각각의 키를 결정하기 위한 키 제공자로서, 상기 부분은 모든 상기 미리 결정된 시스템 데이터를 포함하지 않고, 여기서 미리 결정된 시스템 데이터의 상이한 각각의 부분들은 콘텐트 데이터의 상기 각각의 블록들을 위해 선택되는, 상기 키 제공자를 포함하는, 시스템이 제공된다.
키가 시스템 데이터의 선택된 부분에 의존하기 때문에, 부당한 사용자에 의한 시스템 데이터의 이런 선택된 부분에 대한 변경은 종종 키를 변화시킬 것이고, 따라서 성공적일 각각의 콘텐트 블록의 암호화 처리를 방해한다. 이런 방식으로, 선택된 부분은 탬퍼링에 대해 보호된다. 상이한 각각의 부분들은 각각의 콘텐트 블록들에 사용되기 때문에, 비교적 다수의 데이터 비트들은 탬퍼링에 대해 보호된다. 다른 장점은 시스템이 시스템 데이터 특정 암호문을 생성할 수 있게 한다는 것이다; 암호화 처리는 동일한 시스템 데이터가 시스템에 이용 가능한 경우만 성공할 수 있는데, 그 이유는 키가 시스템 데이터에 의존하기 때문이다. 이것은 일반적으로 이 시스템 데이터가 콘텐트 데이터를 처리하기 위하여 인증받지 않은 적어도 몇몇 시스템들에 이용될 수 없기 때문에, 보안을 강화시킨다.
일 실시예에서, 미리 결정된 시스템 데이터는 컴퓨터 실행 가능 명령들을 포함하는 소프트웨어 코드를 포함한다. 이 경우, 소프트웨어 코드는 인증되지 않은 변형들에 대해 보호되는데, 그 이유는 소프트웨어 코드를 변경하는 것이 키가 소프트웨어 코드의 변화된 부분에 의존할 때마다 상기 처리가 방지된다는 것을 의미하기 때문이다. 예를 들어, 보호될 소프트웨어 코드는 디지털 권리 관리를 강화하는 것과 관련된 명령들을 포함한다.
일 실시예에서, 키 제공자는 콘텐트 데이터의 각각의 블록 외측 콘텐트 데이터에 의존하여 상기 미리 결정된 시스템 데이터의 부분을 선택하기 위해 배열된다. 이것은 송신측 및 수신측 모두에서 미리 결정된 시스템 데이터의 동일한 부분을 선택하기 위한 매우 효과적인 방식이다. 이것은 일반적으로 콘텐트 데이터가 몇몇 랜덤성을 가지기 때문에, 선택된 부분들에 랜덤성을 도입한다.
일 실시예에서, 키 제공자는 상기 콘텐트 데이터의 암호문을 바탕으로 하는 부분을 선택하기 위하여 배열된다. 암호문이 평문보다 랜덤한 특성들을 가지기 때문에, 이런 경우 소프트웨어 코드 부분의 선택은 보다 랜덤한 특성들을 가진다.
일 실시예에서, 키 제공자는 이전에 처리된 데이터 블록의 암호문을 바탕으로 하는 부분을 선택하기 위해 배열된다. 이전에 처리된 데이터 블록의 암호문은 선택된 부분이 현재 데이터 블록을 처리하기 위하여 필요한 시간에 쉽게 이용할 수 있다. 이것은 수신측 및 송신측 모두에서 진실이다.
일 실시예에서, 키 제공자는 암호화 키를 얻기 위하여 선택된 부분의 의사-랜덤 함수를 계산하기 위하여 배열된다. 의사-랜덤 문자는 암호화 방식을 깨기 어렵게 만든다. 다른 실시예에서, 의사-랜덤 함수는 해시 함수이다.
일 실시예에서, 암호화 유니트는 각각의 키의 적어도 일부 및 상기 콘텐트 데이터의 각각의 블록의 적어도 일부를 포함하는 XOR 연산을 적용하기 위하여 배열된다. XOR 함수는 실행하기에 특히 효과적이고 여전히 쉽게 깨지 못할 것이다.
일 실시예는 콘텐트 데이터에 대응하는 암호문을 저장하기 위한 저장소를 포함하고, 여기서 암호화 유니트는 저장된 콘텐트 데이터를 해독하기 위하여 배열된다. 저장소는 원할 때마다 콘텐트 데이터가 저장 및 검색되게 한다. 암호문은 미리 결정된 시스템 데이터에 의존하기 때문에, 저장된 콘텐트 데이터는 이런 시스템 데이터를 가지지 않는 다른 시스템들에 의해 사용될 수 없다. 그러므로, 저장소는 비교적 안전하다.
일 실시예에서, 상기 암호화 유니트는,
각각의 키들에 의존하는 입력으로부터 수신된 콘텐트 데이터의 각각의 블록들을 암호화하고 상기 저장소를 사용하여 암호화된 콘텐트 데이터를 저장하기 위한 암호화기; 및
각각의 키들에 종속하여 상기 저장소를 사용하여 저장된 상기 암호화된 콘텐트 데이터의 각각의 블록들을 해독하기 위한 해독기를 포함한다.
키가 시스템 특정되기 때문에(즉, 미리 결정된 시스템 데이터에 의존하기 때문에), 암호화 및 해독은 동일한 시스템에서 바람직하게 수행될 수 있다. 이것의 하나의 적당한 애플리케이션은 콘텐트가 추후 해독을 위해 시스템상에서 로컬적으로 암호화되고 저장되며 동일한 시스템에 의해 사용하는 경우이다.
일 실시예에서, 상기 암호화 유니트는 각각의 키에 종속하여 상기 콘텐트 데이터에 디지털 워터마크를 적용하기 위해 배열된다. 디지털 워터마크가 키 데이터에 종속하기 때문에, 상기 워터마크는 미리 결정된 시스템 데이터에 종속한다. 그러므로, 디지털 워터마크는 콘텐트 데이터를 워터마킹하기 위해 사용된 시스템 데이터를 식별하기 위해 사용될 수 있다.
일 실시예는 데이터 보안을 증가시키기 위한 서버 시스템을 포함하고, 상기 서버 시스템은,
처리될 콘텐트 데이터를 수신하기 위한 입력부;
클라이언트 시스템에 처리된 콘텐트 데이터를 제공하기 위한 출력부를 포함하고, 상기 클라이언트 시스템은 보호될 미리 결정된 시스템 데이터를 포함하고;
각각의 키들에 종속하여 상기 콘텐트 데이터의 각각의 블록들의 암호화 처리를 위한 암호화 유니트;
상기 미리 결정된 시스템 데이터의 각각의 부분에 종속하여 상기 콘텐트 데이터의 각각의 블록의 처리를 위해 사용된 상기 각각의 키를 결정하기 위한 키 제공자로서, 상기 부분은 모든 상기 미리 결정된 시스템 데이터를 포함하지 않고, 여기서 미리 결정된 시스템 데이터의 상이한 각각의 부분들은 콘텐트 데이터의 각각의 블록들에 대해 선택되는, 상기 키 제공자를 포함한다.
일 실시예는 클라이언트 시스템 및 서버 시스템을 포함하는 시스템을 포함하고, 여기서
서버 시스템의 출력부는 상기 클라이언트 시스템의 입력부에 상기 서버 시스템의 상기 암호화 유니트에 의해 처리된 상기 콘텐트 데이터를 제공하기 위하여 배열되고; 및
서버 시스템의 키 제공자 및 클라이언트 시스템의 키 제공자는 상기 서버 시스템의 입력부에서 상기 콘텐트 데이터를 수신한 것에 응답하고 상기 클라이언트 시스템의 상기 입력부에서 대응하는 콘텐트 데이터를 수신한 것에 응답하여 상기 소프트웨어 코드의 동일한 부분을 사용하기 위하여 배열된다.
일 실시예는 데이터 보안을 증가시키는 방법을 포함하고, 상기 방법은 처리될 콘텐트 데이터를 수신하는 단계;
각각의 키들에 종속하여 상기 콘텐트 데이터의 각각의 블록들의 암호화 처리 단계;
보호될 미리 결정된 시스템 데이터의 각각의 부분에 종속하여 상기 콘텐트 데이터의 각각의 블록의 처리를 위해 사용된 각각의 키를 결정하는 단계로서, 상기 부분은 모든 미리 결정된 시스템 데이터를 포함하지 않고, 상기 미리 결정된 시스템 데이터의 상이한 각각의 부분들은 콘텐트 데이터의 각각의 블록들에 대해 선택되는, 상기 키 결정 단계를 포함한다.
일 실시예는 데이터 보안을 증가시키는 방법을 포함하고, 상기 방법은,
처리될 콘텐트 데이터를 수신하는 단계;
클라이언트 시스템에 처리된 콘텐트 데이터를 제공하는 단계로서, 상기 클라이언트 시스템은 보호될 미리 결정된 시스템 데이터를 포함하는, 상기 처리된 콘텐트 데이터 제공 단계;
각각의 키들에 종속하여 상기 콘텐트 데이터의 각각의 블록들의 암호화 처리 단계;
상기 미리 결정된 시스템 데이터의 각각의 부분에 종속하여 상기 콘텐트 데이터의 각각의 블록의 처리를 위해 사용된 상기 각각의 키를 결정하는 단계로서, 상기 부분은 모든 미리 결정된 시스템 데이터를 포함하지 않고, 미리 결정된 시스템 데이터의 상이한 각각의 부분들은 콘텐트 데이터의 각각의 블록들을 위해 선택되는, 상기 키 결정 단계를 포함한다.
일 실시예는 처리기로 하여금 상기된 방법들 중 적어도 하나를 수행하도록 하는 컴퓨터 실행 가능 명령들을 포함하는 컴퓨터 프로그램 제품을 포함한다.
이하 "Chow 1"로 참조되는, "White-Box Cryptography and an AES Implementation", by Stanley Chow, Philip Eisen, Harold Johnson, and Paul C. Van Oorschot, in Selected Areas in Cryptography: 9th Annual International Workshop, SAC 2002, St. John's, Newfoundland, Canada, August 15-16, 2002, 및 이하 "Chow 2"로 참조되는, "A White-Box DES Implementation for DRM Applications", by Stanley Chow, Phil Eisen, Harold Johnson, and Paul C. van Oorschot, in Digital Rights Management: ACM CCS-9 Workshop, DRM 2002, Washington, DC, USA, November 18, 2002는 개별 단계들보다 조합들을 나타내는 랜덤 전단사(bijection)들을 가진 테이블들을 인코딩하고, 그리고 내장 애플리케이션에 추가로 부가함으로써 암호화 경계를 확장하는 것의 조합에 의해 키를 숨기고자 하는 의도를 가진 방법들을 개시한다.
국제 출원 일련 번호 PCT/IB2007/050640(위임 도킷 PH005600)에서, 데이터 처리 시스템의 보전을 보호하는 방법이 개시된다. 상기 방법은 보호될 데이터 문자열을 결정하는 것을 포함하고, 데이터 문자열의 보전은 데이터 처리 시스템의 보전 표시이다. 파라미터들의 세트가 계산되어 파라미터들의 세트의 비트 표현에 상기 데이터 문자열을 통합하기 위해 파라미터들의 세트의 리던던시를 사용하여 미리 결정된 데이터 처리 함수를 표현한다. 시스템은 파라미터들의 세트에 따라 데이터를 처리하도록 인에이블된다. 파라미터들의 세트는 암호화 키를 포함하는 암호화 알고리즘의 적어도 일부를 나타낸다. 또한 파라미터들의 세트는 룩-업 테이블들의 네트워크를 나타낸다. 룩-업 테이블들의 네트워크는 데이터 처리 알고리즘의 화이트-박스 구현의 복수의 룩-업 테이블들을 포함한다. 데이터 처리 알고리즘은 암호화 알고리즘을 포함한다.
본 발명의 이들 및 다른 측면들은 도면을 참조하여 추가로 열거 및 기술될 것이다.
도 1은 암호화 방식을 도시하는 다이어그램.
도 2는 해독 방식을 도시하는 다이어그램.
도 3은 암호화 방식을 도시하는 다이어그램.
도 4는 해독 방식을 도시하는 다이어그램.
도 5는 일 실시예를 도시하는 다이어그램.
도 6은 일 실시예를 도시하는 다이어그램.
탬퍼-방지 소프트웨어는 목표된 탬퍼링을 수행하기 어렵게 하는 소프트웨어이다. 소프트웨어 탬퍼-방지는 많은 애플리케이션들, 예를 들어 디지털 권리 관리(DRM) 클라이언트들, 지불 시스템들, 및 조건적 액세스 시스템들에서 중요하다. 위협들 중 하나는 공격자가 액세스 결정들 같은 소프트웨어의 중요 작용들 또는 공용 키 같은 중요 보안 데이터를 변경하기 위해 시도하는 것이다. 이런 상황에서 코드 하드닝(hardening)이 프로그램 흐름을 불명료하게 하고 따라서 프로그램의 중요 부분들을 숨김으로써 구현될 수 있다는 것이 주지된다. 코드 하드닝은 또한 비록 공격자가 중요 부분들의 위치에 관한 전체 정보를 가지더라도 공격자의 경로에 방해물들을 배치함으로써 구현될 수 있다. 코드 하드닝을 구현하기 위한 하나의 방식은 프로그램의 많은 부분들을 인터위브(interweave)하여, 단순히 공격자가 변경하는 것에 관심 있는 피스(piece) 대신 공격자가 코드의 상당 부분들을 변경하게 한다.
코드 하드닝의 하나의 방법은 프로그램 코드의 해시들의 검증이다. 해싱 방법은 인접한 메모리 어드레스들에서 작용한다. 어느 코드 부분들이 해싱된 것인지를 공격자가 식별하기는 비교적 쉬울 수 있다. 코드의 큰 블록이 탬퍼링에 대해 하드닝될 필요가 있다면, 해싱 방법은 다수의 작업을 요구할 수 있다. 보다 큰 프로그램들에 대해 보다 효과적인 방법을 가지는 것이 바람직하다. 또한 암호화된 콘텐트(암호문)가 프로그램 코드에 종속하는 방법, 즉 프로그램 코드가 키-유사 임무를 수행하는 시스템을 가지는 것이 바람직하다. 보다 일반적으로, 탬퍼링에 대해 비교적 다량의 데이터를 보호하는 것이 바람직하고, 여기서 데이터는 바람직하게 하드웨어 식별자 데이터, BIOS 데이터, 레지스트리 엔트리들, 또는 콘텐트 데이터 단편 같은 시스템에서 이용할 수 있는 데이터이다.
비록 본원에서, 소프트웨어 코드의 보호가 강조되지만, 그 개념은 임의의 타입의 데이터를 보호하기 위해 확장될 수 있다. 효과적으로, 기술된 실시예들은 암호화 알고리즘에 키 데이터로서 사용될 데이터의 비교적 큰 바디를 사용하게 할 것이다. 상기 큰 바디의 데이터는 종종 암호화 시스템들에 사용된 예를 들어 비교적 작은 키들과 비교하여 부당한 엔티티들에 의해 덜 공격받게 한다. 보호될 미리 결정된 시스템 데이터의 예들은 시스템, 하드웨어 식별자들, BIOS, 콘텐트, 문서들, 레지스트리 세팅들, 연산 시스템 엘리먼트들, 및 등등에 존재하는 임의의 데이터를 포함한다.
일 실시예에서, 몇몇 장치에서 실행하는 프로그램 코드는 탬퍼 방지용으로 만들어진다. 상기 방법은 암호 알고리즘을 사용하고 코드를 사용한 탬퍼링이 사용자에 대한 (부분적) 기능 손실을 유발한다는 생각을 바탕으로 한다. 해독 알고리즘이 장치에서 구현되었다는 것이 가정된다. 일 실시예에서, 해독 알고리즘은 키 및 프로그램 코드에 종속된다. 프로그램 코드에 대한 변경은 해독 알고리즘이 더 이상 적당하게 해독하지 않는다는 것을 의미한다. 따라서, 프로그램 코드는 비교적 탬퍼를 방지한다.
해독 알고리즘 및 프로그램 코드 사이의 종속성을 구현하기 위한 하나의 방법은 코드 단편으로서 키를 정의하는 것이다. 이를 도시하기 위해, AES 블록 암호가 적용되는 것을 가정한다. 이런 블록 암호는 10 라운드(round)로 구성되고 각각의 라운드는 128-비트 라운드 키로 파라미터화된다. 각각의 라운드 키가 컴퓨터 프로그램의 128-비트 단편으로서 정의되면, 라운드 키들에 사용된 프로그램의 총 10×128=1280 비트들을 유발한다. 따라서 컴퓨터 프로그램 코드의 이들 1280 비트들은 탬퍼를 방지하는데, 컴퓨터 프로그램 코드의 이들 비트들의 변화가 키에 대한 변화를 의미하고, 키는 원하는 프로그램 동작을 얻기 위하여 변화되지 않은 형태를 필요로 하기 때문이다.
일 실시예에서, 임의의 크기의 프로그램은 탬퍼 방지될 수 있다. n 비트들의 블록 크기를 가진 블록 암호가 일 예로서 사용된다. n 이상의 비트들로 이루어 진 콘텐트를 암호화/해독할 때, 다중 암호화들/해독들은 콘텐트의 다중 블록들을 위해 수행될 필요가 있다. 블록 암호 모드들은 암호화들/해독들이 어떻게 함께 묶이는지를 지정하도록 개발되었다. pi가 i번째 평문 블록이고 ci가 대응하는 i번째 암호문 블록이라 하자. 암호문 블록(ci)은 코드 단편(fi)에 종속한다. 즉, pi의 암호화 및 ci의 해독 모두 코드 단편 fi에 종속한다. ci가 종속하는 코드 단편은 ci 이전 암호문 블록인 값(ci -1)으로부터 유도된다. 암호들의 하나의 특성은 연속적인 암호문 블록들이 의사-랜덤 시퀀스를 형성한다는 것이기 때문에, ci가 종속하는 코드 단편은 의사-랜덤 값으로부터 유도되고; 따라서 코드 단편은 의사-랜덤하게 선택된다.
코드 단편(f)에서 비트의 변경은 이런 암호화/해독이 f에 종속하는 경우 올바르지 않은 암호화/해독을 유발한다. 게다가, 암호화/해독이 종속하는 코드 단편들은 의사-랜덤 방식으로 선택된다. 따라서, 큰 소프트웨어 프로그램 탬퍼 방지를 위한 효과적인 방법이 제공된다.
블록 암호들은 일반적으로 일정한 크기의 블록들을 암호화/해독하고, n 비트들이다. 블록 암호들이 n 비트들의 이상의 콘텐트에 적용되는 방식들은 블록 암호 모드들이라 한다. 몇몇 블록 암호 모드들은 NIST에 의해 표준화되었다. 이들 모드들 중 가장 대중적인 것은 CBC(암호 블록 체이닝) 모드이다. 이 모드 및 다른 블록 암호 모드들은 제한 없이 사용될 수 있다. CBC 모드는 다음과 같이 작동한 다; 도 1 및 2 참조.
평문 및 암호문이 n 비트 블록들로 분할된다. i 번째 평문 블록은 pi 로 표시되고 i 번째 암호 블록은 ci로 표시된다. 게다가, EK(pi)는 키 K로 pi의 암호화를 나타내고 DK(ci)는 키 K로 ci의 해독을 나타낸다. CBC에 따른 평문 및 암호문 사이의 관계는
Figure 112009078868910-PCT00001
Figure 112009078868910-PCT00002
로 주어지고, 여기서 c0는 몇몇 초기 값 Ⅳ으로서 정의되고,
Figure 112009078868910-PCT00003
는 XOR 연산을 나타낸다. 이런 블록 암호 모드 뒤에 숨은 생각은 평문 블록 i가 암호문 블록 i-1을 부가함으로써 랜덤화되는 것이다.
일 실시예에서, CBC 모드가 사용된다. 다른 블록 암호 모드들이 또한 사용될 수 있다. 프로그램 코드 및 암호화/해독 사이의 종속성을 구현하기 위하여, 두 개의 질문들이 발생한다. 첫째, 코드 단편이 i번째 암호화/해독에 의존하는지에 대한 질문이 발생한다. 둘째, 상기 의존성이 어떻게 구현되는지에 대한 질문이 발생한다.
제 1 질문은 다음과 같이 대답된다. 암호문 블록(i-1)이 i번째 암호화/해독에 따라 이루어진 코드 단편을 결정한다고 하자. 이것은 예를 들어 다음과 같이 구현될 수 있다. 탬퍼 방지가 이루어질 필요가 있는 소프트웨어 코드가 어드레스들(0,1,...,28-1)에서 메모리에 저장된다고 가정한다. 그러나, 이것은 일 예일 뿐이다. 보다 큰 수의 어드레스들은 간단한 방식으로 사용될 수 있다. 각각의 어드 레스는 프로그램의 하나의 워드를 포함한다. 게다가, 블록 암호 모드에서 각각의 암호화/해독이 m개의 워드들로 구성된 코드 단편에 종속하는 것을 가정한다. 그 다음 암호화/해독(i+1)은 어드레스
Figure 112009078868910-PCT00004
에서 소프트웨어 코드 단편에 종속하여 이루어진다.
암호문 블록들의 시퀀스가 의사-랜덤 비트 스트림으로서 보여질 수 있기 때문에, 이런 전략은 각각의 암호화/해독시 (의사-) 랜덤 코드 단편이 보전을 위하여 검사되는 특성을 가진다. 이것은 프로그램의 각각의 변화가 궁극적으로 올바르지 않은 암호화/해독을 유발하기 때문에 비교적 큰 프로그램들이 탬퍼 방지되게 만들어지는 것을 의미한다.
발생하는 제 2 질문은 블록 암호화/해독 및 코드 단편 사이의 종속성을 구현하는 방법이다. CBC 모드에서, ith 암호화/해독은 (i-1)th 암호블록에 좌우되어 만들어진다. 이런 종속성이 생성되는 것과 동일한 방식으로, 코드 단편에 대한 종속성이 생성될 수 있다. 이것은 ith 암호화/해독이 n 비트들(여기서 n 비트들은 블록 크기임)로 이루어진 코드 단편(f(ci -1))에 좌우되면, 암호문 블록(ci) 및 평문 블록(pi)은 각각
Figure 112009078868910-PCT00005
Figure 112009078868910-PCT00006
로 주어지는 것을 의미한다. 이것은 도 3 및 4에서 도시된다.
도 5는 본 발명의 실시예를 도시한다. 도면은 데이터를 처리하기 위한 시스 템(100)을 도시한다. 시스템은 클라이언트 시스템일 수 있다. 도면은 또한 데이터를 처리하기 위한 서버 시스템(200)을 도시한다. 예를 들어, 서버(200)는 예를 들어 인터넷 같은 데이터 네트워크를 통해 또는 CD-ROM 디스크 같은 제거 가능한 저장 매체에 의해 클라이언트(100)에 제공되는 처리된 데이터(110)를 준비한다. 데이터는 내부 저장 매체(116)로부터 또한 발생할 수 있다.
도면은 입력부(102)를 도시한다. 입력부(102)는 처리될 필요가 있는 데이터를 수신한다. 예를 들어 서버(200)로부터 데이터를 수신한다. 데이터는 또한 로컬 데이터 저장소(116)로부터 수신될 수 있다. 데이터는 로컬적으로 실행하는 다른 애플리케이션 또는 사용자 입력으로부터 수신될 수 있다. 데이터는 데이터 파일, 이미지, 오디오 파일, 영화, 또는 스트리밍 비디오 또는 스트리밍 오디오 같은 스트리밍 미디어 콘텐트를 포함할 수 있다. 데이터는 암호화될 수 있고, 처리는 암호화된 데이터의 해독일 수 있다. 처리는 또한 데이터의 서명 날인(signing) 또는 워터마킹, 또는 데이터의 서명 또는 워터마크를 검증하는 것을 수반할 수 있다. 데이터는 선택기(106)로 전달된다.
키 제공자(106)는 수신된 콘텐트를 처리할 때 사용될 소프트웨어 코드의 부분(112)을 선택한다. 바람직하게, 선택기(106)는 구현되어 모든 소프트웨어 코드(104)가 시간에 따라 선택되는 것을 달성하기 위하여 코드의 다른 부분들을 정기적으로 선택한다. 키 제공자(106)는 선택된 부분에 따라 암호 키를 제공한다. 선택된 부분(112)은 암호 키를 직접적으로 나타내거나, 암호 키는 이 부분(112)으로부터 유도될 수 있다. 예를 들어 키는 코드 부분의 콘텐트들의 해시 함수로서 계 산될 수 있다. 바람직하게, 키 제공자(106)는 암호문을 바탕으로 부분을 선택하기 위하여 배열된다. 블록 암호가 사용되면, 이전에 처리된 데이터 블록이 사용될 수 있다.
암호 유니트(108)는 입력부(102)를 통하여 그리고 키 제공자(106)에 제공된 키에 따라 검색된 데이터의 암호 처리를 수행한다. 암호 처리는 제공된 키를 사용하여 콘텐트를 해독하는 것을 포함할 수 있다. 암호 유니트는 예를 들어 평문 또는 암호문으로 선택된 부분의 비트들을 XOR함으로써 키로서 직접적으로 선택된 부분의 비트 표현을 사용할 수 있다. 선택된 부분(112) 및 콘텐트(110)를 포함하는 임의의 선형 또는 비선형 동작이 둘 사이의 종속성을 생성하기 위하여 사용될 수 있다. 암호 처리는 암호화 및/또는 디지털 서명 날인 및/또는 디지털 워터마킹을 수반할 수 있다. 그러나, 이들은 암호 처리의 비제한적인 예들이다.
암호 유니트(108)의 출력은 암호 처리된 데이터(114)이다. 이 데이터는 저장소(116) 또는 전송 또는 추가 처리 및/또는 렌더링을 위해 출력된다. 예를 들어, 출력 데이터(114)는 텔레비젼상에 렌더링하기 위한 비디오 신호를 포함할 수 있다.
시스템(100)은 로컬 또는 원격 저장 매체(116)상 데이터의 안전한 저장을 위해 사용될 수 있다. 저장소(116)는 콘텐트 데이터에 대응하는 암호문을 저장하기 위하여 사용된다. 데이터가 해독될 필요가 있을 때마다, 저장소(116)에 저장된 암호화된 콘텐트는 입력부(102)를 통하여 암호 유니트(108) 및 키 제공자(106)에 공급된다.
저장소(116)에 저장된 암호화된 데이터는 외부 소스로부터 수신될 수 있다. 그러나, 시스템 자체에 의해 또한 생성될 수 있고; 예를 들어, 사용자 프로파일 또는 사용자의 문서들 또는 오디오/비디오 콘텐트는 암호화된 형태로 안전하게 저장될 수 있다. 이를 위해, 바람직하게 암호 유니트는 암호화기 및 해독기 둘다를 포함한다. 입력부(102)로부터 수신된 암호화되지 않은 데이터는 우선 키 제공자(106) 및 암호 유니트(108)를 사용하여 암호화되고 따라서 암호화된 데이터(114)는 저장소(116)에 저장되고, 그 다음 저장된 암호화된 데이터가 필요할 때마다 저장소(116)로부터 입력부(102)로 그리고 입력부로부터 키 제공자(106) 및 암호 유니트(108)로 공급되어 출력부(114)에서 해독된 데이터를 얻는다.
선택적으로 암호 유니트는 소프트웨어 코드(104)의 선택된 부분(112)에 따라 콘텐트 데이터에 디지털 워터마크를 적용한다.
실시예는 서버 시스템(200)을 포함한다. 이 서버 시스템(200)은 클라이언트(100)의 입력부(112)에 제공되기 전에 콘텐트 데이터를 준비하기 위해 사용된다. 서버(200) 및 클라이언트(100)는 상이한 컴퓨터들에서 실행될 수 있다. 서버(200) 및 클라이언트(100)는 단일 머신에서 실행하는 다른 처리들로 이루어질 수 있다. 서버(200)는 클라이언트(100)에 사용된 소프트웨어 코드의 지식을 가진다. 이 지식은 소프트웨어 코드(104)의 선택된 부분들(112)에 따라 클라이언트(100)에서 적당하게 처리될 수 있는 콘텐트 데이터를 형성하기에 적어도 충분하다. 예를 들어 서버는 키 제공자(106)에 의해 선택될 수 있는 코드의 다른 부분들(112)에 대응하는 미리 계산된 암호 키들의 리스트를 가진다. 선택적으로, 키 제공자(206)는 소 프트웨어 코드(104)의 로컬 카피를 가진다. 선택적으로, 예를 들어, 서버(200)의 선택기(206)는 클라이언트(100)에 저장된 실제 코드(104)로 액세스를 가진다. 서버 시스템(200)은 출력부(202), 키 제공자(206), 암호 유니트(208) 및 입력부(210)를 포함한다. 콘텐트 데이터(214)는 입력부(210)에 의해 수신되어 키 제공자(206) 및 암호 유니트(208)에 전달된다. 키 제공자(206)는 소프트웨어 코드(104) 부분(112)을 선택하고 선택된 부분(112)에 따라 암호 유니트(208)에 키를 제공한다. 이 키는 입력 콘텐트 데이터의 암호 처리를 위하여 암호 유니트(208)에 의해 사용된다. 처리된 콘텐트 데이터(110)는 출력부(202)를 통하여 클라이언트 시스템(100)의 입력부(102)에 제공된다.
실시예는 데이터 보안을 증가시키는 방법을 포함하고, 상기 방법은 처리될 콘텐트 데이터(110)를 수신하는 단계; 각각의 키들에 따라 콘텐트 데이터의 각각의 블록들을 암호 처리하는 단계; 보호될 미리 결정된 시스템 데이터(104)의 각각의 부분(112)에 따라 콘텐트 데이터의 각각의 블록을 처리하기 위하여 사용되는 각각의 키를 결정하는 단계로서, 상기 부분은 미리 결정된 시스템 데이터 모두를 포함하지 않고, 미리 결정된 시스템 데이터의 상이한 각각의 부분들은 미리 결정된 방식에 따라 콘텐트 데이터의 각각의 블록들에 대해 선택되는, 상기 키 결정 단계를 포함한다.
실시예는 데이터 보안을 증가시키는 방법을 포함하고, 상기 방법은 처리될 콘텐트 데이터(214)를 수신하는 단계; 클라이언트 시스템(100)에 처리된 콘텐트 데이터(110)를 제공하는 단계로서, 상기 클라이언트 시스템은 보호될 미리 결정된 시 스템 데이터(104)를 포함하는, 상기 처리된 콘텐트 데이터 제공 단계; 각각의 키들에 따라 콘텐트 데이터의 각각의 블록들을 암호 처리하는 단계; 미리 결정된 시스템 데이터(104)의 각각의 부분(112)에 따라 콘텐트 데이터의 각각의 블록 처리를 위해 사용된 각각의 키를 결정하는 단계로서, 상기 부분은 미리 결정된 시스템 데이터 모두를 포함하지 않고, 미리 결정된 시스템 데이터의 상이한 각각의 부분들은 미리 결정된 방식에 따라 콘텐트 데이터의 각각의 블록들에 대해 선택되는, 상기 키 결정 단계를 포함한다.
실시예는 처리기로 하여금 상기한 임의의 방법들을 수행하도록 하는 컴퓨터 실행 가능 명령들을 포함하는 컴퓨터 프로그램 제품을 포함한다.
도 6은 기술된 시스템들 및 방법들을 구현하기에 적당한 예시적인 하드웨어 아키텍쳐를 도시한다. 하드웨어 아키텍쳐는 예를 들어 퍼스널 컴퓨터, 셋톱 박스, 텔레비젼 세트, 또는 디지털 비디오 플레이어/레코더로 구현될 수 있다. 서버 시스템(200)은 예를 들어 서버 컴퓨터로 구현될 수 있다. 도면은 메모리(91)를 제어하기 위한 처리기(92), 디스플레이(93)(또는 디스플레이용 접속기), 입력부(94)(예를 들어, 키보드, 마우스, 리모콘), 통신 포트(95)(예를 들어, 이더넷, 무선 네트워크, 안테나 케이블 입력), 및 저장 매체(96)(예를 들어, 컴팩트 디스크, CD-R0M, DVD, 외부 플래시 메모리, 또는 하드 디스크 같은 내부 비휘발성 저장 매체 같은 제거 가능한 저장 매체)를 도시한다. 메모리(91)는 처리기로 하여금 상기한 하나 또는 그 이상의 방법들을 수행하도록 하는 컴퓨터 명령들을 포함한다. 이들 컴퓨터 명령들은 저장 매체(96) 또는 인터넷으로부터 통신 포트(95)를 통해 메모리(91) 에 로딩될 수 있다. 입력부(94)는 사용자가 시스템과 상호 작용하게 하도록 사용된다. 디스플레이는 사용자와 상호작용하고 선택적으로 비디오 또는 스틸 이미지들을 렌더링하기 위하여 사용된다. 라우드스피커들(도시되지 않음)은 또한 사용자 상호작용 및/또는 오디오 콘텐트 렌더링을 위해 제공될 수 있다. 서버 시스템 및 클라이언트 시스템은 둘다 도 6의 동일한 하드웨어 시스템에 대한 소프트웨어 애플리케이션들로서 구현될 수 있고 처리간 통신(interprocess communication)을 통하여 서로 동시에 실행하고 통신할 수 있다. 선택적으로, 클라이언트 및 서버는 독립된 하드웨어 시스템들에서 실행될 수 있고, 둘 다는 도 6과 유사한 아키텍쳐를 가진다. 예를 들어 서버는 콘텐트 제공자에 배치되고 소유되며 클라이언트는 고객에 의해 소유되고 고객 가정에 배치된다.
본 발명이 또한 본 발명을 실행하기 위하여 적응되는 컴퓨터 프로그램들, 특히 캐리어상 또는 캐리어 내 컴퓨터 프로그램들로 확장하는 것은 인식될 것이다. 프로그램은 본 발명에 따른 방법의 구현에 사용하기에 적당한 임의의 다른 형태, 또는 부분적으로 컴파일된 형태 같은 소스 코드, 객체 코드, 코드 중간 소스 및 객체 코드 형태일 수 있다. 캐리어는 프로그램을 운반할 수 있는 임의의 엔티티 또는 장치일 수 있다. 예를 들어, 캐리어는 ROM, 예를 들어 CD ROM 또는 반도체 ROM, 또는 예를 들어 플로피 디스크 또는 하드 디스크 같은 자기 기록 매체 같은 저장 매체를 포함할 수 있다. 추가로 캐리어는 전기 또는 광학 케이블을 통하여 또는 무선 또는 다른 수단에 의해 전달될 수 있는 전기 또는 광학 신호 같은 전송 캐리어일 수 있다. 프로그램이 상기 하나의 신호로 구현될 때, 캐리어는 상기 케 이블 또는 다른 장치 또는 수단에 의해 구성될 수 있다. 선택적으로, 캐리어는 프로그램이 구현된 집적 회로일 수 있고, 집적 회로는 관련 방법을 프로그래밍, 또는 수행하는데 사용하기 위하여 적응된다.
상기된 실시예들이 본 발명을 제한하기 보다 도시하고, 당업자가 첨부된 청구항들의 범위에서 벗어나지 않고 많은 다른 실시예들을 설계할 수 있다는 것은 주지된다. 청구항들에서, 괄호들 사이에 배치된 임의의 참조 부호들은 청구항을 제한하는 것으로 해석되지 않아야 한다. 동사 "포함하다"의 사용 및 그것의 어형 변화들은 청구항에 언급된 것과 다른 엘리먼트들 또는 단계들의 존재를 배제하지 않는다. 엘리먼트 앞에 선행하는 관사 "a" 또는 "an"은 다수의 상기 엘리먼트들의 존재를 배제하지 않는다. 본 발명은 몇몇 구별되는 엘리먼트들을 포함하는 하드웨어, 및 적당하게 프로그램된 컴퓨터에 의해 구현될 수 있다. 몇몇 수단을 열거하는 장치 청구항에서, 이들 수단 중 몇몇은 하드웨어 하나 및 동일한 아이템에 의해 구현될 수 있다. 특정 수단들이 상호 다른 종속항들에 열거된다는 단순한 사실은 이들 수단들의 결합이 장점으로 사용될 수 없다는 것을 가리키지 않는다.

Claims (15)

  1. 데이터 보안을 증가시키기 위한 시스템(100)으로서,
    처리될 콘텐트 데이터(110)를 수신하기 위한 입력부(102);
    보호될 미리 결정된 시스템 데이터(104);
    각각의 키들에 따라 상기 콘텐트 데이터의 각각의 블록들의 암호 처리를 위한 암호 유니트(108); 및
    상기 미리 결정된 시스템 데이터(104)의 각각의 부분(112)에 따라 콘텐트 데이터의 각각의 블록의 처리를 위해 사용된 각각의 키를 결정하기 위한 키 제공자(106)로서, 상기 부분은 상기 미리 결정된 시스템 데이터 모두를 포함하지 않고, 상기 미리 결정된 시스템 데이터의 상이한 각각의 부분들은 콘텐트 데이터의 상기 각각의 블록들에 대해 선택되는, 상기 키 제공자(106)를 포함하는, 데이터 보안 증가 시스템.
  2. 제 1 항에 있어서, 상기 미리 결정된 시스템 데이터는 컴퓨터 실행 가능 명령들을 포함하는 소프트웨어 코드를 포함하는, 데이터 보안 증가 시스템.
  3. 제 1 항에 있어서, 상기 키 제공자는 콘텐트 데이터의 각각의 블록 외측 콘텐트 데이터에 따라 상기 미리 결정된 시스템 데이터 부분을 선택하기 위하여 배열되는, 데이터 보안 증가 시스템.
  4. 제 3 항에 있어서, 상기 키 제공자는 상기 콘텐트 데이터의 암호문을 바탕으로 상기 부분을 선택하기 위하여 배열되는, 데이터 보안 증가 시스템.
  5. 제 4 항에 있어서, 상기 키 제공자는 이전에 처리된 데이터 블록의 암호문을 바탕으로 상기 부분을 선택하기 위하여 배열되는, 데이터 보안 증가 시스템.
  6. 제 1 항에 있어서, 상기 키 제공자는 암호 키를 얻기 위하여 상기 선택된 부분의 의사-랜덤 함수를 계산하기 위하여 배열되는, 데이터 보안 증가 시스템.
  7. 제 1 항에 있어서, 상기 암호 유니트는 각각의 키의 적어도 일부 및 상기 콘텐트 데이터의 각각의 블록의 적어도 일부를 수반하는 XOR 연산을 적용하기 위하여 배열되는, 데이터 보안 증가 시스템.
  8. 제 1 항에 있어서, 상기 콘텐트 데이터에 대응하는 암호문을 저장하기 위한 저장소(116)를 더 포함하고, 상기 암호 유니트는 저장된 콘텐트 데이터를 해독하기 위하여 배열되는, 데이터 보안 증가 시스템.
  9. 제 8 항에 있어서, 상기 암호 유니트는,
    각각의 키들에 따라 입력부로부터 수신된 콘텐트 데이터의 각각의 블록들을 암호화하고 상기 저장소를 사용하여 상기 암호화된 콘텐트 데이터를 저장하기 위한 암호화기; 및
    상기 각각의 키들에 따라 상기 저장소를 사용하여 저장된 상기 암호화된 콘텐트 데이터의 각각의 블록들을 해독하기 위한 해독기를 포함하는, 데이터 보안 증가 시스템.
  10. 제 1 항에 있어서, 상기 암호 유니트는 각각의 키에 따라 상기 콘텐트 데이터에 디지털 워터마크를 적용하기 위하여 배열되는, 데이터 보안 증가 시스템.
  11. 데이터 보안을 증가시키기 위한 서버 시스템(200)으로서,
    처리될 콘텐트 데이터(214)를 수신하기 위한 입력부(210);
    처리된 콘텐트 데이터(110)를 클라이언트 시스템(100)에 제공하기 위한 출력부(202)를 포함하고, 상기 클라이언트 시스템은 보호될 미리 결정된 시스템 데이터(104)를 포함하고;
    각각의 키들에 따라 상기 콘텐트 데이터의 각각의 블록들의 암호 처리를 위한 암호 유니트(208); 및
    상기 미리 결정된 시스템 데이터(104)의 각각의 부분(112)에 따라 상기 콘텐트 데이터의 각각의 블록의 처리를 위해 사용된 상기 각각의 키를 결정하기 위한 키 제공자(206)로서, 상기 부분은 상기 미리 결정된 시스템 데이터 모두를 포함하지 않고, 상기 미리 결정된 시스템 데이터의 상이한 각각의 부분들은 콘텐트 데이 터의 각각의 블록들에 대해 선택되는, 상기 키 제공자(206)를 포함하는, 데이터 보안 증가 서버 시스템.
  12. 제 1 항에 따른 클라이언트 시스템(100) 및 제 11 항에 따른 서버 시스템(200)을 포함하는 시스템으로서,
    상기 서버 시스템(200)의 출력부는 상기 클라이언트 시스템(100)의 입력부(102)에 상기 서버 시스템(200)의 상기 암호 유니트(208)에 의해 처리된 상기 콘텐트 데이터(110)를 제공하기 위하여 배열되고,
    상기 서버 시스템의 키 제공자(206) 및 상기 클라이언트 시스템의 키 제공자(106)는 각각 상기 서버 시스템(200)의 입력부(210)에서 상기 콘텐트 데이터(214)를 수신한 것에 응답하고 상기 클라이언트 시스템(100)의 상기 입력부(102)에서 대응하는 콘텐트 데이터(110)를 수신한 것에 응답하여 상기 소프트웨어 코드(104)의 동일한 부분(112)을 사용하기 위하여 배열되는, 시스템.
  13. 데이터 보안을 증가시키는 방법으로서,
    처리될 콘텐트 데이터(110)를 수신하는 단계;
    각각의 키들에 따라 상기 콘텐트 데이터의 각각의 블록들의 암호 처리 단계; 및
    보호될 미리 결정된 시스템 데이터(104)의 각각의 부분(112)에 따라 상기 콘텐트 데이터의 각각의 블록의 처리를 위해 사용된 각각의 키를 결정하는 단계로서, 상기 부분은 상기 미리 결정된 시스템 데이터 모두를 포함하지 않고, 상기 미리 결정된 시스템 데이터의 상이한 각각의 부분들은 콘텐트 데이터의 각각의 블록들에 대해 선택되는, 상기 키 결정 단계를 포함하는, 데이터 보안 증가 방법.
  14. 데이터 보안을 증가시키기 위한 방법으로서,
    처리될 콘텐트 데이터(214)를 수신하는 단계;
    처리된 콘텐트 데이터(110)를 클라이언트 시스템(100)에 제공하는 단계로서, 상기 클라이언트 시스템은 보호될 미리 결정된 시스템 데이터(104)를 포함하는, 상기 처리된 콘텐트 데이터 제공 단계;
    각각의 키들에 따라 상기 콘텐트 데이터의 각각의 블록들의 암호 처리 단계; 및
    상기 미리 결정된 시스템 데이터(104)의 각각의 부분(112)에 따라 상기 콘텐트 데이터의 각각의 블록의 처리를 위해 사용된 상기 각각의 키를 결정하는 단계로서, 상기 부분은 상기 미리 결정된 시스템 데이터 모두를 포함하지 않고, 상기 미리 결정된 시스템 데이터의 상이한 각각의 부분들은 콘텐트 데이터의 각각의 블록들에 대해 선택되는, 상기 키 결정 단계를 포함하는, 데이터 보안 증가 방법.
  15. 처리기로 하여금 제 13 항 또는 제 14 항에 따른 방법을 수행하도록 하는 컴퓨터 실행 가능 명령들을 포함하는 컴퓨터 프로그램 제품.
KR1020097026630A 2007-05-22 2008-05-19 데이터 보안 KR20100031106A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP07108580.7 2007-05-22
EP07108580 2007-05-22

Publications (1)

Publication Number Publication Date
KR20100031106A true KR20100031106A (ko) 2010-03-19

Family

ID=39846640

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097026630A KR20100031106A (ko) 2007-05-22 2008-05-19 데이터 보안

Country Status (7)

Country Link
US (1) US9025765B2 (ko)
EP (1) EP2153365A1 (ko)
JP (1) JP5496880B2 (ko)
KR (1) KR20100031106A (ko)
CN (1) CN101681408B (ko)
TW (1) TW200903296A (ko)
WO (1) WO2008142633A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020085623A1 (ko) * 2018-10-26 2020-04-30 삼성전자주식회사 서버 및 서버의 제어 방법

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2341708B1 (en) * 2010-01-05 2017-03-08 Irdeto B.V. Broadcasting variants of digital signals in a conditional access system
CN103748592B (zh) * 2011-06-30 2017-05-31 英特尔公司 用于控制对受保护内容的访问的系统和方法
US9363075B2 (en) 2013-10-18 2016-06-07 International Business Machines Corporation Polymorphic encryption key matrices
US9641337B2 (en) * 2014-04-28 2017-05-02 Nxp B.V. Interface compatible approach for gluing white-box implementation to surrounding program
JP6908914B2 (ja) * 2017-02-24 2021-07-28 株式会社国際電気通信基礎技術研究所 データ送信装置、データ受信装置、通信システム、および、プログラム
FR3094520B1 (fr) * 2019-03-25 2021-10-22 St Microelectronics Rousset Clé de chiffrement et/ou de déchiffrement

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3580333B2 (ja) * 1996-04-10 2004-10-20 日本電信電話株式会社 暗号認証機能の装備方法
IL131876A0 (en) * 1997-03-14 2001-03-19 Cryptoworks Inc Digital product rights management technique
JPH1139156A (ja) * 1997-07-22 1999-02-12 Fuji Xerox Co Ltd 暗号化データ復号装置
US6334189B1 (en) * 1997-12-05 2001-12-25 Jamama, Llc Use of pseudocode to protect software from unauthorized use
US7809138B2 (en) * 1999-03-16 2010-10-05 Intertrust Technologies Corporation Methods and apparatus for persistent control and protection of content
JP3481470B2 (ja) * 1998-10-19 2003-12-22 日本電気株式会社 データ等の不正改竄防止システム及びそれと併用される暗号化装置
US20020023209A1 (en) * 2000-02-14 2002-02-21 Lateca Computer Inc. N.V.United Encryption and decryption of digital messages in packet transmitting networks
GB0031663D0 (en) * 2000-12-27 2001-02-07 Internet Extra Ltd Method and apparatus for controlling access to multimedia files design and implementation
US7987510B2 (en) 2001-03-28 2011-07-26 Rovi Solutions Corporation Self-protecting digital content
US20030037237A1 (en) * 2001-04-09 2003-02-20 Jean-Paul Abgrall Systems and methods for computer device authentication
RU2370897C2 (ru) * 2003-12-11 2009-10-20 Кониклейке Филипс Электроникс Н.В. Система блочной криптографической защиты, использующая преобразования для сокрытия основной функции криптографической защиты каждого цикла шифрования
FR2881254A1 (fr) * 2005-01-21 2006-07-28 O Soc Par Actions Simplifiee Procede de restitution d'un flux numerique par un fichier executable
US8045714B2 (en) * 2005-02-07 2011-10-25 Microsoft Corporation Systems and methods for managing multiple keys for file encryption and decryption
JP2006238154A (ja) * 2005-02-25 2006-09-07 Sony Corp データ処理方法
EP1997265B1 (en) 2006-03-10 2020-08-05 Irdeto B.V. Integrity of a data processing system using white-box for digital content protection

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020085623A1 (ko) * 2018-10-26 2020-04-30 삼성전자주식회사 서버 및 서버의 제어 방법

Also Published As

Publication number Publication date
CN101681408A (zh) 2010-03-24
WO2008142633A1 (en) 2008-11-27
EP2153365A1 (en) 2010-02-17
CN101681408B (zh) 2013-09-18
US9025765B2 (en) 2015-05-05
US20100215173A1 (en) 2010-08-26
JP2010529718A (ja) 2010-08-26
TW200903296A (en) 2009-01-16
JP5496880B2 (ja) 2014-05-21

Similar Documents

Publication Publication Date Title
EP2044724B1 (en) Tamper resistance of a digital data processing unit
KR101580879B1 (ko) 암호 키 데이터를 갱신하는 시스템 및 방법, 서버 시스템, 암호 키 갱신들을 제공하는 방법 및 컴퓨터 판독가능 기록매체
US8306216B2 (en) Method and system for tracking or identifying copy of implementation of computational method, and computation system
US8700915B2 (en) Method and system for verifying authenticity of at least part of an execution environment for executing a computer module
JP5249053B2 (ja) データ処理システムの完全性
US10097342B2 (en) Encoding values by pseudo-random mask
US10015009B2 (en) Protecting white-box feistel network implementation against fault attack
EP3035585B1 (en) S-box selection in white-box cryptographic implementation
CN107273724B (zh) 为白盒实施方案的输入和输出加水印
US9025765B2 (en) Data security
EP1712032B1 (en) Block ciphering system, using permutations to hide the core ciphering function of each encryption round
Sethi Digital rights management and code obfuscation

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
J201 Request for trial against refusal decision
N231 Notification of change of applicant
J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20141126

Effective date: 20150824

Free format text: TRIAL NUMBER: 2014101007289; TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20141126

Effective date: 20150824

S901 Examination by remand of revocation
E902 Notification of reason for refusal
S601 Decision to reject again after remand of revocation