KR20150041095A - 선택적 ram 스크램블링을 위한 방법 및 디바이스들 - Google Patents

선택적 ram 스크램블링을 위한 방법 및 디바이스들 Download PDF

Info

Publication number
KR20150041095A
KR20150041095A KR20157005976A KR20157005976A KR20150041095A KR 20150041095 A KR20150041095 A KR 20150041095A KR 20157005976 A KR20157005976 A KR 20157005976A KR 20157005976 A KR20157005976 A KR 20157005976A KR 20150041095 A KR20150041095 A KR 20150041095A
Authority
KR
South Korea
Prior art keywords
data
memory
processor
information
computing device
Prior art date
Application number
KR20157005976A
Other languages
English (en)
Inventor
3세 필 제이 보스틀리
조슈아 에이치 스터브스
주니어 필립 티 뮬러
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 KR20150041095A publication Critical patent/KR20150041095A/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
    • 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
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

태깅 정보에 기초하여 컴퓨팅 디바이스와 연관된 메모리 내의 데이터를 선택적 스크램블링하기 위한 방법. 컴퓨팅 디바이스는 보호되는 보안 도메인들을 정의할 수도 있다. 애플리케이션에 의해 생성된 데이터는 애플리케이션 및/또는 데이터를 설명하는 태깅 정보를 갖는 데이터 버스 트랜잭션으로서 패키징될 수도 있다. 데이터 버스 트랜잭션은 내부 메모리와 같은 메모리로 컴퓨팅 디바이스의 버스를 통해 송신될 수도 있고, 여기서 컴퓨팅 디바이스는 보안 도메인들을 설명하는 저장된 정보에 태깅 정보를 비교할 수도 있다. 태깅 정보에 기초하여 데이터가 보호된 것으로 결정되는 경우, 컴퓨팅 디바이스는 데이터에 대해 스크램블링 동작들을 수행할 수도 있다. 일 양태에서, 태깅 정보는 프로세서 상의 각종 애플리케이션들을 실행시키는데 사용된 가상 머신을 설명할 수도 있다. 다른 양태에서, 태깅 정보는 목적지 메모리 어드레스들 또는 콘텐트 보호 비트 값들을 정의할 수도 있다.

Description

선택적 RAM 스크램블링을 위한 방법 및 디바이스들{METHOD AND DEVICES FOR SELECTIVE RAM SCRAMBLING}
디지털 저작권 관리 (Digital Rights Management; DRM) 콘텐트 (예를 들어, 영화, 음악, 및 게임들) 와 같은 보호된 데이터의 제공자들은 그들의 귀중한 콘텐트의 보안을 보장하기 위해 추가적인 측정들에 대해 증가하는 요구들을 갖는다. 이러한 보호된 데이터의 제공자들은 종종, 콘텐트에 액세스하여 랜덤 액세스 메모리 (RAM) 과 같은 그들의 휘발성 메모리 내의 암호화 또는 스크램블링 보호 전략 (protection tactic) 들을 이용하는 컴퓨팅 디바이스들 (예를 들어, 개인 컴퓨터들, 모바일 디바이스들, 및 셋-톱 디스플레이 유닛들) 을 필요로 한다. 이것은 RAM 스크램블링으로서 알려져 있다. 제공자들은 현재, 메모리 제어기가 데이터를 내부 메모리로 전송하고/데이터를 내부 메모리에 저장하기 전에 데이터를 스크램블링하는 RAM (또는 메모리) 스크램블링 알고리즘들의 실행을 필요로 한다. 콘텐트를 평문으로 (in the clear) 저장하기 보다는 RAM 내에 저장된 보호된 데이터를 모호하게 하여 내부 메모리 콘텐츠에 액세스하는 어택 (attack) 들로부터 콘텐트를 보호한다.
RAM 스크램블링 알고리즘들은 성능 이유들로 더 단순한 암호화 기법들을 사용하기 때문에, RAM 스크램블링은 통상적으로 비-휘발성 스토리지 및 송신과 사용된 더 복잡한 암호화 기법들보다 덜 안전하다. 더 복잡한 암호화 기법들, 예컨대 AES 암호화는 보호된 콘텐트에 액세스하는 많은 컴퓨팅 디바이스들에서 RAM 스크램블링에 대해 실현 가능하지 않을 수도 있는데, 이들 기법들은 인코드/디코드하는데 더 많은 시간을 필요로 하고 리소스-집약적이기 때문이다. RAM 스크램블링은 더 단순한 알고리즘 구조 및 더 작은 키들을 사용하여 메모리 성능에 대한 영향을 최소화한다. 그러나, 더 낮은 복잡성의 스크램블링 기법들은 기지의 데이터를 보호된 콘텐트를 저장하는 내부 메모리에 반복적으로 삽입함으로써 어택커들이 무제한 어택 (brute force attack) 들을 행하게 하여 메모리의 어떤 어드레스들이 삽입된 기지의 데이터와 연관되는지를 결정하는 것을 허용할 수 있다. 이러한 패턴 매칭 어택들로부터의 스크램블링된 결과들을 확인함으로써, 비도덕적 애플리케이션들은 RAM 스크램블링 구현의 키 및 알고리즘을 역설계 (reverse engineer) 하고 DRM 콘텐트와 같은 보호된 데이터에 대한 규제 없는 액세스를 얻을 수도 있다.
다양한 실시형태들은 보호된 콘텐트를 포함하는 데이터에 개선된 보안을 제공하는 전자 디바이스들의 메모리에 저장을 위해 데이터를 선택적으로 스크램블링하는 방법들 및 디바이스들을 제공한다. 패턴 매칭 어택들로부터 데이터를 효율적으로 보호하도록 컴퓨팅 디바이스 내의 선택적 메모리 스크램블링을 위한 실시형태의 방법들은, 메모리에 저장되는 데이터가 보호된 콘텐트를 포함하는지 여부를 결정하는 단계, 데이터가 보호된 콘텐트를 포함하는 경우 데이터를 메모리에 저장하는 것의 부분으로서 데이터에 스크램블링 루틴을 적용하는 단계, 및 데이터가 보호된 콘텐트를 포함하지 않는 경우 데이터에 스크램블링 루틴을 적용하지 않고 데이터를 메모리에 저장하는 단계를 포함한다. 보호된 콘텐트는 디지털 저작권 관리 (digital rights management; DRM) 하의 데이터, 개인 정보, 보안 정보, 뱅킹 정보, 패스워드들, 인증 정보, 보호된 콘텐트 애플리케이션 정보, 및 의료 데이터일 수도 있다. 메모리는 캐시 메모리, 휘발성 메모리, 비-휘발성 메모리, 및 오프-칩 스토리지일 수도 있다. 일 실시형태에서, 메모리에 저장되는 데이터가 보호된 콘텐트를 포함하는지 여부를 결정하는 단계는, 데이터의 소스 또는 콘텐트를 식별하는 컴퓨팅 디바이스의 버스를 통해 송신된 데이터에 태깅 정보를 추가하는 단계, 및 이 태깅 정보에 기초하여 트랜잭션의 소스 또는 콘텐트를 결정하는 단계를 포함하고, 데이터가 보호된 콘텐트를 포함하는 경우 데이터를 메모리에 저장하는 것의 부분으로서 데이터에 스크램블링 루틴을 적용하는 단계는 결정된 소스 또는 콘텐트에 기초하여 데이터를 스크램블링하고 메모리에 저장하는 단계를 포함할 수도 있다. 일 실시형태에서, 데이터의 소스 또는 콘텐트를 식별하는 정보로 컴퓨팅 디바이스의 버스를 통해 송신된 데이터를 태깅하는 단계는 데이터가 저장될 수도 있는 보안 도메인에 상관된 데이터에 정보를 추가하는 단계를 포함하고, 태깅 정보에 기초하여 트랜잭션의 소스 또는 콘텐트를 결정하는 단계는, 태깅 정보를 인증된 보안 도메인들에 상관된 저장된 식별자들에 비교하는 단계를 포함할 수도 있다. 다양한 실시형태들에서, 데이터에 추가된 태깅 정보는 가상 머신 식별 (virtual machine identification; VMID), 버스 마스터 식별, 목적지 스토리지 어드레스, 데이터의 소스 또는 콘텐트의 식별자, 및/또는 콘텐트 보호 (content protection; CP) 비트일 수도 있다.
다른 실시형태들은 적어도, 데이터가 스크램블링되는 보안 도메인 및 비보안 도메인으로 구성된 메모리, 및 메모리에 커플링된 프로세서를 갖는 컴퓨팅 디바이스를 포함하고, 여기서 프로세서는 전술된 방법들의 동작들을 수행하도록 프로세서 실행가능 명령들로 구성된다. 일 실시형태에서, 프로세서는 독립형 프로세서, 컴퓨팅 디바이스 내의 복수의 프로세서들 중 하나, 컴퓨팅 디바이스 내의 코프로세서, 및 컴퓨팅 디바이스 내의 피어 프로세서 중 하나 이상일 수도 있다.
다른 실시형태들은 전술된 방법들의 기능들을 수행하기 위한 수단을 갖는 컴퓨팅 디바이스를 포함한다.
다른 실시형태들은 프로세서로 하여금 전술된 방법들의 동작들을 수행하게 하도록 구성된 프로세서 실행가능 명령들이 저장되어 있는 비일시적 프로세서 판독가능 저장 매체를 포함한다. 일 실시형태에서, 비일시적 프로세서 판독가능 저장 매체 상에 저장된 프로세서 실행가능 명령들은 복수의 프로세서들 중 하나, 코프로세서, 및 피어 프로세서의 그룹으로부터 선택된 프로세서에 의해 실행되도록 구성된다.
다른 실시형태들은 적어도, 데이터가 스크램블링되는 보안 도메인 및 비보안 도메인으로 구성된 메모리, 메모리에 커플링된 메모리 제어기, 및 메모리 및 메모리 제어기에 커플링된 프로세서를 포함하는 컴퓨팅 디바이스들을 포함하고, 여기서 프로세서는 컴퓨팅 디바이스의 버스를 통해 송신된 데이터에 태깅 정보를 추가하는 것, 및 태깅 정보에 기초하여 메모리에 저장되는 데이터가 보호된 콘텐트를 포함하는지 여부를 결정하는 것, 데이터가 보호된 콘텐트를 포함하는 경우 데이터를 메모리의 보안 도메인에 저장하는 것의 부분으로서 데이터에 스크램블링 루틴을 적용하는 것과, 데이터가 보호된 콘텐트를 포함하지 않는 경우 데이터에 스크램블링 루틴을 적용하지 않고 데이터를 비보안 도메인에 저장하는 것을 포함하는 동작들을 수행하도록 메모리 제어기를 프로그래밍하는 것을 포함하는 동작들을 수행하도록 프로세서 실행가능 명령들로 구성된다. 보호된 콘텐트는 디지털 저작권 관리 (DRM) 하의 데이터, 개인 정보, 보안 정보, 뱅킹 정보, 패스워드들, 인증 정보, 보호된 콘텐트 애플리케이션 정보, 및 의료 데이터일 수도 있다. 메모리는 캐시 메모리, 휘발성 메모리, 비-휘발성 메모리, 및 오프-칩 스토리지일 수도 있다. 일 실시형태에서, 프로세서는, 컴퓨팅 디바이스의 버스를 통해 송신된 데이터에 태깅 정보를 추가하는 것이, 데이터가 저장될 수도 있는 보안 도메인에 상관된 데이터에 정보를 추가하는 것을 포함하고, 이 태깅 정보에 기초하여 메모리에 저장되는 데이터가 보호된 콘텐트를 포함하는지 여부를 결정하는 것이, 태깅 정보를 승인된 보안 도메인들에 상관된 저장된 식별자들에 비교하는 것을 포함할 수도 있도록 하는 동작들을 수행하도록 프로세서 실행가능 명령들로 구성될 수도 있다. 데이터에 추가된 태깅 정보는 가상 머신 식별 (VMID), 버스 마스터 식별, 목적지 스토리지 어드레스, 데이터의 소스 또는 콘텐트의 식별자, 및 콘텐트 보호 (CP) 비트일 수도 있다. 다른 실시형태들은 그러한 컴퓨팅 디바이스의 프로세서로 하여금 상기 동작들을 수행하게 하도록 구성된 프로세서 실행가능 명령들이 저장되어 있는 비일시적 저장 매체를 포함한다.
다른 실시형태들은 컴퓨팅 디바이스의 버스를 통해 송신된 데이터에 태깅 정보를 추가하기 위한 수단, 및 태깅 정보에 기초하여 메모리에 저장되는 데이터가 보호된 콘텐트를 포함하는지 여부를 결정하는 것, 데이터가 보호된 콘텐트를 포함하는 경우 데이터를 메모리의 보안 도메인에 저장하는 것의 부분으로서 데이터에 스크램블링 루틴을 적용하는 것과, 데이터가 보호된 콘텐트를 포함하지 않는 경우 데이터에 스크램블링 루틴을 적용하지 않고 데이터를 비보안 도메인에 저장하는 것을 포함하는 동작들을 수행하도록 메모리 제어기를 프로그래밍하기 위한 수단을 포함하는 컴퓨팅 디바이스를 포함한다. 일 실시형태에서, 컴퓨팅 디바이스의 버스를 통해 송신된 데이터에 태깅 정보를 추가하기 위한 수단은 데이터가 저장될 수도 있는 보안 도메인에 상관된 데이터에 정보를 추가하기 위한 수단을 포함할 수도 있고, 태깅 정보에 기초하여 메모리에 저장되는 데이터가 보호된 콘텐트를 포함하는지 여부를 결정하는 것은, 태깅 정보를 승인된 보안 도메인들에 상관된 저장된 식별자들에 비교하는 것을 포함할 수도 있다.
본원에 통합되고 본 명세서의 일부분을 구성하는 첨부 도면들은 본 발명의 예시적인 양태들을 예시하고, 위에서 주어진 일반적인 설명 및 하기에서 주어지는 상세한 설명과 함께 본 발명의 특성들을 설명하는 역할을 한다.
도 1a 는 다양한 양태들과의 사용에 적합한 보호된 데이터를 전달하는 다양한 컴퓨팅 디바이스 컴포넌트의 통신 시스템 블록도이다.
도 1b 는 하이퍼바이저 (hypervisor) 운영 시스템 루틴에 의해 액세스 가능하고 보안 도메인들을 설명하는 예시의 데이터 테이블의 컴포넌트 블로도이다.
도 2 는 가상 머신 식별 정보에 기초하여 메모리 내의 보호된 콘텐트를 스크램블링하는 일 양태의 방법을 예시하는 프로세스 흐름도이다.
도 3 은 목적지 메모리 어드레스들에 기초하여 메모리 내의 보호된 콘텐트를 스크램블링하는 일 양태의 방법을 예시하는 프로세스 흐름도이다.
도 4 는 콘텐트 보호 비트 정보에 기초하여 메모리 내의 보호된 콘텐트를 스크램블링하는 일 양태의 방법을 예시하는 프로세스 흐름도이다.
도 5 는 다양한 양태들과의 사용에 적합한 예시적인 무선 모바일 컴퓨팅 디바이스의 컴포넌트 블록도이다.
도 6 은 다양한 양태들과의 사용에 적합한 예시의 랩톱 컴퓨팅 디바이스의 컴포넌트 블록도이다.
다양한 양태들은 첨부 도면들을 참조하여 상세히 설명될 것이다. 가능한 경우에는 언제든지, 동일한 참조 부호들은 동일하거나 유사한 부분들을 지칭하기 위해 도면들 전체에서 사용될 것이다. 특정 예들 및 구현들에 대해 이루어진 참조들은 예시를 위한 것이고, 본 발명 또는 본 청구항들의 범위를 제한하려고 의도되지는 않는다.
단어 "예시적인" 은 본원에서 "예, 경우, 또는 예시로서 역할을 하는" 것을 의미하기 위해 사용된다. 본원에서 "예시적인"으로서 설명된 임의의 구현은 반드시 다른 구현들에 비해 바람직하거나 또는 유리한 것으로서 해석될 필요는 없다.
용어 "컴퓨팅 디바이스" 는 셀룰러 전화기들, 스마트 폰들, 개인 또는 모바일 멀티-미디어 플레이어들, 개인 정보 단말기들 (PDA's), 랩톱 컴퓨터들, 데스크톱 컴퓨터들, 태블릿 컴퓨터들, 스마트 북들, 팜-톱 컴퓨터들, 무선 전자 메일 수신기들, 멀티미디어 인터넷 인에이블드 셀룰러 전화기들, 텔레비전들, 스마트 TV들, 스마트 TV 셋톱 버디 박스들, 통합형 스마트 TV들, 스트리밍 미디어 플레이어들, 스마트 케이블 박스들, 셋-톱 박스들, 디지털 비디오 레코더들 (DVR), 디지털 미디어 플레이어들, 및 프로그램가능 프로세서, 메모리, 및 적어도 무선 및/또는 유선 데이터 송신들을 전송 및/또는 수신하고, 로컬 또는 원격 데이터베이스 구조들을 액세스하며, 다양한 계산들을 수행할 수 있는 회로를 포함하는 유사한 개인 전자 디바이스들 중 어느 하나 또는 전부를 지칭하도록 본원에서 사용된다.
다양한 양태들은 트랜잭션 태깅에 기초하여 스크램블링으로 보호된 데이터의 차동 (또는 선택적) 스크램블링을 이용함으로써 저 복잡성 랜덤 액세스 메모리 (RAM) 스크램블링 기법들의 감소된 보안 문제를 해결한다. 일반적으로, 애플리케이션들은 컴퓨팅 디바이스 상에서 실행하는 운영 시스템 내에 로딩 및 등록될 수도 있다. 운영 시스템 또는 메모리 제어기는 보안 도메인들을 확립하고, 특정 도메인들과 기지의 애플리케이션들을 연관시킬 수도 있다. 운영 시스템, 메모리 제어기, 또는 메모리에 대한 액세스를 제어하는 다른 유닛은 컴퓨팅 디바이스 내의 데이터를 애플리케이션들이 액세스 (예를 들어, 저장) 할 수도 있는 방법을 정의하는 허가 세트들을 이용할 수도 있다. 예를 들어, 애플리케이션은 이중 데이터 레이트 (double data rate; DDR) 메모리와 같은 로컬 메모리 내의 소정 영역에 대응하는 소정의 보안 도메인을 액세스하도록 허용되지 않을 수도 있다. 일 양태에서, 컴퓨팅 디바이스는 컴퓨팅 디바이스 내의 보안 도메인들을 관리하는 운영 시스템 내의 톱-레벨 루틴, "하이퍼바이저 (hypervisor)" 를 실행할 수도 있다. 등록된 애플리케이션들의 정의된 허가에 기초하여, 하이퍼바이저는 다른 데이터가 아닌 보호된 데이터에 대한 RAM 스크램블링을 제공하기 위해 다양한 애플리케이션들에 관련된 데이터를 프로세싱/저장하도록 메모리 제어기들에 명령하거나 메모리 제어기들을 구성할 수도 있다. 하이퍼바이저는 이 결정을 하는 부분으로서 모든 보안 도메인들에 대한 콘텐트, 허가들, 및 등록된 애플리케이션들을 설명하는 정보에 액세스할 수도 있다. 예를 들어, 하이퍼바이저는 특정 보안 도메인들과 다양한 애플리케이션들에 대한 식별 정보 또는 코드들을 연관시키는 데이터 테이블에 액세스할 수도 있다.
대안의 양태에서, 보안 도메인들은 하이퍼바이저와 별개의 다른 루틴들 또는 클라이언트 소프트웨어에 의해 관리될 수도 있다. 예를 들어, 운영 시스템의 하이퍼바이저와 떨어진, 방화벽 관리자 루틴이 보안 도메인들을 관리할 수도 있다. 이러한 경우에서, 하이퍼바이저는 보안 도메인 하드웨어 밖에서 록킹될 수도 있고, 신뢰된 코드로서 증명되지 않을 수도 있다. 부가적으로, 보안 도메인 관리는 하드웨어, 예컨대 메모리 제어기 또는 다른 저장 유닛 제어기에 의해 수행될 수도 있다.
컴퓨팅 디바이스의 프로세서에 의한 실행 동안, 애플리케이션들은 데이터 버스를 통해 정보 트랜잭션들을 행할 수도 있다. 다양한 양태들에서, 버스는 컴퓨팅 디바이스의 다양한 컴포넌트들 간의 물리적 접속들을 생성하는 내부 버스들 (예를 들어, 시스템, 데이터 등) 및/또는 외부 버스들 (예를 들어, 시리얼 버스들) 을 포함할 수도 있다. 버스 제어기들 (또는 버스 마스터들) 은 버스를 통해 이동하는 정보 트랜잭션들을 관리할 수도 있다. 다양한 양태들을 설명하기 위해, 데이터 버스를 통해 행해진 이러한 정보 트랜잭션들은 "데이터 버스 트랜잭션들" 로서 지칭된다. 버스 마스터들은 송신된 정보의 특징들 및/또는 소스 애플리케이션의 인디케이터들 (즉, 태그들 또는 태깅 정보) 을 데이터 버스 트랜잭션들에 제공할 수도 있다. 일 양태에서, 버스 마스터들은 통신 링크 또는 비-휘발성 스토리지로부터 DRM 콘텐트를 수신하는 애플리케이션들에 의한 데이터 버스 트랜잭션들과 같은 보호된 콘텐트를 포함하는 데이터 버스 트랜잭션들을 태깅할 수도 있다. 버스 제어기들은 애플리케이션을 실행하고 버스를 통해 반송되는 데이터를 생성하는데 사용된 가상 머신 ID (VMIDs) 를 나타내는 태깅 정보를 적용할 수도 있다. 대안으로, 태깅 정보는 컴퓨팅 디바이스로 하여금 애플리케이션들 간의 운영 파티션들을 구별하게 하는 데이터 버스 트랜잭션 또는 다른 식별 코드들에 태깅 정보를 적용한 버스 마스터 (즉, 버스 ID) 를 식별할 수도 있다. 일 양태에서, VMIDs 는 버스 마스터 ID 들의 세트들을 나타낼 수도 있다. 일 양태에서, 버스 제어기들은 또한, DRM 콘텐트 데이터를 프로세싱하기 위해 승인된 애플리케이션들로부터의 DRM 콘텐트를 포함하는 데이터 버스 트랜잭션들에 특정 태그들을 적용할 수도 있다. 예를 들어, 버스 제어기는 보호된 콘텐트의 존재를 나타내는 데이터 비트를 설정함으로써 DRM 매체-판독 애플리케이션으로부터의 데이터 버스 트랜잭션들을 태깅할 수도 있다.
태깅된 데이터 버스 트랜잭션들은 컴퓨팅 디바이스 내 또는 이와 연관된 다양한 목적지 컴포넌트들을 향해 지향될 수도 있다. 주로, 데이터 버스 트랜잭션들은 RAM 과 같은 내부 메모리 유닛들로 송신되고 이들에서 수신될 수도 있다. 그러나, 다양한 양태들에서, 데이터 버스 트랜잭션들은 PCI 익스프레스, PCI 익스프레스 모바일, 또는 임의의 다른 와이어 프로토콜을 통해 컴퓨팅 디바이스에 접속된 원격 스토리지 또는 메모리 유닛들을 포함하는, 내부 메모리 유닛들 및/또는 임의의 오프-칩 메모리로 송신되고 이들 내에서 스크램블링될 수도 있다.
태깅된 데이터 버스 트랜잭션들이 내부 메모리와 같은 목적지 컴포넌트에 도달하는 경우, 하이퍼바이저 소프트웨어는 데이터 버스 트랜잭션의 태깅 정보를 사용하여 데이터 버스 트랜잭션을 개시하는 애플리케이션에 대한 연관된 보안 도메인을 결정할 수도 있다. 예를 들어, 소정의 보안 도메인과 연관된 애플리케이션에 의해 생성된 트랜잭션들은 특정 VMID 로 태깅될 수도 있다. 결정된 보안 도메인 연관에 기초하여, 하이퍼바이저는 RAM 유닛에 대한 제어기와 같은 다양한 컴포넌트 제어기들에 전용할 수도 있고, 이 컴포넌트 제어기들에 의해 데이터가 수신된 방법이 핸들링될 수도 있다. 특히, 하이퍼바이저는, 메모리 제어기가 RAM 스크램블링 알고리즘을 실행하여 애플리케이션에 의해 생성된 데이터를 암호화하는지 여부를 메모리 제어기에 명령할 수도 있다. 예를 들어, 하이퍼바이저는 그 태깅된 VMID 에 기초하여 수신된 데이터를 스크램블링 및 저장하도록 DDR 메모리 제어기에 지시할 수도 있다. 일 양태에서, 보안 도메인은 다수의 VMID들, 버스 ID들, 및/또는 메모리 어드레스 범위들의 세트와 연관될 수도 있다.
데이터는 (예를 들어, 보호된 콘텐트 보안 도메인들과 연관된 VMID들에 의해 생성된) 보호된 보안 도메인들에 관련되어 있는 경우에만 메모리 제어기에 의해 스크램블링되기 때문에, 컴퓨팅 디바이스는 데이터 보호를 필요로 하지 않는 애플리케이션들로부터 RAM 으로 전송된 데이터를 포함하는 메모리 유닛들에 저장된 모든 데이터를 스크램블링하는 것을 방지하도록 태깅 정보를 사용할 수도 있다. 이것은, 컴퓨팅 디바이스로 하여금 패턴 매칭 어택들을 상쇄시키게 하여, RAM 스크램블링에 대한 덜 복잡한 암호화 스킴들을 사용하게 하고 보호된 콘텐트 데이터에 암호화 동작들만을 적용하게 한다.
일 양태에서, 컴퓨팅 디바이스는 목적지 메모리 어드레스들에 기초하여 선택적 메모리 스크램블링을 수행할 수도 있다. 애플리케이션에 의해 생성된 데이터 버스 트랜잭션들은 메모리 어드레스들 (예를 들어, 메모리 유닛 내의 소정의 물리적 어드레스들) 의 특정 범위들 내에 저장을 위해 지향될 수도 있다. 컴퓨팅 디바이스가 메모리의 미리정의된 '보호된' 영역에 관련된 것으로 데이터 버스 트랜잭션의 목적지 메모리 어드레스를 식별하면, 컴퓨팅 디바이스는 저장 프로세스의 부분으로서 데이터를 스크램블링하도록 메모리 제어기에 지시할 수도 있다.
일 양태에서, 컴퓨팅 디바이스는 메모리 제어기를 통해 데이터 버스 트랜잭션 내에 포함되거나 이와 연관된 커스텀 비트들의 값들에 기초하여 버스 트랜잭션 데이터를 스크램블링할 수도 있다. 예를 들어, 특정 디바이스에 대한 버스 마스터는 각각의 송신된 데이터 버스 트랜잭션에서 하나 이상의 비트들을 이용하여, 그것이 RAM 스크램블링의 대상이되는지 여부를 제어하기 위해 데이터 버스 트랜잭션들의 품질, 성질, 또는 콘텐츠를 정의할 수도 있다. 커스텀 비트, 또는 콘텐트 보호 (CP) 비트가 보호된 콘텐트를 포함하는 데이터 버스 트랜잭션들을 나타내면, 컴퓨팅 디바이스 (예를 들어, 메모리 제어기) 는 데이터 저장 프로세스의 부분으로서 데이터를 스크램블링할 수도 있다.
일 양태에서, 메모리 제어기는 보안 도메인들을 정의하는 데이터를 저장 및 직접 액세스할 수도 있다. 예를 들어, DDR 제어기는 수신된 데이터 버스 트랜잭션 내의 태깅 정보를 DDR 제어기에 의해 유지된 (또는 이것으로 프로그래밍된) 데이터 테이블에 비교할 수도 있다. 따라서, 메모리 제어기는 컴퓨팅 디바이스의 운영 시스템과 연관된 하이퍼바이저 루틴 또는 유사한 소프트웨어로부터의 지시 또는 입력 없이 데이터 버스 트랜잭션이 보호된 데이터를 포함하는지 여부를 결정할 수도 있다.
다양한 양태들에서, 컴퓨팅 디바이스는 데이터 테이블들, 데이터베이스 엘리먼트들, 하드-코딩된 정의들, 운영 시스템 호들, 및 정보를 참조하기 위한 임의의 다른 메커니즘들을 상호교환적으로 이용하여 데이터 버스 트랜잭션 특징들 (예를 들어, 트랜잭션 아이덴티티, 보호 범주들 등) 을 정의하고, 연관된 보안 도메인들을 식별하고/하거나, 데이터 버스 트랜잭션들을 생성하는 애플리케이션을 식별할 수도 있다. 데이터를 분류하기 위해 데이터 테이블들을 사용하는 컴퓨팅 디바이스의 설명들은 컴퓨팅 디바이스 프로세서 또는 버스 제어기들이 선택적 RAM 스크랭블링을 위한 데이터를 분류, 식별, 또는 참조할 수도 있는 방법의 비제한적인 예로서 제공된다. 예를 들어, 데이터 버스 트랜잭션 내의 데이터의 성질을 식별하기 위해, 컴퓨팅 디바이스는 하이퍼바이저를 통해, 데이터 버스 트랜잭션을 메모리로 송신하는데 사용된 컴퓨팅 디바이스 엘리먼트들 또는 운영 시스템 호들에 기초하여 데이터 버스 트랜잭션의 성질을 결정할 수도 있다.
다양한 양태들에서, (예를 들어, 다양한 보안 도메인들과 연관된 애플리케이션들을 정의하는 등의) 스크램블링 동작들을 실행하기 위한 하드웨어를 구성하고 폴리시들을 설정하는 소프트웨어 또는 컴포넌트들은 메모리 내의 데이터를 스크램블링하지 않을 수도 있다. 예를 들어, 하이퍼바이저, 방화벽 관리자, 또는 컴퓨팅 디바이스와 연관된 다른 소프트웨어는 데이터 버스 트랜잭션들과 연관된 태깅 정보를 평가할 수도 있으나, 메모리에서의 연관된 데이터를 스크램블링하지 않을 수도 있다. 부가적으로, 버스 제어기들은 메모리 내의 데이터를 스크램블링하지 않을 수도 있으나, 단지 태깅 정보를 첨부하고 다르게는 메모리 제어기와 같은 컴퓨팅 디바이스 내의 다양한 컴포넌트들로 데이터 버스 트랜잭션들을 지향시킬 수도 있다. 일반적으로, 스크램블링 동작들 및 알고리즘들은 메모리 제어기들에 의해 독점적으로 수행될 수도 있다.
다양한 양태들에서, 컴퓨팅 디바이스는 또한, 암호화 (또는 스크램블링) 키들을 회전시킴으로써 RAM 스크램블링의 보안을 증가시킬 수도 있다. 컴퓨팅 디바이스에 의해 수행된 메모리 스크램블링 알고리즘들은 컴퓨팅 디바이스의 보호된 또는 신뢰된 엘리먼트들에만 알려진 암호, 비밀, 또는 인코딩 키들을 이용할 수도 있다. 예를 들어, 메모리 제어기 유닛 및 하이퍼바이저는 메모리 내에 저장되고 메모리로부터 취출된 콘텐트를 스크램블링 및 디-스크램블링하는데 사용된 비밀 암호 키를 공유할 수도 있다. 본원에 설명된 RAM 스크램블링 방법들에 추가하여 (예를 들어, 가상 머신 식별, 목적지 메모리 어드레스, 및/또는 콘텐트 보호 비트 정보에 기초한 방법들), 컴퓨팅 디바이스는 미리정의된 스케줄 또는 빈도수로 암호 키들을 회전 (또는 변형) 시킬 수도 있다. 비밀 암호 키들을 규칙적으로 회전시킴으로써, 컴퓨팅 디바이스는 또한, 컴퓨팅 디바이스에 저장된 데이터에 대한 부적합한 액세스를 얻기 위해 스푸핑된 크리덴셜들 (spoofed credential) 을 사용하고자 시도하는 비도덕적 애플리케이션들을 예방할 수도 있다.
일 양태에서, 보호된 콘텐트는 또한, 보호된 콘텐트 데이터 (즉, 보호된 콘텐트 애플리케이션 정보) 를 액세스, 변경, 또는 다르게는 핸들링하는 애플리케이션들에 대한 동작적 또는 프로그램 명령들을 포함할 수도 있다. 예를 들어, 애플리케이션의 코드 또는 명령들을 포함하는 DRM-콘텐트 렌더링 애플리케이션에 관한 정보는 보호된 콘텐트로서 메모리 내에 저장될 수도 있다.
도 1a 는 컴퓨팅 디바이스 (100) 내의 데이터 버스 트랜잭션들의 흐름을 예시한다. 컴퓨팅 디바이스의 프로세서 또는 중앙 처리 장치 (CPU, 101) 는 다수의 소프트웨어 애플리케이션들을 실행하고, 애플리케이션 메모리 또는 캐시 스토리지 내에 애플리케이션 데이터를 저장할 수도 있다. 예를 들어, CPU (101) 는 설치된 애플리케이션들 (App Z (106), App B (104), App A (102)) 뿐만 아니라 하이퍼바이저 (115) 루틴을 포함하는 운영 시스템 소프트웨어를 동시에 실행시킬 수도 있다. 애플리케이션들 (102, 104, 및 106) 은 컴퓨팅 디바이스 (100) 내의 다양한 기능들, 예컨대 인터넷 브라우징의 인에이블링, 원격 데이터 서버들과의 통신, 및 하드 드라이브 상에 국부적으로 저장된 오디오 데이터의 렌더링을 수행할 수도 있다. CPU (101) 상에서의 실행 동안, 애플리케이션들 (102, 104, 및 106) 은 데이터 버스 트랜잭션들 (111, 112, 114) 을 생성할 수도 있다. 예를 들어, App A 는 내부 메모리 (120) 에 일시적으로 저장될 구성 데이터 (예를 들어, 쿠키 정보) 를 생성하는 인터넷 브라우저 애플리케이션일 수도 있다. CPU (101) 는 버스 (126) 를 가로질러 데이터 버스 트랜잭션들 (111, 112, 114) 을 내부 메모리 (120) 로 지향시킬 수도 있다. 일 양태에서, 데이터 버스 트랜잭션들 (111, 112, 114) 은 대안으로, 와이어 프로토콜 (예를 들어, PCI 익스프레스, PCI 익스프레스 모바일) 을 통해 원격 DDR 과 같은 다양한 오프-칩 메모리 유닛들로 전송될 수도 있다.
버스 제어기 (128) 는 식별 정보로 각각의 데이터 버스 트랜잭션 (111, 112, 114) 을 태깅할 수도 있다. 전술된 바와 같이, 이러한 태깅 정보는 데이터 버스 트랜잭션 (예를 들어, VMID) 을 생성하는 애플리케이션을 설명하는 인디케이터들, 버스 제어기 (128) 식별 정보, 데이터 버스 트랜잭션들 내의 콘텐트의 특징, 및 목적지 메모리 어드레스들에 관련된 정보를 포함할 수도 있다. 데이터 버스 트랜잭션들 (111, 112, 114) 은 버스 (126) 를 가로질러 이동할 수도 있고, 메모리 제어기 유닛 (110) 에 의해 프로세싱될 수도 있다. 예를 들어, 메모리 제어기 유닛 (110) 은 데이터 버스 트랜잭션 (114) 내의 데이터를 스크램블링할 수도 있다.
메모리 제어기 (110) 는 데이터 버스 트랜잭션 태깅 정보를 하이퍼바이저 (115) 루틴으로 통신하고, 하이퍼바이저 루틴으로부터 응답 명령들을 수신할 수도 있다. 데이터 버스 트랜잭션 태깅 정보의 수신 시에, 하이퍼바이저 (115) 는 각각의 데이터 버스 트랜잭션 (111, 112, 114) 의 태깅 정보 (예를 들어, VMID) 를 평가할 수도 있다. 일 양태에서, 하이퍼바이저 루틴 (115) 은 도 1b 를 참조하여 후술되는 바와 같이 각각의 데이터 버스 트랜잭션들의 태그를 보안 도메인 데이터 테이블에 비교할 수도 있고, 테이블로부터 획득된 각각의 태그에 대해 적합한 규칙들에 따라 저장을 위해 데이터 버스 트랜잭션들 (111, 112, 114) 을 프로세싱하도록 메모리 제어기 (110) 에 지시할 수도 있다. 예를 들어, 태깅 정보에 기초하여, 하이퍼바이저 (115) 는 비-보호된 콘텐트 애플리케이션들 (102, 104) 로부터 스크램블링되지 않은 메모리 (122) 의 부분으로 데이터 버스 트랜잭션들 (111, 112) 을 지향시키도록 메모리 제어기 (110) 에 명령할 수도 있다. 그러나, App Z (106) 을 식별하는 태깅 정보와 연관된 보안 도메인에 기초하여, 관련된 데이터 버스 트랜잭션 (114) 은 내부 메모리 (124) 의 스크램블링된 부분으로 지향될 수도 있다. 다시 말해, 데이터 버스 트랜잭션 (114) 은 보호된 콘텐트 애플리케이션 (106) 으로부터 오는 것으로 식별될 수도 있고, 따라서 스크램블링되어 RAM (124) 의 보안 부분에 저장될 수도 있다. 일 양태에서, RAM 스크램블링 (또는 스크램블링된 데이터) 은 메모리의 특정 세그먼트 또는 파티션에 제한될 수도 있다. 따라서, 태깅 정보에 기초하여 메모리로 데이터를 지향시키는 프로세스는 비-보호된 콘텐트 애플리케이션 데이터를 스크램블링되지 않은 세그먼트/파티션으로 전송할 수도 있다. 이 방식으로, 비-보호된 콘텐트 애플리케이션들, 또는 보호된 콘텐트 (예를 들어, 멀웨어 (malware)) 를 저장할 권한이 없는 애플리케이션들은 RAM 스크램블링의 대상이 아니고 보호되지 않은 메모리의 부분들 만을 액세스할 수도 있다.
도 1b 는 컴퓨팅 디바이스 (100) 내에서 실행하는 하이퍼바이저 (115) 루틴에 의해 이용된 단순환된 양태의 보안 도메인 데이터 테이블 (150) 을 예시한다. 전술된 바와 같이, 하이퍼바이저 (115) 는 보안 도메인 데이터 테이블 (150) 과의 비교에 기초하여 데이터 버스 트랜잭션과 연관된 태깅 정보를 프로세싱할 수도 있다. 보안 도메인 데이터 테이블 (150) 은 각각의 보안 도메인에 대한 기록들 (152, 154) 을 포함하는, 컴퓨팅 디바이스에 의해 지원된 다양한 보안 도메인들을 설명할 수도 있다. 기록들 (152, 154) 은 다양한 도메인들과 연관된 애플리케이션들에 대한 애플리케이션 식별 정보를 저장할 수도 있다. 예를 들어, 소정의 보안 도메인에 대한 기록 (154) 은, 소정의 VMID 를 갖는 애플리케이션이 그 도메인과 연관된다는 것을 나타내는 정보를 포함할 수도 있다. 일 양태에서, 보안 도메인 데이터 테이블 (150) 은 메모리 유닛들, 버스 제어기 식별들, 및/또는 다양한 보안 도메인들의 애플리케이션들과 연관되는 특수화된 비트 값들 (예를 들어, CP 비트) 내의 어드레스들을 나타내는 기록들을 포함할 수도 있다. 다른 양태에서, 하이퍼바이저 (115) 는 도 1a 를 참조하여 전술된 바와 같은 메모리 제어기를 구성하고/하거나 보안 도메인 데이터 테이블 (150) 을 저장하므로, 메모리 제어기는 하드웨어 (HW) 룩업 동작들을 사용하여 보안 도메인 데이터 테이블 (150) 을 이용할 수도 있다.
도 2 는 가상 머신 ID 정보에 기초하여 데이터 버스 트랜잭션들 내의 보호된 데이터를 프로세싱 및 스크램블링하는 일 양태의 방법 (200) 을 예시한다. 가상 머신들은 이 기술 분야에 잘 알려져 있고, 일반적으로 가상 머신들이 다른 애플리케이션들을 실행할 수도 있는 소정의 실행 환경들 (예를 들어, 모방된 시스템) 을 확립하도록 구성된 소프트웨어로서 정의될 수도 있다. 컴퓨팅 디바이스는, 그 운영 시스템 및/또는 하이퍼바이저 루틴을 통해, 고유한 식별 코드들, 또는 VMID 들을 컴퓨팅 디바이스 상에서 실행하는 가상 머신들에 할당할 수도 있다. VMID들은 전술된 바와 같이, 시스템 데이터에 저장될 수도 있고 보안 도메인들과 연관될 수도 있다. 일 양태에서, 컴퓨팅 디바이스는 컴퓨팅 디바이스 내의 단일 프로세서 상에서, 컴퓨팅 디바이스 내의 코프로세서 (또는 피어 프로세서) 상에서, 또는 컴퓨팅 디바이스 내의 다양한 프로세서들의 조합 상에서 실행하는 가상 머신들에 대한 VMID 들을 저장 및 사용할 수도 있다.
블록 202 에서, 컴퓨팅 디바이스 상에서 실행하는 가상 머신은 애플리케이션을 실행할 수도 있다. 예를 들어, 가상 머신은 특정 하드웨어 구성을 모방하고 오디오 데이터-편집 애플리케이션을 실행할 수도 있다. 다른 예로써, 가상 머신은 컴퓨팅 디바이스로부터의 리소스들을 예약하고, 예약된 리소스들을 사용하여 애플리케이션을 실행할 수도 있다. 가상 머신은 공통의 동작 파라미터들 또는 기능 특징들을 갖는 다수의 개별 애플리케이션들을 실행할 수도 있다. 예를 들어, 가상 머신은 컴퓨팅 디바이스와 다른 하드웨어 상에서 실행을 위해 설계된 여러 애플리케이션들 (예를 들어, 비-고유 (non-native) 컴퓨터 아키텍처 상에서 실행을 위해 포트된 애플리케이션들) 을 실행할 수도 있다. 일 양태에서, 컴퓨팅 디바이스는 다수의 가상 머신들을 동시에 실행할 수도 있다.
블록 204 에서, 가상 머신은 애플리케이션의 실행에 기초하여 데이터를 생성할 수도 있다. 예를 들어, 가상 머신에 의해 실행된 애플리케이션은 시스템 데이터 구조 내에 저장될 값들을 계산할 수도 있다. 다른 예로써, 비디오 플레이어 애플리케이션은 DRM 비디오 데이터를 생성할 수도 있다. 가상 머신은 생성된 데이터를 프로세싱하고, 이 데이터가 버스를 거쳐 목적지 메모리로 송신되도록 지향시킬 수도 있다. 블록 206 에서, 버스 마스터 (또는 제어기) 는, 트랜잭션이 가상 머신의 VMID 를 나타내는 태깅 정보를 포함하도록 데이터 버스 트랜잭션으로서 생성된 데이터를 수신 및 패키징할 수도 있다. 예를 들어, 버스 마스터는 비디오 플레이어 애플리케이션을 실행하는 가상 머신을 나타내는 코드로 (예컨대, 정보를 이 데이터에 추가함으로써) 데이터 버스 트랜잭션을 태깅할 수도 있다. 다른 양태에서, 버스 마스터는 버스 마스터 식별 (ID), 타임스탬프, 애플리케이션 메모리 정보, 사용자 정보, 또는 임의의 다른 기술 데이터 (descriptive data) 와 같은 추가된 정보로 데이터 버스 트랜잭션을 태깅할 수도 있다.
블록 208 에서, 가상 머신에 의해 제공된 목적지 정보에 기초하여, 버스 마스터는 버스를 통해 데이터 버스 트랜잭션을 목적지 메모리와 연관된 제어기 유닛으로 송신할 수도 있다. 예를 들어, 데이터 버스 트랜잭션은 로컬 DDR 메모리 유닛에 대한 제어기로 지향될 수도 있다.
블록 210 에서, 컴퓨팅 디바이스는 데이터 버스 트랜잭션의 태깅 정보 내의 VMID 에 기초하여 데이터 버스 트랜잭션의 데이터의 성질, 또는 보호 범주를 결정할 수도 있다. 일 양태에서, 보호 범주는 '보호된' 또는 '비-보호된' 중 어느 하나로서 버스 트랜잭션 데이터를 정의할 수도 있다. 예를 들어, '보호된' 보호 범주를 갖는 데이터는 DRM-콘텐트, 예컨대 저작권이 있는 매체, 보안 정보 (예를 들어, 뱅킹 정보), 개인 정보, 보안 정보, 뱅킹 정보, 패스워드들, 인증 정보, 및 의료 데이터 뿐만 아니라 제한된 사용 계약과 연관된 다른 데이터를 포함할 수도 있다. 일 양태에서, 메모리 제어기는 태깅 정보를 하이퍼바이저 루틴으로 통신하여 송신된 데이터 버스 트랜잭션의 보호 범주를 결정할 수도 있다. 대안의 양태에서, 하이퍼바이저는 데이터 버스 트랜잭션으로부터 태깅 정보를 직접 추출할 수도 있다.
일 양태에서, 전술된 바와 같이 하이퍼바이저는 태깅 정보 내의 가상 머신의 VMID 를 식별하고, 이 VMID 를 보안 도메인들을 설명하는 데이터 테이블에 비교할 수도 있다. 다시 말해, 데이터 테이블은 다수의 보안 도메인 엔트리들을 포함할 수도 있고, 이 엔트리들은 함께 컴퓨팅 디바이스 상에서 실행된 애플리케이션들 또는 가상 머신들에 대한 참조들을 포함할 수도 있다. 하이퍼바이저는 VMID 와 연관되는 데이터 테이블에서 보안 도메인 엔트리 (예를 들어, 엔트리는 VMID 에 대한 참조를 포함) 를 찾을 수도 있고, 그 보안 도메인 엔트리 내의 데이터 보호 정보에 기초하여 데이터 버스 트랜잭션의 보호 범주를 결정할 수도 있다. 예를 들어, 하이퍼바이저는 '비-보호된' 보안 도메인 엔트리에서 참조된 VMID 를 찾는 경우 '비-보호된' 보호 범주를 결정할 수도 있다. 다른 예로써, 비디오 애플리케이션 스트리밍 DRM 콘텐트와 연관된 보안 도메인의 보호 범주는 '보호될' 수도 있다.
대안의 양태에서, 전술된 바와 같이 하이퍼바이저는 태깅 정보 내의 가상 머신의 VMID 를 식별하고, 이 VMID 를 보안 도메인들을 설명하는 데이터 테이블에 비교하도록 메모리 제어기 (110) 를 프로그래밍 할 수도 있다. 다시 말해, 데이터 테이블은 다수의 보안 도메인 엔트리들을 포함할 수도 있고, 이 엔트리들은 함께 컴퓨팅 디바이스 상에서 실행된 애플리케이션들 또는 가상 머신들에 대한 참조들을 포함할 수도 있다. 메모리 제어기 (110) 는 VMID 와 연관되는 데이터 테이블에서 보안 도메인 엔트리 (예를 들어, 엔트리는 VMID 에 대한 참조를 포함) 를 찾을 수도 있고, 그 보안 도메인 엔트리 내의 데이터 보호 정보에 기초하여 데이터 버스 트랜잭션의 보호 범주를 결정할 수도 있다. 예를 들어, 메모리 제어기 (110) 는 '비-보호된' 보안 도메인 엔트리에서 참조된 VMID 를 찾는 경우 '비-보호된' 보호 범주를 결정할 수도 있다. 다른 예로써, 비디오 애플리케이션 스트리밍 DRM 콘텐트와 연관된 보안 도메인의 보호 범주는 '보호될' 수도 있다.
일 양태에서, VMID 가 데이터 테이블 (또는 컴퓨팅 디바이스에 액세스하는 다른 참조 지식 베이스) 내에 있지 않으면, 하이퍼바이저는 비-보호된 콘텐트로서 데이터 버스 트랜잭션의 보호 범주를 결정할 수도 있다. 일 양태에서, 데이터 테이블은 컴퓨팅 디바이스의 운영 시스템의 엘리먼트로서 하드 코딩되고, 콘텐트 제공자들에 의해 공급되고, 및/또는 컴퓨팅 디바이스 상의 다양한 애플리케이션들의 실행 동안 업데이트되는 정보를 포함할 수도 있다. 예를 들어, 데이터 테이블은 컴퓨팅 디바이스가 애플리케이션과 연관된 콘텐트가 DRM 이라는 것을 결정하는 경우, 특정 콘텐트 제공자로부터 변형되거나, 또는 보호된 데이터와 임의의 방식으로 연관되는 애플리케이션들에 대한 디폴트 데이터 보호 정보를 포함할 수도 있다.
대안의 양태에서, VMID 가 데이터 테이블 (또는 컴퓨팅 디바이스에 액세스하는 다른 참조 지식 베이스) 내에 있지 않으면, 메모리 제어기 (110) 는 비-보호된 콘텐트로서 데이터 버스 트랜잭션의 보호 범주를 결정할 수도 있다. 일 양태에서, 데이터 테이블은 컴퓨팅 디바이스의 운영 시스템의 엘리먼트로서 하드 코딩되고, 콘텐트 제공자들에 의해 공급되고, 및/또는 컴퓨팅 디바이스 상의 다양한 애플리케이션들의 실행 동안 업데이트되는 정보를 포함할 수도 있다. 예를 들어, 데이터 테이블은 컴퓨팅 디바이스가 애플리케이션과 연관된 콘텐트가 DRM 이라는 것을 결정하는 경우, 특정 콘텐트 제공자로부터 변형되거나, 또는 보호된 데이터와 임의의 방식으로 연관되는 애플리케이션들에 대한 디폴트 데이터 보호 정보를 포함할 수도 있다.
결정 블록 212 에서, 컴퓨팅 디바이스는 결정된 보호 범주에 기초하여 버스 트랜잭션 데이터가 보호되는지 여부를 결정할 수도 있다. 데이터가 보호되면 (즉, 결정 블록 212 = "예"), 블록 214 에서 메모리 제어기는 메모리 스크램블링 루틴 또는 알고리즘을 실행함으로써 데이터 버스 트랜잭션 내에서 송신된 데이터를 스크램블링할 수도 있다. 다양한 양태들에서 사용될 수도 있는 다양한 메모리 또는 RAM 스크램블링 알고리즘들은 이 기술 분야에 잘 알려져 있다. 다른 한편, 데이터가 보호되지 않으면 (즉, 결정 블록 212 = "아니오"), 블록 216 에서 메모리 제어기는 메모리 내의 비보호된 버스 트랜잭션 데이터를 스크램블링되지 않은 데이터로서 저장할 수도 있다 (즉, 데이터를 저장하는 부분으로서 메모리 스크램블링 알고리즘을 실행하지 않음).
일 양태에서, 데이터 버스 트랜잭션에서의 데이터에 추가된 태깅 정보는 RAM 스크램블링 알고리즘을 명령하도록 하이퍼바이저가 사용할 수도 있는 추가의 코드 (예를 들어, 애플리케이션 ID 또는 코드) 및 VMID 를 포함할 수도 있다. 예를 들어, 하이퍼바이저는 VMID 가 일반적으로 보호된 데이터에 관한 보안 도메인과 연관된다는 것을 결정할 수도 있다. 그러나, 애플리케이션 ID 는, 이 애플리케이션이 데이터가 스크램블링되도록 요구하지 않는다는 것을 나타낼 수도 있다. 애플리케이션 ID 에 기초하여, 하이퍼바이저는 버스 트랜잭션 데이터를 스크램블링하지 않도록 메모리 제어기에 지시할 수도 있다. 일 양태에서, 보안 도메인들을 정의하는 데이터 테이블은 각각의 가상 머신 (또는 VMID) 에 대한 일반적인 보호 범주들 및 각각의 가상 머신에 의해 실행된 애플리케이션들에 대한 예외적인 보호 범주들을 포함할 수도 있다.
도 3 은 목적지 메모리 어드레스들에 기초하여 데이터 버스 트랜잭션 내의 보호된 데이터를 프로세싱 및 스크램블링하는 일 양태의 방법 (300) 을 예시한다. 메모리의 소정의 메모리 어드레스들은 보호되고, 승인된 애플리케이션들에 의해서만 액세스 가능할 수도 있다. 예를 들어, 컴퓨팅 디바이스에 의해 승인된 (예를 들어, 보호된 콘텐트 보안 도메인 엔트리에서 참조된) 애플리케이션은 보호된 메모리 어드레스 범위 내에 데이터를 기입할 수도 있다. 다른 예로써, 컴퓨팅 디바이스는 비도덕적인 또는 인식되지 않은 애플리케이션이 데이터를 보호된 메모리 로케이션 내에 저장되게 하는 것을 금지할 수도 있다. 메모리 어드레스들의 보호된 범위 내에 저장된 데이터는 메모리와 연관된 메모리 제어기에 의해 스크램블링될 수도 있다. 다양한 양태들에서, 목적지 메모리 어드레스들은 메모리의 특정 영역들일 수도 있고, 물리적 메모리 어드레스들 또는 가상 메모리 어드레스들에 의해 정의될 수도 있다. 일 양태에서, 컴퓨팅 디바이스는 메모리 또는 저장 유닛을 파티셔닝하고, 소정 파티션, 블록, 또는 영역이 보호된 데이터 저장을 위해 사용된다는 것을 나타낼 수도 있다.
일 양태에서, 컴퓨팅 디바이스는 각각의 애플리케이션이 액세스하도록 승인되는 보안 도메인들을 정의하는 데이터 테이블에 저장된 정보에 기초하여 애플리케이션이 액세스하도록 승인되는지 여부를 결정하고/하거나 보호된 메모리 어드레스 또는 로케이션에 데이터를 저장할 수도 있다. 이러한 데이터 테이블은 컴퓨팅 디바이스 상에 설치된 애플리케이션들, 데이터 태그들, 및 애플리케이션들이 데이터를 액세스 및 저장하도록 승인되는 보안 도메인들을 상관하는 정보를 포함할 수도 있다. 애플리케이션들, 데이터 식별자들, 및 보안 도메인들을 상관하는 이러한 데이터 테이블은 데이터 태그에 대응하는 소스 또는 콘텐트를 식별하도록 테이블 룩업 루틴에서 룩업 값으로서 데이터 내의 정보 (즉, 데이터 태그) 를 사용함으로써 데이터의 소스 또는 콘텐트를 결정하는 것을 용이하게 할 수도 있다. 유사한 방식으로, 애플리케이션에 의해 생성된 데이터의 소스 또는 콘텐트를 식별하기 위한 데이터 태그는 대응하는 데이터 태그를 식별하기 위해 테이블 룩업 루틴에서 룩업 값으로서 애플리케이션 명칭 또는 식별자를 사용함으로써 결정될 수도 있다. 또한, 컴퓨팅 디바이스는 데이터 태그에 대응하는 보안 도메인을 식별하기 위해 테이블 룩업 루틴에서 룩업 값으로서 데이터 내의 정보 (즉, 데이터 태그) 를 사용함으로써 데이터를 저장하기 위해 승인된 보안 도메인을 식별할 수도 있다.
애플리케이션은 보호된 데이터에 관련되지 않은 보안 도메인과 연관될 수도 있고, 따라서 보호된 메모리 로케이션을 액세스하도록 승인되지 않을 수도 있다. 컴퓨팅 디바이스가, 미승인 애플리케이션이 보호된 메모리 로케이션 내의 데이터의 저장을 요청하고 있다고 결정하면, 컴퓨팅 디바이스는 비보호된 메모리 내에 데이터를 저장할 수도 있다. 대안으로, 컴퓨팅 디바이스는 식별 정보를 시그널링하거나 데이터 버스 트랜잭션을 재송신하도록 애플리케이션을 프롬프트함으로써 애플리케이션 아이덴티티 확인 동작들을 수행할 수도 있다. 일 양태에서, 컴퓨팅 디바이스는 승인 없이 보호된 메모리를 요청하는 데이터 버스 트랜잭션들을 무시할 수도 있다.
블록 302 에서, 컴퓨팅 디바이스는 DRM-콘텐트 렌더링 프로그램과 같은 애플리케이션을 실행할 수도 있다. 애플리케이션은 가상 머신에 의해 실행되거나 실행되지 않을 수도 있다. 블록 304 에서, 애플리케이션은 시스템 버스를 통한 전달을 위해 데이터를 생성할 수도 있다. 애플리케이션은, 생성된 데이터가 메모리에서의 특정 목적지 저장 어드레스 내에 저장되어야 한다는 것을 버스 제어기에 나타낼 수도 있다. 예를 들어, 애플리케이션은, 생성된 데이터가 메모리의 특정 물리적 어드레스 범위로 지향되어야 한다는 것을 버스 제어기에 나타낼 수도 있다. 블록 306 에서, 버스 제어기는 적어도, 목적지 메모리 어드레스를 나타내는 태깅 정보를 포함하는 데이터 버스 트랜잭션으로서 데이터를 패키징할 수도 있다. 블록 208 에서, 버스 제어기는 데이터 버스 트랜잭션을 메모리로 송신할 수도 있고, 이 메모리에서 트랜잭션이 메모리 제어기에 의해 수신된다.
블록 310 에서, 블록 210 의 동작을 참조하여 전술된 바와 유사하게, 컴퓨팅 디바이스는 목적지 메모리 어드레스들에 기초하여 데이터 버스 트랜잭션 내의 정보의 보호 범주를 결정할 수도 있다. 메모리 제어기는 데이터 버스 트랜잭션 정보 내의 목적지 메모리 어드레스들을 식별하고, 이 어드레스들을 분석하여 데이터 버스 트랜잭션이 보호된 콘텐트에 관련되는지 여부를 결정할 수도 있다. 일 양태에서, 메모리 제어기, 예컨대 DDR 제어기는 메모리의 보호된 어드레스들로 프로그래밍될 수도 있다. 다른 양태에서, 메모리 제어기는 보호된 및 비보호된 데이터에 관련한 메모리 어드레스들을 정의하는 데이터 테이블을 액세스할 수도 있다. 예를 들어, 데이터 테이블은 보호된 데이터 범주에 대응하는 모든 메모리 어드레스들을 나타내는 엔트리를 포함할 수도 있다. 대안으로, 데이터 테이블은 시스템의 모든 보안 도메인들에 대한 엔트리들을 포함할 수도 있고, 컴퓨팅 디바이스는 다양한 보안 도메인 엔트리들 내에 데이터 버스 트랜잭션 목적지 메모리 어드레스들을 위치시킬 수도 있다. 목적지 메모리 어드레스들과 연관된 보안 도메인의 특징들에 기초하여, 컴퓨팅 디바이스는 데이터 버스 트랜잭션의 보호 범주를 결정할 수도 있다.
결정 블록 212 에서, 컴퓨팅 디바이스는 데이터 버스 트랜잭션의 보호 범주가 데이터가 스크램블링되어야 한다는 것을 나타내는지 여부를 결정할 수도 있다. 버스 트랜잭션 데이터가 보호되면 (즉, 결정 블록 212 = "예"), 블록 214 에서 컴퓨팅 디바이스는 메모리 제어기를 통해 데이터를 스크램블링하고, 그것을 보호된 로케이션들로서 미리결정된 목적지 메모리 어드레스들 내에 저장할 수도 있다. 그러나, 버스 트랜잭션 데이터가 보호되지 않으면 (즉, 결정 블록 212 = "아니오"), 블록 216 에서 컴퓨팅 디바이스는 임의의 스크램블링 동작들을 수행하지 않고 목적지 메모리 어드레스들 내에 버스 트랜잭션 데이터를 저장할 수도 있다. 다시 말해, 데이터 버스 트랜잭션이 비보호된 목적지 메모리 어드레스 내에 저장을 위한 데이터를 포함하는 경우, 이 데이터는 평문으로 저장될 수도 있다.
도 4 는 콘텐트 보호 (또는 CP) 비트 값에 기초하여 메모리 내의 보호된 데이터를 스크램블링하는 일 양태의 방법 (400) 을 예시한다. 방법 (400) 은, 방법 (400) 을 이용하는 컴퓨팅 디바이스가 데이터 버스 트랜잭션 내의 데이터로 하여금 보호된 VMID 또는 목적지 메모리 어드레스를 나타내는 대신에 CP 비트 값을 설정함으로써 스크램블링되게 할 수도 있는 것을 제외하고, 전술된 방법들과 유사하다. 일 양태에서, 컴퓨팅 디바이스는 프로세서들, 모뎀들 등과 같은 다양한 컴포넌트들에 대한 보호 인디케이터들을 인에이블하도록 버스 상의 전용 핀들 또는 커넥션들을 포함할 수도 있다. 예를 들어, 모뎀 컴포넌트는 보호된 CP 비트를 포함하도록 모뎀으로부터의 데이터 버스 트랜잭션들을 인에이블하는 전용 핀을 포함할 수도 있다. 다른 양태에서, 전용 핀들을 갖는 컴포넌트들은 메모리 스크램블링에 대한 CP 비트 값들을 선택적으로 설정하도록 구성될 수도 있다. 예를 들어, 보호된 CP 비트 값들을 설정하기 위한 전용 핀을 갖는 컴포넌트는, 메모리 제어기가 트랜잭션 데이터를 스크램블링하지 않을 수 있도록 데이터 버스 트랜잭션을 송신할 수도 있다.
블록 304 에서, 컴퓨팅 디바이스는 스토리지 또는 메모리 유닛 내의 저장을 위한 데이터를 생성할 수도 있다. 데이터는 인터넷 프로토콜 프로그램을 통해 음성과 같은, 프로세서 상에서 실행하는 애플리케이션에 의해 생성될 수도 있다. 일 양태에서, 데이터는 그래픽 프로세서, 주변기기, 또는 모뎀과 같은 컴퓨팅 디바이스를 갖는 컴포넌트에 의해 생성될 수도 있다. 블록 402 에서, 컴퓨팅 디바이스 프로세서는 버스 (예를 들어, 시스템 버스, 시리얼 버스 등) 를 통한 송신을 위해 태깅 정보와 데이터를 패키징할 수도 있다. 데이터는, 이 데이터가 보호되는지 여부를 나타내는 CP 비트로 데이터에 CP 비트 값을 추가함으로써 데이터 버스 트랜잭션으로서 패키징될 수도 있다. 블록 208 에서, 컴퓨팅 디바이스는 DDR 제어기와 같은 메모리 제어기로 데이터 버스 트랜잭션을 송신할 수도 있다. 블록 404 에서, 메모리 제어기는 데이터 버스 트랜잭션을 평가 (예를 들어, 데이터의 보호 범주를 식별) 할 수도 있고, 결정 블록 212 에서는 데이터가 CP 비트 값 태깅 정보에 기초하여 보호되는지 여부를 결정할 수도 있다. 예를 들어, 컴퓨팅 디바이스는 CP 비트가 '1' 의 값을 가지면 데이터를 보호되는 것으로 결정할 수도 있고, 그 반대일 수도 있다. 데이터가 보호되면 (즉, 결정 블록 212 = "예"), 컴퓨팅 디바이스는 메모리 제어기를 통해 메모리에서의 데이터를 스크램블링할 수도 있다. 대안으로, 데이터가 CP 비트 값에 의해 나타난 바와 같이 보호되지 않으면 (즉, 결정 블록 212 = "아니오"), 컴퓨팅 디바이스는 데이터 버스 트랜잭션의 데이터를 스크램블링하지 않고 대신에 평문으로 저장할 수도 있다.
다양한 양태들은 다양한 모바일 컴퓨팅 디바이스들 (예를 들어, 스마트폰들, 피처 폰들 등) 중 어느 하나로 구현될 수도 있고, 이것의 일 예는 도 5 에 예시된다. 예를 들어, 모바일 컴퓨팅 디바이스 (180) 는 내부 메모리 (502) 에 커플링된 프로세서 (501) 를 포함할 수도 있다. 내부 메모리 (502) 는 휘발성 또는 비-휘발성 메모리일 수도 있고, 또한 보안 및/또는 암호화된 메모리, 또는 비보안 및/또는 비암호화된 메모리, 또는 이들의 임의의 조합일 수도 있다. 프로세서 (501) 는 또한, 터치 스크린 디스플레이 (506), 예컨대 저항성-감지 터치 스크린, 용량성-감지 터치 스크린, 적외선 감지 터치 스크린 등에 커플링될 수도 있다. 그러나, 모바일 컴퓨팅 디바이스 (180) 의 디스플레이는 터치 스크린 능력을 가질 필요는 없다. 모바일 컴퓨팅 디바이스 (180) 는 하나 이상의 단-거리 무선 신호 트랜시버들 (518)(예를 들어, Peanut, Bluetooth®, Zigbee®, RF radio) 및 본원에 설명된 바와 같이 무선 신호들을 전송 및 수신하기 위한 안테나 (508) 를 가질 수도 있다. 트랜시버 (518) 및 안테나 (508) 는 다양한 무선 송신 프로토콜 스택들/인터페이스들을 구현하도록 전술된 회로와 사용될 수도 있다. 모바일 컴퓨팅 디바이스 (180) 는 셀룰러 네트워크를 통해 통신을 인에이블하는 셀룰러 네트워크 무선 모뎀 칩 (520) 을 포함할 수도 있다. 모바일 디바이스 (180) 는 또한, 사용자 입력들을 수신하기 위한 물리적 버튼들 (512a 및 512b) 을 포함할 수도 있다.
개인 컴퓨터들 및 랩톱 컴퓨터들을 포함하는 다른 형태의 컴퓨팅 디바이스들이 다양한 양태들을 구현하는데 사용될 수도 있다. 이러한 컴퓨팅 디바이스들은 통상적으로 예시의 랩톱 컴퓨터 디바이스 (110) 를 예시하는 도 6 에 예시된 컴포넌트들을 포함한다. 많은 랩톱 컴퓨터들은 컴퓨터의 포인팅 디바이스로서 역할을 하는 터치 패드 터치 면 (614) 을 포함하고, 따라서 터치 스크린 디스플레이가 장착되고 전술된 모바일 컴퓨팅 디바이스들 상에서 구현된 것들과 유사한 드래그, 스크롤, 및 플릭 제스처들을 수신할 수도 있다. 이러한 랩톱 컴퓨터 (110) 는 일반적으로, 휘발성 내부 메모리 (602) 및 디스크 드라이브 (606) 와 같은 대용량 비휘발성 메모리에 커플링된 프로세서 (601) 를 포함한다. 랩톱 컴퓨터 (110) 는 또한, 프로세서 (601) 에 커플링된 컴팩트 디스크 (CD) 및/또는 DVD 드라이브 (608) 를 포함할 수도 있다. 랩톱 컴퓨터 디바이스 (110) 는 또한, 데이터 접속들을 확립하고 외부 메모리 디바이스들을 받아들이기 위해 프로세서 (601) 에 커플링된 다수의 커넥터 포트들 (610), 예컨대, 프로세서 (601) 를 네트워크에 커플링하기 위한 네트워크 접속 회로를 포함할 수도 있다. 랩톱 컴퓨터 디바이스 (110) 는 하나 이상의 단-거리 무선 신호 트랜시버들 (618)(예를 들어, Peanut®, Bluetooth®, Zigbee®, RF radio) 및 본원에 설명된 바와 같이 무선 신호들을 전송 및 수신하기 위한 안테나 (620) 를 가질 수도 있다. 트랜시버들 (618) 및 안테나들 (620) 은 다양한 무선 송신 프로토콜 스택들/인터페이스들을 구현하도록 전술된 회로와 사용될 수도 있다. 랩톱 또는 노트북 구성에서, 컴퓨터 하우징은 프로세서 (601) 에 커플링된 터치 패드 (614), 키보드 (612), 및 디스플레이 (616) 모두를 포함한다. 컴퓨팅 디바이스의 다른 구성들은, 다양한 양태들과 관련되어 사용될 수도 있는 잘 알려진 (예를 들어, USB 입력을 통해) 프로세서에 커플링된 컴퓨터 마우스 또는 트랙볼을 포함할 수도 있다.
프로세서들 (501 및 601) 은 전술된 다양한 양태들의 기능들을 포함하는 다양한 기능들을 수행하기 위한 소프트웨어 명령들 (애플리케이션들) 에 의해 구성될 수 있는 임의의 프로그램가능 마이크로프로세서, 마이크로컴퓨터 또는 다수의 프로세서 칩 또는 칩들일 수도 있다. 다양한 디바이스들에서, 다수의 프로세서들, 예컨대 무선 통신 기능들에 전용된 하나의 프로세서 및 다른 애플리케이션들을 구동하는데 전용된 하나의 프로세서가 제공될 수도 있다. 통상적으로, 소프트웨어 애플리케이션들은 프로세서 (501 및 601) 에 액세스되고 이에 로딩되기 전에 내부 메모리 (502 및 602) 에 저장될 수도 있다. 프로세서들 (501 및 601) 은 애플리케이션 소프트웨어 명령들을 저장하기에 충분한 내부 메모리를 포함할 수도 있다. 많은 디바이스들에서, 내부 메모리는 휘발성 또는 비휘발성 메모리, 예컨대 플래시 메모리, 또는 이들 양자 모두의 혼합일 수도 있다. 이 설명의 목적으로, 메모리에 대한 일반적인 참조는 내부 메모리 또는 다양한 디바이스들 내에 플러깅된 착탈형 메모리, 및 프로세서들 (501 및 601) 내의 메모리를 포함하는, 프로세서들 (501 및 601) 에 의해 액세스가능한 메모리를 지칭한다.
상기의 방법 설명들 및 프로세스 흐름도들은 단지 예시적인 예들로서 제공되고, 다양한 양태들의 단계들이 제시된 순서로 수행되어야 함을 요구하거나 암시하는 것으로 의도되지는 않는다. 당업자에 의해 이해되는 바와 같이, 상기의 양태들에서의 단계들의 순서는 임의의 순서로 수행될 수도 있다. "그 후에", "그리고 나서", 다음으로" 등과 같은 단어들은 단계들의 순서를 제한하도록 의도되지 않으며; 이들 단어들은 단순히 방법들의 설명을 통해 독자를 가이드하는데 사용된다. 또한, 예를 들어, 관사 "하나 (a)", "하나 (an)", 또는 "그 (the)" 를 사용하여 단수형으로 엘리먼트들을 청구하는 임의의 언급은 단수형으로 엘리먼트를 제한하는 것으로서 해석되지 않는다.
본원에서 개시된 양태들과 연관되어 설명된 다양한 예시적인 논리 블록들, 모듈들, 회로들, 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들 양자 모두의 조합들로서 구현될 수도 있다. 하드웨어와 소프트웨어의 이러한 상호교환성을 명확하게 설명하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들이 그들의 기능성에 대해 일반적으로 전술되었다. 그러한 기능이 하드웨어 또는 소프트웨어로 구현되는지 여부는 특정 애플리케이션 및 전체 시스템에 부과되는 설계 제약들에 의존한다. 당업자라면, 전술된 기능성을 각각의 특정 애플리케이션에 대해 다양한 방식으로 구현할 수도 있지만, 이러한 구현 결정들은 본 발명의 범위를 벗어나게 하는 것으로 해석되어서는 안된다.
본원에서 개시된 양태들과 연관되어 설명된 다양한 예시적인 논리 블록들, 모듈들, 및 회로들은 범용 프로세서, 디지털 신호 프로세서 (digital signal processor; DSP), 주문형 반도체 (application specific integrated circuit; ASIC), 필드 프로그램 가능 게이트 어레이 (field programmable gate array; FPGA) 또는 다른 프로그램 가능 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 본원에서 설명된 기능들을 수행하도록 설계된 것들의 임의의 조합에 의해 구현되거나 수행될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 대안으로 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수도 있다. 프로세서는 또한, 컴퓨팅 디바이스들의 조합, 예를 들어 DSP와 마이크로프로세서, 복수의 마이크로프로세서들, DSP 코어와 연계한 하나 이상의 마이크로프로세서들, 또는 임의의 다른 그러한 구성의 조합으로 구현될 수도 있다. 대안으로, 일부 단계들 또는 방법들은 주어진 기능에 특정한 회로부에 의해 수행될 수도 있다.
하나 이상의 예시적인 양태들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되는 경우, 기능들은 하나 이상의 명령들 또는 코드로서 컴퓨터 판독 가능한 매체 상에 저장되거나 또는 송신될 수도 있다. 본원에 설명된 방법 또는 알고리즘의 단계들은 유형의, 비일시적 컴퓨터 판독가능 저장 매체 상에 상주할 수도 있는 프로세서 실행가능 소프트웨어 모듈들로 구현될 수도 있다. 유형의, 비일시적 컴퓨터 판독가능 저장 매체는 컴퓨터에 의해 액세스될 수도 있는 임의의 이용 가능한 매체일 수도 있다. 비제한적인 예로서, 이러한 비일시적 컴퓨터 판독가능 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장 디바이스, 자기 디스크 저장 디바이스 또는 다른 자기 저장 디바이스, 또는 원하는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 저장하는데 사용될 수 있으며 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 본원에서 사용된 디스크 (disk) 와 디스크 (disc) 는, 컴팩트 디스크 (CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크 및 블루레이 디스크를 포함하며, 여기서 디스크 (disk) 는 통상 자기적으로 데이터를 재생하고, 디스크 (disc) 는 레이저를 이용하여 광학적으로 데이터를 재생한다. 위의 조합들도 비일시적 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다. 또한, 방법들 또는 알고리즘의 동작들은 컴퓨터 프로그램 제품에 포함될 수도 있는 유형의, 비일시적 머신 판독가능 매체 및/또는 컴퓨터 판독가능 매체 상의 코드들 및/또는 명령들의 하나 또는 임의의 조합 또는 세트로서 상주할 수도 있다.
개시된 양태들의 상기 설명들은 임의의 당업자가 본 발명을 실시하거나 사용하는 것을 가능하게 하도록 하기 위해 제공된다. 이들 양태들에 대한 다양한 변형들이 당업자에게는 자명할 것이고, 본원에서 정의된 일반적인 원리들은 본 발명의 취지와 범위를 벗어나지 않으면서 다른 양태들에 적용될 수도 있다. 따라서, 본 발명은 본원에 나타낸 양태들에 제한되도록 의도된 것은 아니며 본원의 개시된 원리들과 신규의 특징들 및 다음의 청구항들과 일치하는 최광의 범위를 따르려는 것이다.

Claims (54)

  1. 패턴 매칭 어택들로부터 데이터를 효율적으로 보호하기 위한 컴퓨팅 디바이스 내의 선택적 메모리 스크램블링 방법으로서,
    메모리에 저장되는 데이터가 보호된 콘텐트를 포함하는지 여부를 결정하는 단계;
    상기 데이터가 보호된 콘텐트를 포함하는 경우 상기 데이터를 상기 메모리에 저장하는 것의 부분으로서 상기 데이터에 스크램블링 루틴을 적용하는 단계; 및
    상기 데이터가 보호된 콘텐트를 포함하지 않는 경우 상기 데이터에 상기 스크램블링 루틴을 적용하지 않고 상기 데이터를 상기 메모리에 저장하는 단계를 포함하는, 선택적 메모리 스크램블링 방법.
  2. 제 1 항에 있어서,
    상기 보호된 콘텐트는 디지털 저작권 관리 (digital rights management; DRM) 하의 데이터, 개인 정보, 보안 정보, 뱅킹 정보, 패스워드들, 인증 정보, 보호된 콘텐트 애플리케이션 정보, 및 의료 데이터의 그룹으로부터 선택되는, 선택적 메모리 스크램블링 방법.
  3. 제 1 항에 있어서,
    상기 메모리는 캐시 메모리, 휘발성 메모리, 비-휘발성 메모리, 및 오프-칩 스토리지의 그룹으로부터 선택되는, 선택적 메모리 스크램블링 방법.
  4. 제 1 항에 있어서,
    상기 메모리에 저장되는 데이터가 보호된 콘텐트를 포함하는지 여부를 결정하는 단계는,
    상기 컴퓨팅 디바이스의 버스를 통해 송신된 데이터에 상기 데이터의 소스 또는 콘텐트를 식별하는 태깅 정보를 추가하는 단계; 및
    상기 태깅 정보에 기초하여 트랜잭션의 소스 또는 콘텐트를 결정하는 단계를 포함하고,
    상기 데이터가 보호된 콘텐트를 포함하는 경우 상기 데이터를 상기 메모리에 저장하는 것의 부분으로서 상기 데이터에 스크램블링 루틴을 적용하는 단계는 결정된 상기 소스 또는 콘텐트에 기초하여 상기 데이터를 스크램블링하고 상기 메모리에 저장하는 단계를 포함하는, 선택적 메모리 스크램블링 방법.
  5. 제 4 항에 있어서,
    상기 데이터의 소스 또는 콘텐트를 식별하는 정보로 데이터를 태깅하는 것은, 상기 데이터가 저장될 수도 있는 보안 도메인에 상관된 상기 데이터에 정보를 추가하는 단계를 포함하고,
    상기 태깅 정보에 기초하여 상기 트랜잭션의 소스 또는 콘텐트를 결정하는 단계는, 상기 태깅 정보를 인증된 보안 도메인들에 상관된 저장된 식별자들에 비교하는 단계를 포함하는, 선택적 메모리 스크램블링 방법.
  6. 제 4 항에 있어서,
    상기 데이터에 추가된 상기 태깅 정보는 가상 머신 식별 (virtual machine identification; VMID) 인, 선택적 메모리 스크램블링 방법.
  7. 제 4 항에 있어서,
    상기 데이터에 추가된 상기 태깅 정보는 버스 마스터 식별인, 선택적 메모리 스크램블링 방법.
  8. 제 4 항에 있어서,
    상기 데이터에 추가된 상기 태깅 정보는 목적지 메모리 어드레스이고, 상기 메모리는 보호된 콘텐트 데이터에 대한 특정 메모리 어드레스들을 사용하는, 선택적 메모리 스크램블링 방법.
  9. 제 4 항에 있어서,
    상기 데이터에 추가된 상기 태깅 정보는 콘텐트 보호 (content protection; CP) 비트인, 선택적 메모리 스크램블링 방법.
  10. 제 1 항에 있어서,
    상기 방법은 상기 컴퓨팅 디바이스 내의 제 1 프로세서, 상기 컴퓨팅 디바이스 내의 코프로세서, 및 상기 컴퓨팅 디바이스 내의 피어 프로세서 중 적어도 하나에서 실행되는, 선택적 메모리 스크램블링 방법.
  11. 컴퓨팅 디바이스로서,
    적어도, 데이터가 스크램블링되는 보안 도메인 및 비보안 도메인으로 구성된 메모리; 및
    상기 메모리에 커플링된 프로세서를 포함하고,
    상기 프로세서는,
    상기 메모리에 저장되는 데이터가 보호된 콘텐트를 포함하는지 여부를 결정하는 것;
    상기 데이터가 보호된 콘텐트를 포함하는 경우 상기 데이터를 상기 메모리의 상기 보안 도메인에 저장하는 것의 부분으로서 상기 데이터에 스크램블링 루틴을 적용하는 것; 및
    상기 데이터가 보호된 콘텐트를 포함하지 않는 경우 상기 데이터에 상기 스크램블링 루틴을 적용하지 않고 상기 데이터를 상기 비보안 도메인에 저장하는 것
    을 포함하는 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 컴퓨팅 디바이스.
  12. 제 11 항에 있어서,
    상기 보호된 콘텐트는 디지털 저작권 관리 (DRM) 하의 데이터, 개인 정보, 보안 정보, 뱅킹 정보, 패스워드들, 인증 정보, 보호된 콘텐트 애플리케이션 정보, 및 의료 데이터의 그룹으로부터 선택되는, 컴퓨팅 디바이스.
  13. 제 11 항에 있어서,
    상기 메모리는 캐시 메모리, 휘발성 메모리, 비-휘발성 메모리, 및 오프-칩 스토리지의 그룹으로부터 선택되는, 컴퓨팅 디바이스.
  14. 제 11 항에 있어서,
    상기 프로세서는,
    상기 메모리에 저장되는 데이터가 보호된 콘텐트를 포함하는지 여부를 결정하는 것이,
    상기 컴퓨팅 디바이스의 버스를 통해 송신된 데이터에 상기 데이터의 소스 또는 콘텐트를 식별하는 태깅 정보를 추가하는 것; 및
    상기 태깅 정보에 기초하여 트랜잭션의 소스 또는 콘텐트를 결정하는 것을 포함하도록 하는
    동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되고,
    상기 프로세서는,
    상기 데이터가 보호된 콘텐트를 포함하는 경우 상기 데이터를 상기 메모리에 저장하는 것의 부분으로서 상기 데이터에 스크램블링 루틴을 적용하는 것이, 결정된 상기 소스 또는 콘텐트에 기초하여 상기 데이터를 스크램블링하고 상기 메모리에 저장하는 것을 포함하도록 하는
    동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 컴퓨팅 디바이스.
  15. 제 14 항에 있어서,
    상기 프로세서는,
    상기 데이터의 소스 또는 콘텐트를 식별하는 정보로 상기 컴퓨팅 디바이스의 버스를 통해 송신된 데이터를 태깅하는 것이, 상기 데이터가 저장될 수도 있는 보안 도메인에 상관된 상기 데이터에 정보를 추가하는 것을 포함하고,
    상기 태깅 정보에 기초하여 상기 트랜잭션의 소스 또는 콘텐트를 결정하는 것이, 상기 태깅 정보를 인증된 보안 도메인들에 상관된 저장된 식별자들에 비교하는 것을 포함하도록 하는
    동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 컴퓨팅 디바이스.
  16. 제 14 항에 있어서,
    상기 데이터에 추가된 상기 태깅 정보는 가상 머신 식별 (VMID) 인, 컴퓨팅 디바이스.
  17. 제 14 항에 있어서,
    상기 데이터에 추가된 상기 태깅 정보는 버스 마스터 식별인, 컴퓨팅 디바이스.
  18. 제 14 항에 있어서,
    상기 데이터에 추가된 상기 태깅 정보는 목적지 스토리지 어드레스이고, 상기 메모리는 보호된 콘텐트 데이터에 대한 특정 스토리지 어드레스들을 사용하는, 컴퓨팅 디바이스.
  19. 제 14 항에 있어서,
    상기 데이터에 추가된 상기 태깅 정보는 콘텐트 보호 (CP) 비트인, 컴퓨팅 디바이스.
  20. 제 14 항에 있어서,
    상기 프로세서는, 상기 컴퓨팅 디바이스 내의 복수의 프로세서들 중 제 1 프로세서, 상기 컴퓨팅 디바이스 내의 코프로세서, 및 상기 컴퓨팅 디바이스 내의 피어 프로세서 중 하나인, 컴퓨팅 디바이스.
  21. 컴퓨팅 디바이스로서,
    적어도, 데이터가 스크램블링되는 보안 도메인 및 비보안 도메인으로 구성된 메모리;
    상기 메모리에 저장되는 데이터가 보호된 콘텐트를 포함하는지 여부를 결정하기 위한 수단;
    상기 데이터가 보호된 콘텐트를 포함하는 경우 상기 데이터를 상기 메모리에 저장하는 것의 부분으로서 상기 데이터에 스크램블링 루틴을 적용하기 위한 수단; 및
    상기 데이터가 보호된 콘텐트를 포함하지 않는 경우 상기 데이터에 상기 스크램블링 루틴을 적용하지 않고 상기 데이터를 상기 스토리지에 저장하기 위한 수단을 포함하는, 컴퓨팅 디바이스.
  22. 제 21 항에 있어서,
    상기 보호된 콘텐트는 디지털 저작권 관리 (DRM) 하의 데이터, 개인 정보, 보안 정보, 뱅킹 정보, 패스워드들, 인증 정보, 보호된 콘텐트 애플리케이션 정보, 및 의료 데이터의 그룹으로부터 선택되는, 컴퓨팅 디바이스.
  23. 제 21 항에 있어서,
    상기 메모리는 캐시 메모리, 휘발성 메모리, 비-휘발성 메모리, 및 오프-칩 스토리지의 그룹으로부터 선택되는, 컴퓨팅 디바이스.
  24. 제 21 항에 있어서,
    상기 메모리에 저장되는 데이터가 보호된 콘텐트를 포함하는지 여부를 결정하기 위한 수단은,
    상기 컴퓨팅 디바이스의 버스를 통해 송신된 데이터에 상기 데이터의 소스 또는 콘텐트를 식별하는 태깅 정보를 추가하기 위한 수단; 및
    상기 태깅 정보에 기초하여 상기 트랜잭션의 소스 또는 콘텐트를 결정하기 위한 수단을 포함하고,
    상기 데이터가 보호된 콘텐트를 포함하는 경우 상기 데이터를 상기 메모리에 저장하는 것의 부분으로서 상기 데이터에 스크램블링 루틴을 적용하기 위한 수단은, 결정된 상기 소스 또는 콘텐트에 기초하여 상기 데이터를 스크램블링하고 상기 메모리에 저장하기 위한 수단을 포함하는, 컴퓨팅 디바이스.
  25. 제 24 항에 있어서,
    상기 데이터의 소스 또는 콘텐트를 식별하는 정보로 상기 컴퓨팅 디바이스의 버스를 통해 송신된 데이터를 태깅하기 위한 수단은, 상기 데이터가 저장될 수도 있는 보안 도메인에 상관된 상기 데이터에 정보를 추가하기 위한 수단을 포함하고,
    상기 태깅 정보에 기초하여 상기 트랜잭션의 소스 또는 콘텐트를 결정하기 위한 수단은, 상기 태깅 정보를 인증된 보안 도메인들에 상관된 저장된 식별자들에 비교하기 위한 수단을 포함하는, 컴퓨팅 디바이스.
  26. 제 24 항에 있어서,
    상기 데이터에 추가된 상기 태깅 정보는 가상 머신 식별 (VMID) 인, 컴퓨팅 디바이스.
  27. 제 24 항에 있어서,
    상기 데이터에 추가된 상기 태깅 정보는 버스 마스터 식별인, 컴퓨팅 디바이스.
  28. 제 24 항에 있어서,
    상기 데이터에 추가된 상기 태깅 정보는 목적지 스토리지 어드레스이고, 상기 메모리는 보호된 콘텐트 데이터에 대한 특정 스토리지 어드레스들을 사용하는, 컴퓨팅 디바이스.
  29. 제 24 항에 있어서,
    상기 데이터에 추가된 상기 태깅 정보는 콘텐트 보호 (CP) 비트인, 컴퓨팅 디바이스.
  30. 제 24 항에 있어서,
    상기 컴퓨팅 디바이스 내의 복수의 프로세서들 중 제 1 프로세서, 상기 컴퓨팅 디바이스 내의 코프로세서, 및 상기 컴퓨팅 디바이스 내의 피어 프로세서 중 적어도 하나를 포함하는 애플리케이션들을 실행하기 위한 수단을 더 포함하는, 컴퓨팅 디바이스.
  31. 프로세서 실행가능 명령들이 저장되어 있는 비일시적 프로세서 판독가능 저장 매체로서,
    상기 프로세서 실행가능 명령들은, 프로세서로 하여금,
    메모리에 저장되는 데이터가 보호된 콘텐트를 포함하는지 여부를 결정하는 것;
    상기 데이터가 보호된 콘텐트를 포함하는 경우 상기 데이터를 상기 메모리의 상기 보안 도메인에 저장하는 것의 부분으로서 상기 데이터에 스크램블링 루틴을 적용하는 것; 및
    상기 데이터가 보호된 콘텐트를 포함하지 않는 경우 상기 데이터에 상기 스크램블링 루틴을 적용하지 않고 상기 데이터를 상기 비보안 도메인에 저장하는 것을 포함하는 동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  32. 제 31 항에 있어서,
    저장된 상기 프로세서 실행가능 명령들은, 프로세서로 하여금,
    보호된 콘텐트가 디지털 저작권 관리 (DRM) 하의 데이터, 개인 정보, 보안 정보, 뱅킹 정보, 패스워드들, 인증 정보, 보호된 콘텐트 애플리케이션 정보, 및 의료 데이터의 그룹으로부터 선택되도록 하는 동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  33. 제 31 항에 있어서,
    저장된 상기 프로세서 실행가능 명령들은, 프로세서로 하여금,
    상기 메모리가 캐시 메모리, 휘발성 메모리, 비-휘발성 메모리, 및 오프-칩 스토리지의 그룹으로부터 선택되도록 하는 동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  34. 제 31 항에 있어서,
    저장된 상기 프로세서 실행가능 명령들은, 프로세서로 하여금,
    상기 메모리에 저장되는 데이터가 보호된 콘텐트를 포함하는지 여부를 결정하는 것이,
    컴퓨팅 디바이스의 버스를 통해 송신된 데이터에 상기 데이터의 소스 또는 콘텐트를 식별하는 태깅 정보를 추가하는 것; 및
    상기 태깅 정보에 기초하여 트랜잭션의 소스 또는 콘텐트를 결정하는 것을 포함하도록 하는
    동작들을 수행하게 하도록 구성되고,
    저장된 상기 프로세서 실행가능 명령들은, 프로세서로 하여금,
    상기 데이터가 보호된 콘텐트를 포함하는 경우 상기 데이터를 상기 메모리에 저장하는 것의 부분으로서 상기 데이터에 스크램블링 루틴을 적용하는 것이, 결정된 상기 소스 또는 콘텐트에 기초하여 상기 데이터를 스크램블링하고 상기 메모리에 저장하는 것을 포함하도록 하는
    동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  35. 제 34 항에 있어서,
    상기 저장된 프로세서 실행가능 명령들은, 프로세서로 하여금,
    상기 데이터의 소스 또는 콘텐트를 식별하는 정보로 상기 컴퓨팅 디바이스의 버스를 통해 송신된 데이터를 태깅하는 것이, 상기 데이터가 저장될 수도 있는 보안 도메인에 상관된 상기 데이터에 정보를 추가하는 것을 포함하고,
    상기 태깅 정보에 기초하여 상기 트랜잭션의 소스 또는 콘텐트를 결정하는 것이, 상기 태깅 정보를 인증된 보안 도메인들에 상관된 저장된 식별자들에 비교하는 것을 포함하도록 하는
    동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  36. 제 34 항에 있어서,
    상기 저장된 프로세서 실행가능 명령들은, 프로세서로 하여금,
    상기 데이터에 추가된 상기 태깅 정보가 가상 머신 식별 (VMID) 이도록 하는 동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  37. 제 34 항에 있어서,
    상기 저장된 프로세서 실행가능 명령들은, 프로세서로 하여금,
    상기 데이터에 추가된 상기 태깅 정보가 버스 마스터 식별이도록 하는 동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  38. 제 34 항에 있어서,
    상기 저장된 프로세서 실행가능 명령들은, 프로세서로 하여금,
    상기 데이터에 추가된 상기 태깅 정보가 목적지 스토리지 어드레스이고, 상기 메모리가 보호된 콘텐트 데이터에 대한 특정 스토리지 어드레스들을 사용하도록 하는 동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  39. 제 34 항에 있어서,
    상기 저장된 프로세서 실행가능 명령들은, 프로세서로 하여금,
    상기 데이터에 추가된 상기 태깅 정보가 콘텐트 보호 (CP) 비트이도록 하는 동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  40. 제 34 항에 있어서,
    상기 저장된 프로세서 실행가능 명령들은, 복수의 프로세서들 중 하나, 코프로세서, 및 피어 프로세서의 그룹으로부터 선택된 프로세서에 의해 실행되도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  41. 컴퓨팅 디바이스로서,
    적어도, 데이터가 스크램블링되는 보안 도메인 및 비보안 도메인으로 구성된 메모리;
    상기 메모리에 커플링된 메모리 제어기; 및
    상기 메모리 및 상기 메모리 제어기에 커플링된 프로세서를 포함하고,
    상기 프로세서는,
    상기 컴퓨팅 디바이스의 버스를 통해 송신된 데이터에 태깅 정보를 추가하는 것; 및
    상기 태깅 정보에 기초하여 상기 메모리에 저장되는 데이터가 보호된 콘텐트를 포함하는지 여부를 결정하는 것;
    상기 데이터가 보호된 콘텐트를 포함하는 경우 상기 데이터를 상기 메모리의 상기 보안 도메인에 저장하는 것의 부분으로서 상기 데이터에 스크램블링 루틴을 적용하는 것; 및
    상기 데이터가 보호된 콘텐트를 포함하지 않는 경우 상기 데이터에 상기 스크램블링 루틴을 적용하지 않고 상기 데이터를 상기 비보안 도메인에 저장하는 것을 포함하는
    동작들을 수행하도록 상기 메모리 제어기를 프로그래밍하는 것
    을 포함하는 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 컴퓨팅 디바이스.
  42. 제 41 항에 있어서,
    보호된 콘텐트는 디지털 저작권 관리 (DRM) 하의 데이터, 개인 정보, 보안 정보, 뱅킹 정보, 패스워드들, 인증 정보, 보호된 콘텐트 애플리케이션 정보, 및 의료 데이터의 그룹으로부터 선택되는, 컴퓨팅 디바이스.
  43. 제 41 항에 있어서,
    상기 메모리는 캐시 메모리, 휘발성 메모리, 비-휘발성 메모리, 및 오프-칩 스토리지의 그룹으로부터 선택되는, 컴퓨팅 디바이스.
  44. 제 41 항에 있어서,
    상기 프로세서는,
    상기 컴퓨팅 디바이스의 버스를 통해 송신된 데이터에 태깅 정보를 추가하는 것이, 상기 데이터가 저장될 수도 있는 보안 도메인에 상관된 상기 데이터에 정보를 추가하는 것을 포함하며;
    상기 태깅 정보에 기초하여 상기 메모리에 저장되는 데이터가 보호된 콘텐트를 포함하는지 여부를 결정하는 것이, 상기 태깅 정보를 승인된 보안 도메인들에 상관된 저장된 식별자들에 비교하는 것을 포함하도록 하는
    동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 컴퓨팅 디바이스.
  45. 제 41 항에 있어서,
    상기 데이터에 추가된 상기 태깅 정보는, 가상 머신 식별 (VMID); 버스 마스터 식별; 목적지 스토리지 어드레스; 상기 데이터의 소스 또는 콘텐트의 식별자; 및 콘텐트 보호 (CP) 비트 중 하나인, 컴퓨팅 디바이스.
  46. 컴퓨팅 디바이스로서,
    적어도, 데이터가 스크램블링되는 보안 도메인 및 비보안 도메인으로 구성된 메모리;
    상기 메모리에 커플링된 메모리 제어기;
    상기 컴퓨팅 디바이스의 버스를 통해 송신된 데이터에 태깅 정보를 추가하기 위한 수단; 및
    상기 태깅 정보에 기초하여 상기 메모리에 저장되는 데이터가 보호된 콘텐트를 포함하는지 여부를 결정하는 것;
    상기 데이터가 보호된 콘텐트를 포함하는 경우 상기 데이터를 상기 메모리의 상기 보안 도메인에 저장하는 것의 부분으로서 상기 데이터에 스크램블링 루틴을 적용하는 것; 및
    상기 데이터가 보호된 콘텐트를 포함하지 않는 경우 상기 데이터에 상기 스크램블링 루틴을 적용하지 않고 상기 데이터를 상기 비보안 도메인에 저장하는 것을 포함하는
    동작들을 수행하도록 상기 메모리 제어기를 프로그래밍하기 위한 수단을 포함하는, 컴퓨팅 디바이스.
  47. 제 46 항에 있어서,
    상기 보호된 콘텐트는 디지털 저작권 관리 (DRM) 하의 데이터, 개인 정보, 보안 정보, 뱅킹 정보, 패스워드들, 인증 정보, 보호된 콘텐트 애플리케이션 정보, 및 의료 데이터의 그룹으로부터 선택되는, 컴퓨팅 디바이스.
  48. 제 46 항에 있어서,
    상기 메모리는 캐시 메모리, 휘발성 메모리, 비-휘발성 메모리, 및 오프-칩 스토리지의 그룹으로부터 선택되는, 컴퓨팅 디바이스.
  49. 제 46 항에 있어서,
    상기 컴퓨팅 디바이스의 버스를 통해 송신된 데이터에 태깅 정보를 추가하기 위한 수단은, 상기 데이터가 저장될 수도 있는 보안 도메인에 상관된 상기 데이터에 정보를 추가하기 위한 수단을 포함하고,
    상기 태깅 정보에 기초하여 상기 메모리에 저장되는 데이터가 보호된 콘텐트를 포함하는지 여부를 결정하기 위한 수단은, 상기 태깅 정보를 승인된 보안 도메인들에 상관된 저장된 식별자들에 비교하는 것을 포함하는, 컴퓨팅 디바이스.
  50. 제 46 항에 있어서,
    상기 데이터에 추가된 상기 태깅 정보는, 가상 머신 식별 (VMID); 버스 마스터 식별; 목적지 스토리지 어드레스; 상기 데이터의 소스 또는 콘텐트의 식별자; 및 콘텐트 보호 (CP) 비트 중 하나인, 컴퓨팅 디바이스.
  51. 프로세서 실행가능 명령들이 저장되어 있는 비일시적 프로세서 판독가능 저장 매체로서,
    상기 프로세서 실행가능 명령들은, 프로세서로 하여금,
    컴퓨팅 디바이스의 버스를 통해 송신된 데이터에 태깅 정보를 추가하는 것; 및
    상기 태깅 정보에 기초하여 상기 메모리에 저장되는 데이터가 보호된 콘텐트를 포함하는지 여부를 결정하는 것;
    상기 데이터가 보호된 콘텐트를 포함하는 경우 상기 데이터를 상기 메모리의 상기 보안 도메인에 저장하는 것의 부분으로서 상기 데이터에 스크램블링 루틴을 적용하는 것; 및
    상기 데이터가 보호된 콘텐트를 포함하지 않는 경우 상기 데이터에 상기 스크램블링 루틴을 적용하지 않고 상기 데이터를 상기 비보안 도메인에 저장하는 것을 포함하는
    동작들을 수행하도록 메모리 제어기를 프로그래밍하는 것을 포함하는 동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  52. 제 51 항에 있어서,
    저장된 상기 프로세서 실행가능 명령들은, 프로세서로 하여금,
    보호된 콘텐트가 디지털 저작권 관리 (DRM) 하의 데이터, 개인 정보, 보안 정보, 뱅킹 정보, 패스워드들, 인증 정보, 보호된 콘텐트 애플리케이션 정보, 및 의료 데이터의 그룹으로부터 선택되도록 하는
    동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  53. 제 51 항에 있어서,
    저장된 상기 프로세서 실행가능 명령들은, 프로세서로 하여금,
    상기 컴퓨팅 디바이스의 버스를 통해 송신된 데이터에 태깅 정보를 추가하는 것이, 상기 데이터가 저장될 수도 있는 보안 도메인에 상관된 상기 데이터에 정보를 추가하는 것을 포함하고,
    상기 태깅 정보에 기초하여 상기 메모리에 저장되는 데이터가 보호된 콘텐트를 포함하는지 여부를 결정하는 것이, 상기 태깅 정보를 승인된 보안 도메인들에 상관된 저장된 식별자들에 비교하는 것을 포함하도록 하는
    동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  54. 제 51 항에 있어서,
    저장된 상기 프로세서 실행가능 명령들은, 프로세서로 하여금,
    상기 데이터에 추가된 상기 태깅 정보가, 가상 머신 식별 (VMID); 버스 마스터 식별; 목적지 스토리지 어드레스; 상기 데이터의 소스 또는 콘텐트의 식별자; 및 콘텐트 보호 (CP) 비트 중 하나이도록 하는
    동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
KR20157005976A 2012-08-10 2013-06-13 선택적 ram 스크램블링을 위한 방법 및 디바이스들 KR20150041095A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/571,671 US9400890B2 (en) 2012-08-10 2012-08-10 Method and devices for selective RAM scrambling
US13/571,671 2012-08-10
PCT/US2013/045681 WO2014025453A1 (en) 2012-08-10 2013-06-13 Method and devices for selective ram scrambling

Publications (1)

Publication Number Publication Date
KR20150041095A true KR20150041095A (ko) 2015-04-15

Family

ID=48699315

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20157005976A KR20150041095A (ko) 2012-08-10 2013-06-13 선택적 ram 스크램블링을 위한 방법 및 디바이스들

Country Status (8)

Country Link
US (1) US9400890B2 (ko)
EP (1) EP2883186A1 (ko)
JP (1) JP2015528596A (ko)
KR (1) KR20150041095A (ko)
CN (1) CN104541281B (ko)
BR (1) BR112015002789A2 (ko)
IN (1) IN2014MN02611A (ko)
WO (1) WO2014025453A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020171428A1 (ko) * 2019-02-19 2020-08-27 삼성전자 주식회사 어플리케이션 데이터를 관리하는 전자 장치 및 방법

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9590959B2 (en) 2013-02-12 2017-03-07 Amazon Technologies, Inc. Data security service
US10075471B2 (en) 2012-06-07 2018-09-11 Amazon Technologies, Inc. Data loss prevention techniques
US9286491B2 (en) 2012-06-07 2016-03-15 Amazon Technologies, Inc. Virtual service provider zones
US10084818B1 (en) 2012-06-07 2018-09-25 Amazon Technologies, Inc. Flexibly configurable data modification services
US9608813B1 (en) 2013-06-13 2017-03-28 Amazon Technologies, Inc. Key rotation techniques
US10211977B1 (en) 2013-02-12 2019-02-19 Amazon Technologies, Inc. Secure management of information using a security module
US9367697B1 (en) 2013-02-12 2016-06-14 Amazon Technologies, Inc. Data security with a security module
US10467422B1 (en) 2013-02-12 2019-11-05 Amazon Technologies, Inc. Automatic key rotation
US9300464B1 (en) 2013-02-12 2016-03-29 Amazon Technologies, Inc. Probabilistic key rotation
US9705674B2 (en) 2013-02-12 2017-07-11 Amazon Technologies, Inc. Federated key management
US10210341B2 (en) 2013-02-12 2019-02-19 Amazon Technologies, Inc. Delayed data access
US10185584B2 (en) * 2013-08-20 2019-01-22 Teleputers, Llc System and method for self-protecting data
US9397835B1 (en) 2014-05-21 2016-07-19 Amazon Technologies, Inc. Web of trust management in a distributed system
KR102218715B1 (ko) * 2014-06-19 2021-02-23 삼성전자주식회사 채널별로 데이터를 보호할 수 있는 반도체 장치
US9438421B1 (en) 2014-06-27 2016-09-06 Amazon Technologies, Inc. Supporting a fixed transaction rate with a variably-backed logical cryptographic key
US9646160B2 (en) * 2014-09-08 2017-05-09 Arm Limited Apparatus and method for providing resilience to attacks on reset of the apparatus
US9866392B1 (en) 2014-09-15 2018-01-09 Amazon Technologies, Inc. Distributed system web of trust provisioning
KR102485830B1 (ko) * 2015-02-13 2023-01-09 삼성전자주식회사 보안 정보의 처리
US10650621B1 (en) 2016-09-13 2020-05-12 Iocurrents, Inc. Interfacing with a vehicular controller area network
US10417458B2 (en) * 2017-02-24 2019-09-17 Microsoft Technology Licensing, Llc Securing an unprotected hardware bus
CN107562514B (zh) * 2017-08-03 2020-11-24 致象尔微电子科技(上海)有限公司 一种物理内存访问控制与隔离方法
US10901917B1 (en) * 2018-01-26 2021-01-26 Amazon Technologies, Inc. Address scrambling for storage class memory
KR102091524B1 (ko) 2018-07-23 2020-03-23 삼성전자주식회사 어드레스를 스크램블하는 메모리 장치
US11113422B2 (en) 2018-08-03 2021-09-07 Micron Technology, Inc. Data protection in computer processors
US11074198B2 (en) * 2018-09-18 2021-07-27 Micron Technology, Inc. Key management in computer processors
CN110309678B (zh) * 2019-06-28 2021-03-19 兆讯恒达科技股份有限公司 一种内存加扰的方法
CN110309083B (zh) * 2019-06-28 2021-09-07 兆讯恒达科技股份有限公司 一种存储器数据加扰方法
US11645428B1 (en) 2020-02-11 2023-05-09 Wells Fargo Bank, N.A. Quantum phenomenon-based obfuscation of memory
CN115086017A (zh) * 2022-06-14 2022-09-20 杭州安恒信息安全技术有限公司 基于安全域的网络数据处理方法、装置、系统和电子设备

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7036011B2 (en) 2000-06-29 2006-04-25 Cachestream Corporation Digital rights management
US7567721B2 (en) 2002-01-22 2009-07-28 Digimarc Corporation Digital watermarking of low bit rate video
US6851056B2 (en) * 2002-04-18 2005-02-01 International Business Machines Corporation Control function employing a requesting master id and a data address to qualify data access within an integrated system
US7444523B2 (en) 2004-08-27 2008-10-28 Microsoft Corporation System and method for using address bits to signal security attributes of data in the address space
JP2006155159A (ja) * 2004-11-29 2006-06-15 Fuji Electric Holdings Co Ltd 耐タンパ装置
JP2007310601A (ja) * 2006-05-18 2007-11-29 Renesas Technology Corp マイクロコンピュータおよびそのソフトウェア保護方法
JP2007328619A (ja) 2006-06-08 2007-12-20 Toshiba Corp メモリシステム
JP4872512B2 (ja) * 2006-08-02 2012-02-08 ソニー株式会社 記憶装置、記憶制御方法、並びに、情報処理装置および方法
US8423794B2 (en) * 2006-12-28 2013-04-16 Sandisk Technologies Inc. Method and apparatus for upgrading a memory card that has security mechanisms for preventing copying of secure content and applications
US20090292930A1 (en) 2008-04-24 2009-11-26 Marano Robert F System, method and apparatus for assuring authenticity and permissible use of electronic documents
US8179983B2 (en) 2008-05-20 2012-05-15 Broadcom Corporation Video processing system with layered video coding for fast channel change and methods for use therewith
JP2010134572A (ja) * 2008-12-03 2010-06-17 Panasonic Corp セキュリティを実現する装置、および方法
US8862999B2 (en) * 2010-11-22 2014-10-14 International Business Machines Corporation Dynamic de-identification of data
US8583937B2 (en) * 2010-12-16 2013-11-12 Blackberry Limited Method and apparatus for securing a computing device

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020171428A1 (ko) * 2019-02-19 2020-08-27 삼성전자 주식회사 어플리케이션 데이터를 관리하는 전자 장치 및 방법

Also Published As

Publication number Publication date
CN104541281B (zh) 2018-07-17
JP2015528596A (ja) 2015-09-28
US20140047549A1 (en) 2014-02-13
CN104541281A (zh) 2015-04-22
WO2014025453A1 (en) 2014-02-13
BR112015002789A2 (pt) 2018-05-22
IN2014MN02611A (ko) 2015-09-11
EP2883186A1 (en) 2015-06-17
US9400890B2 (en) 2016-07-26

Similar Documents

Publication Publication Date Title
US9400890B2 (en) Method and devices for selective RAM scrambling
AU2006205315B2 (en) Method and portable storage device for allocating secure area in insecure area
JP5361894B2 (ja) マルチファクタコンテンツの保護
US9721071B2 (en) Binding of cryptographic content using unique device characteristics with server heuristics
KR100678927B1 (ko) 비보안 영역에 보안 영역을 할당하는 방법 및 이를제공하는 휴대용 저장 장치
US9660986B2 (en) Secure access method and secure access device for an application program
US20140223580A1 (en) Method of and apparatus for processing software using hash function to secure software, and computer-readable medium storing executable instructions for performing the method
US10897359B2 (en) Controlled storage device access
US20110131418A1 (en) Method of password management and authentication suitable for trusted platform module
KR101019354B1 (ko) 반도체 메모리 장치를 통해 데이터 보안 기억 및 알고리즘기억을 실현하기 위한 방법
CN105408912A (zh) 处理认证和资源许可
US9977890B2 (en) Method and device for controlling access from the device to a card via a NFC interface
JP2022533193A (ja) 統合された隔離されたアプリケーションにおけるランサムウェアの被害の軽減
CN104956620B (zh) 用于验证和密钥交换的方法、装置和计算机可读存储媒体
TW201839645A (zh) 儲存裝置及其存取權限控制方法
US20150227755A1 (en) Encryption and decryption methods of a mobile storage on a file-by-file basis
US20220038505A1 (en) Techniques to enforce policies for computing platform resources
US20080022371A1 (en) Method and System for Improved Fault Tolerance in Distributed Customization Controls Using Non-Volatile Memory
TWI501106B (zh) 保護儲存媒介資料的方法及其媒體存取裝置
KR101776845B1 (ko) 키 조작에 대한 보호
US20130103953A1 (en) Apparatus and method for encrypting hard disk
TW201441866A (zh) 整合新型加密虛擬磁碟與硬體驗證機制之檔案保護方法

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application