KR101735023B1 - 민감한 코드와 데이터를 보호하는 아키텍처를 포함하는 방법 및 장치 - Google Patents

민감한 코드와 데이터를 보호하는 아키텍처를 포함하는 방법 및 장치 Download PDF

Info

Publication number
KR101735023B1
KR101735023B1 KR1020137012783A KR20137012783A KR101735023B1 KR 101735023 B1 KR101735023 B1 KR 101735023B1 KR 1020137012783 A KR1020137012783 A KR 1020137012783A KR 20137012783 A KR20137012783 A KR 20137012783A KR 101735023 B1 KR101735023 B1 KR 101735023B1
Authority
KR
South Korea
Prior art keywords
samu
code
encrypted
memory
data
Prior art date
Application number
KR1020137012783A
Other languages
English (en)
Other versions
KR20130142135A (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 KR20130142135A publication Critical patent/KR20130142135A/ko
Application granted granted Critical
Publication of KR101735023B1 publication Critical patent/KR101735023B1/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
    • 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
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • 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/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • 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]
    • G06F21/109Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by using specially-adapted hardware at the client

Abstract

SAMU(secure asset management unit)를 포함하는 민감한 코드와 데이터를 실행하기 위한 보안 실행 환경이 기술된다. SAMU는 민감한 코드, 예를 들어 컨텐츠 소비를 위해 수립된 복사 방지 구조와 연관된 코드를 실행하는 보안 실행 환경을 제공한다. SAMU 아키텍처는 하드웨어 기반 보안 부트와 메모리 보호를 허용하며, 호스트 프로세서에 의해 제공된 코드에 대해 요구 시 코드 실행을 제공한다. SAMU는 암호화된 및 부호 있는 커널 코드로부터 부트되고, 암호화된 부호 있는 코드를 실행할 수 있다. 하드웨어 기반 보안 구성은 수직 또는 수평 특권 위배를 방지하는 것을 가능하게 한다.

Description

민감한 코드와 데이터를 보호하는 아키텍처를 포함하는 방법 및 장치{METHOD AND APPARATUS INCLUDING ARCHITECTURE FOR PROTECTING SENSITIVE CODE AND DATA}
관련 출원에 대한 상호 참조
본 출원은 미국 가출원 제61/405,045호 및 제61/405,054호(둘 모두 출원일: 2010년 10월 20일), 및 미국 정규 출원 제12/964,278호(출원일: 2010년 12월 9일) 및 제12/975,555호(출원일: 2010년 12월 22일)의 이익을 주장하며, 이들 기초 출원의 내용은 본 명세서에 참조로 병합된다.
본 출원은 하드웨어 기반 보안 실행 환경에 관한 것이다.
디지털 권리 관리(digital rights management: DRM) 라이센스의 강력한 기술적 시행은 복호된 디지털 컨텐츠의 원시 비트 스트림에 직접 액세스하는 것을 방지하는 것과 라이센스 시행 메커니즘 그 자체가 가능하다는 것을 가정한다. 그러나, 이것은 퍼스널 컴퓨터(personal computer: PC)와 같은 개방된 컴퓨팅 플랫폼에 대해서는 달성하는 것이 곤란하다.
PC는 민감한 코드와 데이터(sensitive code and data)의 비밀을 유지하기 위해 강력하게 만드는 것을 곤란하게 하는 것으로 밝혀졌다. 코드의 비밀을 유지하거나 또는 데이터의 보안을 보장하는 현재의 방법은 안티-디버깅(anti-debugging), 무결성 모니터링(integrity monitoring), 및 리버스 엔지니어링 및 탬퍼링(reverse engineering and tampering)을 저지하는 난독화 기술(obfuscation technique)에 의존하는 기존의 소프트웨어 기반 솔루션을 포함한다. 다른 기술은 시스템이 보안 부트 공정(secure boot process) 동안 로드 시간(load-time)에 실행하기를 원하는 소프트웨어 코드 및/또는 데이터 상수를 인증하는 것을 수반한다. 이것은 예를 들어 이 기술 분야에 통상의 지식을 가진 자라면 인식할 수 있는 시그너처 검증 기술(signature verification technique)을 통해 달성될 수 있다. 그러나, 로드 시간 인증 기술은 또한 단점을 나타낸다. 예를 들어, 이 기술에서 인증은 보안 부트 공정 동안 단 한번만 일어난다. 따라서, 로드 시간 인증 기술을 사용하는 시스템은 실행 시간에 프로그래밍 공격 및/또는 데이터 손상에 취약하며, 여기서 실행 시간은 로드 시간 바로 이후(즉, 보안 부트 공정 후) 시간 기간인 것으로 인식된다.
기존의 컴퓨팅 시스템은 종종 자격 기반 보안 시스템(credential-based security system)을 구현함으로써 레지스터(register)에 저장된 데이터의 무결성을 보호하려는 시도를 한다. 이러한 시스템에서, 레지스터(즉, 판독/기록될 수 있는 메모리의 위치)에의 액세스는 자격이 검증된 기능(즉, 소프트웨어 프로그램)으로 제한된다. 이 검증은 컴퓨팅 시스템 내 로직(logic)으로 달성될 수 있다. 그러나, 자격 기반 보안 시스템은 다수의 단점을 나타낸다. 예를 들어, 자격 기반 보안 시스템은 하나의 데이터 액세스 정책만을 시행할 수 있다. 구체적으로, 실행가능한 자격을 가진 기능은 레지스터 내 데이터에 액세스하는 것이 허용될 수 있는 반면, 실행가능한 자격이 없는 기능은 데이터에의 액세스가 거부될 수 있다. 이 시스템은 데이터 액세스에 대한 메커니즘으로 자격 기반 검증에만 의존하므로, 이 시스템은 실행가능한 자격을 부적절하게 획득한 불량 기능을 가진 시나리오에 취약하며 그리하여 보호되어야 할 데이터에도 액세스를 허용하게 된다. 나아가, 이 시스템은 자격 기반 데이터 액세스가 보호되어야 할 모든 유형의 데이터에 대해서도 적절한 보안 정책이 있는 것을 가정한다. 그러나, 종종 상이한 유형의 데이터는 상이한 액세스 정책으로 보호되는 것이 바람직하다.
전술된 바와 같은 알려진 기술은 이들이 정규 PC에서 실행되도록 의도된 소프트웨어에서 구현될 때 DRM 시스템에 사용하기에는 빈번히 충분치 않다. 리버스 엔지니어링을 가능하게 만드는 이용가능한 툴(tool)은 많이 있다.
추가적으로, PC에서, 운영 시스템(operating system)의 보호 아키텍처와 액세스 제어 모델은, 개방된 아키텍처로 민감한 소프트웨어 코드를 보호하는 것은 곤란하기 때문에 DRM 컨텐츠 렌더링 클라이언트를 위한 플랫폼으로 사용하기에는 성가시게 한다. 비밀을 유지하는 현재의 방법은 높은 연산성과 전력 오버헤드를 희생하여 일시적인 해커(hacker)에 유효한 것으로 밝혀졌다. 그러나, 고가의 자산은 여전히 전문 해커에 대해서 보호되기 어렵다. 그러므로, 민감한 코드와 데이터를 실행하기 위한 퍼스널 컴퓨팅 환경에서 보안 실행 환경을 제공할 필요성이 있다.
본 명세서에 설명된 실시예는 요구 시 민감한 코드가 보안 실행 환경에 로드될 수 있게 하는 하드웨어 기반 보호 실행 환경에 제공된 보안 구성을 포함한다. 실행 시간에 생성된 데이터라도 또한 외부 메모리에 저장될 때에는 보안으로 보호될 수 있다. 메모리 맵핑을 위한 각 상황은 별도로 관리되어 각 상황 사이에서 비밀을 보장한다. 실행 환경은 보안 자산 관리 유닛(secure asset management unit: SAMU)의 아키텍처 상세를 포함한다. SAMU는 코드나 데이터의 비밀을 인증하고 유지하기 위해 암호화된 포맷으로 호스트 프로세서로부터 코드나 데이터를 오프로드(offload)함으로써 프로그램 코드나 데이터에 대해 보안 실행 환경을 제공한다. SAMU는 탬퍼링 방지 소프트웨어를 위한 플랫폼을 제공함으로써 소비되는 전력을 감소시키고 유효 소프트웨어의 취소 빈도를 감소시킨다. 또한, SAMU는 정직한 유저에게는 비 간섭적이고 민감한 코드의 리버스 엔지니어링을 어렵게 하도록 보호되는 실행 환경을 제공한다. 하드웨어 기반 보안 구성은 수직 또는 수평 특권 위배(privilege violation)를 방지하는 것을 가능하게 한다.
보다 상세한 이해는 예를 들어 첨부 도면을 참조하여 주어진 이하의 상세한 설명으로부터 주어질 수 있다.
도 1a는 프로세서로부터 SAMU로 민감한 코드가 오프로드되는 일 실시예에 따른 호스트 시스템을 도시한 도면;
도 1b는 SAMU 상위 레벨 아키텍처를 도시한 도면;
도 2는 SAMU 실행 시간 상황 설정을 위한 흐름도;
도 3은 SAMU 소프트웨어 스택을 도시한 도면.
본 명세서에서 사용된 "프로세서"라는 용어는 프로세서, 프로세서 코어, 중앙 처리 유닛(central processing unit: CPU), 그래픽 처리 유닛(graphics processing unit: GPU), 디지털 신호 프로세서(digital signal processor: DSP), 전계 프로그래밍 게이트 어레이(field programmable gate array: FPGA), 또는 유사한 디바이스 중 어느 것을 말한다. 프로세서는 다른 디바이스, 예를 들어, 집적된 노쓰 브리지(integrated north bridge), 애플리케이션 프로세서(application processor)(Apps Processor), CPU, DSP 등의 일부를 형성할 수 있다. 본 명세서에 사용된 프로세서 코어는 x86, RISC, 또는 다른 명령 세트 코어일 수 있다.
SAMU는 프로세서 코어 내에 구성된 구성요소(component)이거나 또는 프로세서 코어와 직렬로 수행되도록 구성된 별개의 구성요소이다. 프로세서 코어 내에 구성되거나 프로세서 코어와는 별개의 구성요소로 구성될 때, SAMU는 호스트 프로세서로부터 민감한 코드를 오프로드하거나 메모리 내 민감한 코드나 데이터를 암호화하는 것 중 적어도 하나를 수행하도록 구성될 수 있다.
SAMU는 하드웨어 기반 보호 실행 환경을 제공하도록 하드웨어로 구현될 수 있다. 이 환경에서, 민감한 코드와 데이터는 보안 메모리에서 보호될 수 있고 캐시(cache) 또는 내장된 메모리에 평문 형태(plaintext form)로만 저장될 수 있다. 나아가, 디버깅은 생산 부품(production parts)에 대해 완전히 디스에이블되고; 보안 커널(secure kernel)은 실행 환경을 "소유"(own)하거나 제어하며, 메모리와 자원에의 액세스가 모두 제어된다. SAMU는 프로세서로 메모리를 공유할 수 있거나 또는 전용 메모리를 구비할 수 있다.
도 1a는 프로세서로부터 SAMU로 민감한 코드가 오프로드되는 일 실시예에 따른 호스트 시스템(101)을 도시한다. 도 1a는 시스템 버스 또는 내부 버스(105)를 통해 연결된 프로세서(102)와 SAMU(104)를 구비하는 시스템(101)을 도시한다. 시스템(101)은 피어(peer)와 데이터를 교환할 수 있는 임의의 컴퓨터 시스템일 수 있다. 나아가, 시스템(101)은 프로세서(102)와 SAMU(104) 사이에 데이터를 전송하기 위해 보안 프로토콜을 사용하는 하나 이상의 애플리케이션(미도시)을 포함할 수 있다. 이 애플리케이션은 커널 공간 또는 유저 공간에서 실행될 수 있다.
프로세서(102)는 시스템 커널(미도시)에서 동작하도록 구성된다. 프로세서(102)는 컨텐츠 소스(예를 들어, 인터넷 등으로부터 블루-레이(Blu-ray)(상표명) 디스크와 같은 컨텐츠 미디어)로부터 암호화된 데이터와 메시지(즉, 패킷)를 검색하도록 외부 디바이스와 인터페이싱된다. 프로세서(102)는 복호화 및 처리를 위해 SAMU(104)에 암호화된 데이터를 제공할 수 있다. 일부 데이터 세트, 예를 들어, 네비게이션 데이터는 전체 미디어 소비 공정을 제어하기 위해 SAMU(104)로부터 프로세서(102)로 리턴될 수 있다. SAMU(104)는 또한 보호가 요구될 때에는 재암호화된 포맷으로 데이터를 프로세서(102)로 다시 송신할 수 있다.
일 실시예에서, SAMU(104)는 외부 디바이스로 송신되고 외부 디바이스로부터 수신된 데이터의 처리를 가능하도록 구성된 처리 스택을 포함한다. 따라서, 시스템(101)이 외부 디바이스 또는 인터넷과 연결을 수립할 때 호스트 프로세서(102)가 송신되고 수신된 패킷을 처리하는 것이 아니라 SAMU(104)는 SAMU(104)에 구현된 처리 스택을 통해 처리 기능을 제공한다.
다른 실시예에서, SAMU(104)는 프로세서(102)의 일부일 수 있다.
SAMU(104)에 대한 아키텍처는 도 1b를 참조하여 보다 상세히 설명된다. SAMU(104)는 보안 부트 ROM(secure boot read only memory)(110), MMU(memory management unit)(120), 명령 캐시(instruction cache)(I-캐시)(130), 데이터 캐시(D-Cache)(140), M-AES 구성요소(memory Advanced Encryption Standard component)(150), 무결성 검증기(integrity verifier)(IV)(160), 보안 가속기(security accelerators)(170), 프로세서 코어(180), 보안 커널(185), 및 메모리 인터페이스(190)를 포함한다. 보안 가속기(170)는 128b/192b/256b AES; SHA-1/-2(Secure Hash Algorithm); RSA(Rivest, Shamir and Adleman) 암호법; ECC(elliptic curve cryptography) 연산; DES(Data Encryption Standard); 3DES; RC4(Rivest Cipher 4); 1024b/2048b/3072b 모듈식 지수함수(modular exponentiation) 중 적어도 하나를 구현하도록 구성되거나; 또는 참된 난수 생성기(true random number generator)를 제공하도록 구성된다.
SAMU(104)는 실리콘에 부트 코드를 위한 모드를 구비하는 다수의 프로세서 모드를 지원할 수 있다. 다른 프로세서 모드는 예를 들어, 커널 코어 함수(kernel core functions); 커널 서비스(kernel services); 인하우스 개발된(in-house developed) SAMU(104) 애플리케이션; 제3자 개발된 SAMU(104) 애플리케이션; 부호(singed) 있는 평문(in-the-clear)인 SAMU(104) 애플리케이션; 또는 부호 없는 평문 SAMU(104) 애플리케이션을 포함하는 보안 커널(185)에 의해 한정될 수 있다.
부트 ROM(110)은 디버그 관리를 수행하도록 실리콘 형태로 부트 코드를 실행하고, 주어진 커널의 무결성을 체크하고, 메모리 AES를 설정하고, 이후 (무결성 체크를 통과한) 커널에 제어를 전달하도록 구성되며, 여기서 내장된 프로세서는 부트 코드를 실행하도록 구성된 리셋에서 온다. 나아가, 부트 코드는 e-융합 기술(e-fuse technology)에 기초하여 디버깅 시설을 구성하거나 재구성(예를 들어, 칩이 제조된 후에 변경될 수 없는 에칭 또는 하드 코딩 컴퓨터 로직을 칩에 수반하는 제조 시 주입된 e-융합된 패턴이나 생산 부품에 대해 모든 디버그 시설에의 액세스를 디스에이블)하고; 로드를 위해 SAMU 드라이버가 보안 커널(185)을 나타내는 SAMU(104) 커널 초기화를 대기하고; 주어진 이미지의 무결성을 검증하기 위해 무결성 검증기(integrity verifier: IV) 하드웨어(160)를 사용하도록 더 구성된다. IV 하드웨어(160)는 주어진 이미지로부터 해쉬 코드를 생성하고 이 해쉬 코드를 이미지에 부착된 해쉬 코드와 비교하도록 구성될 수 있다. 생성된 해쉬 코드와 부착된 해쉬 코드가 일치하는 경우, IV 하드웨어(160)는 통과(PASS) 리포트를 제공하고, 일치하지 않는 경우 실패(FAILURE) 리포트를 제공한다.
부트 ROM(110)은 성공적인 무결성 체크 후에 보안 커널(185)에 대한 환경을 준비하고, 제어를 보안 커널(185)로 전달하도록 더 구성된다. 보안 커널(185)은 동일한 IV 하드웨어(160)를 사용하여 주기적으로 자기 자신을 재검증할 수 있다.
부트 ROM(110)은 실리콘 형태로 칩의 부분으로 제공되거나 또는 외부 ROM에 보안적으로 저장될 수 있다. (암호화되고 부호 있는) 보안 커널(185)은 SAMU 드라이버의 부분으로 제공될 수 있으며, 여기서 보안 커널(185)은 SAMU(보안 정책) 내 자원에 제어 액세스를 제공하고; SAMU 사이클(작업 스케줄링)에 액세스를 제어하고; 또는 호스트에서 실행되는 SAMU 드라이버를 연결하도록 구성된다.
M-AES(150)는 판독 시 (하드웨어로 추가적인 독점 스크램블링으로) 변조된 AES 복호화와, 기록 시 변조된 AES 암호화(캐시 또는 내장된 내부 메모리에 있는 컨텐츠는 평문임)를 제공하며; (MMU를 통해 구성된) 정규 메모리 액세스에 대해 통과하는 것으로 바이패스 모드가 더 있을 수 있다. 메모리 AES 키는 부트 ROM 코드 또는 보안 커널(185)에 의해 생성될 수 있고, 메모리 인터페이스를 통과하는 민감한 코드와 데이터를 보호하기 위해 하드웨어에 제공된다. 컨텐츠는 명령 캐시(130), 데이터 캐시(140)에서만 또는 내부 내장 메모리에서만 평문이다.
실행 시간에 수립된 민감한 데이터는 실행 시간에 생성된 랜덤 키(random keys)에 의해 통상 보호된다. 랜덤 키는 2가지 방식으로 보호될 수 있다. 하나의 방식에서, 외부 소비(예를 들어 프로세서 내 호스트 또는 디코드 가속기)를 위해 의도된 민감한 데이터는 표준 AES에서 암호화된다. 제2 방식에서, 보안 실행 환경 내에 머무르도록 의도된 민감한 데이터는 M-AES(150)에 의해 암호화된다. M-AES 동작은 다른 표준 AES 공정 전후에 하드웨어로 생성된 변조로 변조되는 것을 수반한다.
SAMU로부터 오는 메모리 트래픽을 보호하기 위하여 추가적인 보안을 제공하는 대안적인 실시예에서, M-AES(150)는 리버스 엔지니어링을 어렵게 하는 다른 표준 AES 동작 전후에 하드웨어로 추가적인 독점 스크램블링으로 더 변조되는 것을 적용한다. 민감한 코드와 데이터는 그리하여 기존의 프레임 버퍼 메모리 또는 시스템 메모리에 저장되고 보호될 수 있다.
추가적인 보안을 제공하는 다른 실시예에서, 각 코드 이미지는 부호 부여 툴(signing tool)에 의해 암호화되고 해쉬되며, 여기서 암호화 키는 부호 부여 동안 랜덤하게 생성된다(프로세서의 이 부분은 벤더 또는 제3 자 소프트웨어 제공자에서 일어난다). 보안 커널(185)에 대해 복호 키는 부트 ROM(110) 내 부트 코드에 의해 계산되고 복구된다. 추가적으로, 무결성 체크는 실행할 이미지를 수용하기 전에 IV(160)에 의해 (암호화된 버전에) 적용된다.
메모리 관리는 MMU(120)의 도움으로 보안 커널(185)에 의해 수행된다. MMU(120)는 프로세서(180)의 가상 어드레스 공간을 디바이스의 어드레스 공간으로 맵핑하는 어드레스 변환 로직(예를 들어, 그래픽 프로세서, 디지털 신호 프로세서, 또는 FPGA)을 수행하도록 구성된다. MMU(120)는 4개의 ARS 키로 최대 16개의 중복 없는 어드레스 세그먼트를 지원한다. 각 세그먼트는 메모리 사이즈; 실행가능한지의 여부(예를 들어, 실행 플래그 없음)에 상관없이 메모리 AES 보호; 및 액세스 제어(판독/기록 액세스에 대해 최소 프로세서 모드)에 대해 독립적으로 구성될 수 있다. 각 메모리 세그먼트는 가상 어드레스 공간에서 인접하여야 하나, 모든 세그먼트가 메모리 AES 암호화로 보호되는 것은 아니다. 특히, SAMU(104)와 외부 디바이스 또는 인터넷 사이에서 통신을 위한 버퍼는 표준 AES에 의해서만 보호될 수 있어서 M-AES(150)가 턴오프되게 구성되어야 한다. 이 구성에서, 이용가능한 키 보다 더 많은 세그먼트들이 있고, 메모리 AES 보호를 요구하는 일부 코드 또는 데이터 세그먼트는 키를 공유할 수 있다.
보안 커널(185)은 MMU(120)를 구성하도록 허용되는 유일한 에이전트이다. 메모리에의 액세스는 메모리 인터페이스(190)를 통해 일어난다. SAMU(104) 및 각 구성요소는 디바이스의 관점으로부터 정상 클라이언트로 취급된다(예를 들어, 프로세서는 CPU, GPU, DSP, 또는 FPGA 또는 다른 유사한 디바이스를 포함한다). SAMU(104)는 M-AES(150)에 따라 메모리 보호를 민감한 코드와 데이터에 제공한다.
보안 커널(185)은 이하의 커버리지를 제공하는 추가적인 보안 서비스, 즉 외부 구성요소와 보안 터널을 수립하는 서비스; 디지털 권리 관리(DRM) 블록과 키를 교환하는 서비스; 라이센스 키, 디바이스 키 또는 컨텐츠 키를 언랩핑(unwrap)하는 서비스; 비트 스트림을 디멀티플렉싱하는 서비스; 비트스트림을 복호화하거나 재암호화하는 서비스; 가상 기계, 예를 들어, BD+, 블루-레이(상표명) 디스크 디지털 권리 관리(DRM) 시스템의 구성요소로서 동작하는 서비스; 또는 기존의 경로를 사용하여 오디오/비디오(A/V) 가속을 위해 데이터를 제출하는 서비스를 포함할 수 있다.
보안 커널(185)은, 일단 로드되고 제어되면, SAMU 실행 환경을 담당하는 일을 한다. 보안 서비스가 (커널의 일체형 부분 대신에) 요구 시 로드되는 경우에, 커널은 또한 요구 시 코드의 무결성을 체크하고 이 요구 시 서비스에 대해 올바른 복호화 키를 설정하는 일을 담당한다. 요구 시 코드에 대한 키 유도 공정(key derivation process)은 커널 엔지니어링 공정에 의해 결정되고, 제품/디바이스 세대(generation) 또는 제조 기술에서 변할 수 있다. (여기서 제품/디바이스 세대는 디바이스가 제조되는 스케일이며, 예를 들어 프로세서는 90나노미터(㎚) 또는 65㎚ 기술을 사용하여 제조될 수 있다.) 그러나, 커널이 키 유도 알고리즘을 변경할 때마다, 유저 코드에 대한 오프라인 부호 부여 툴은 암호화 공정에서의 이 흐름과 일치하도록 수정되어야 한다.
리셋에서 오는 프로세서는 실리콘의 ROM 코드로부터 부트된다. 부트 스트랩 코드(boot strap code)는, 복호화 키를 복구하고 제어를 커널로 전송하기 전에 무결성에 대해 주어진 암호화된 커널을 검사하도록 구성된다. 무결성 검증은 IV(160)에서 전용 하드웨어 로직에 의해 수행된다. 보안 커널에 대한 오프라인 부호 부여 툴은 부트 ROM(110)에서 하드코딩된 키 복구 메커니즘 및 무결성 검증 하드웨어와 일치하는 암호화 설정을 구비한다. 암호 또는 키 생성을 위한 해쉬 함수의 선택은 중요치 않고 일 방향 AES 동작의 연쇄에 기초할 수 있다.
SAMU(104)의 아키텍처는 암호 요구조건(cipher requirement)으로 초당 수 백 만개의 명령(millions of instructions per second: MIPS)을 실행할 수 있도록 구성되고, AES, DES, SHA1 및 다른 알고리즘을 포함하는 암호 가속을 지원할 수 있다. SAMU(104) 아키텍처는 참된 난수 생성기, 의사 난수 생성기, 보안 타이머, 메모리 관리를 가지는 명령/데이터 캐시, 다수의 실행 모드(또는 보호 레벨), 커널/유저 모드, (커널에 의해 구성된) 어드레스 범위 시행, 부트 스트랩 코드 검증, 및 추가적인 개발 툴의 전부 또는 서브세트를 지원한다.
일 실시예에서, 가상 어드레스 페이지 테이블은 MMU(120)의 하드웨어 레지스터에 저장되고, 외부 저장 매체에 의존하는 대신에 프로세서 코어(180)에만 액세스가능하다. 이런 구조의 특징은 메모리 변환과 보호 속성이 외부에 저장되지 않아서 보안이 보장될 수 있다는 것이다.
하드웨어 기반 페이지 테이블을 가지는 것은 보안과 성능을 모두 개선시킨다. 그러나, 이것은 추가적인 전용 메모리가 요구되므로 시스템이 대부분의 운영 시스템에 의해 일반적으로 사용되는 4킬로(K) 바이트 페이지 사이즈를 지원하는 것은 고가일 수 있다. 이 지원 문제는 본 명세서에 설명된 보안 실행 유닛에 의해 정당화된다. 일 실시예에서, 1메가(M) 바이트 페이지 사이즈는 시작점으로 사용된다. 하드웨어 페이지 테이블 메커니즘은 1 메가(M) 바이트로부터 4 기가(G) 바이트로 2의 멱수(power) 페이지 사이즈를 지원할 수 있다. 대안적으로, 다른 페이지 사이즈(예를 들어, 4K 바이트, 8K 바이트, 16K 바이트, 및 다른 2의 멱수 페이지 사이즈)들이 지원될 수 있다.
페이지 테이블은 어드레스 변환에 더하여 다른 보안 특성을 포함할 수 있다. 예를 들어, 이 테이블은, 페이지 엔트리가 활성인지 디스에이블인지의 여부, 페이지가 데이터 또는 코드를 포함하는지의 여부, 별도의 판독 액세스 및 기록 액세스 제어, 메모리 AES를 턴온 또는 턴오프하는 암호 플래그, 또는 메모리 AES가 요구될 때 키 색인(index) 중 하나 이상을 나타내는 데이터 구조를 포함할 수 있다.
페이지 테이블 엔트리의 응용이 이제 설명된다. 활성이거나 아닌 페이지 테이블 엔트리의 표시는 활성 세그먼트의 수가 시간에 따라 변할 수 있으므로 하드웨어 기반 페이지 변환에 본질적이다. 엔트리마다 플래그는 메모리 관리 시 커널에 유연성을 제공한다.
페이지(또는 세그먼트)가 코드 또는 데이터를 포함하는지의 여부를 나타내는 페이지 테이블 정보는 대부분 보안 문제이다. 페이지가 데이터 저장을 위한 것이라는 것을 커널에 알림으로써 커널은 이 페이지로부터 코드를 트랩핑(trap)하고 이 코드를 실행하는 시도를 할 수 있다. 이 정보는 또한 버퍼 오버런 공격(buffer- overrun attacks)을 트랩핑하는 유효 메커니즘을 가능하게 하는 것을 도와준다.
페이지마다(또는 세그먼트 마다) 한정된 판독 및 기록 액세스 제어는 이 페이지(또는 세그먼트)에 판독 및/또는 기록 액세스가 허용되기 전에 코드가 실행하는 최소 보호 링(protection ring)을 지정한다. 이것은 수직 특권 위배를 방지하며 이 수직 특권 위배는 낮은 특권에서 할당된 애플리케이션(예를 들어, 유저 애플리케이션)이 높은 특권에서 실행되는 다른 공정(예를 들어, 커널)에 속하는 페이지에 판독/기록 액세스를 얻을 때 일어난다. 일반적인 프로세서 아키텍처는 별개의 및 제어 함수와 처리에 여러 보호/특권 레벨을 사용한다(예를 들어, 처리는 특정 데이터 구조 또는 코드 세그먼트에 액세스하기 위해 특정(미리 한정된) 보호 레벨을 가져야 한다).
암호 플래그는 메모리 인터페이스에 대한 캐시가 M-AES(150)를 턴온할지 턴온하지 않을지의 여부를 나타낸다. M-AES(150)는 AES 동작 전후에 하드웨어 변조를 적용한다. M-AES(150)에 의해 보호되는 정보는 SAMU 내에서 소비되기 위한 것이어서, 민감한 코드는 보안 실행 환경에 의하여 실행되고, 및/또는 민감한 데이터는 이 환경 내에서 실행되는 함수에 의해서만 사용된다. 페이지 테이블 엔트리에 설정된 암호 플래그로 표시된 페이지에서 하드웨어는 명령 캐시 또는 데이터 캐시로의 모든 메모리 판독 동작에 복호화를 자동으로 적용하고, 캐시 라인이 플러싱(flushed)될 때 메모리 기록을 위해 암호화를 적용한다.
MMU(120)에서 상이한 페이지 엔트리는 상이한 암호 키와 연관될 수 있다. 일 실시예에서, 4개의 활성 암호 키는 임의의 시점에서 지원될 수 있다(대안적인 실시예에서, 임의의 수의 키가 지원될 수 있다). 각 페이지 엔트리는 암호화 및 복호화 모두에 사용될 수 있는 키 하드웨어의 색인을 지정할 수 있다. 이것은 커널 코드/데이터 및 유저 코드/데이터를 독립적인 키로 보호할 수 있게 한다. 부트 코드는 커널 코드 키를 복구하는 일을 담당하는 반면, 커널은 유저 코드 키를 복구하는 일을 담당한다. 커널은 또한 모든 데이터 키의 실행 시간을 생성하는 일을 담당한다.
대안적인 실시예에서, 코드 키는 이들 2개의 함수 모두가 입력의 일부로 e-융합된 값(e-fused value)을 취함으로써 무결성 검증 메커니즘에서의 시그너처와 연결된다. 복호 키를 무결성 검증 메커니즘과 연결시킴으로써 SAMU 탬퍼링이 어렵게 된다.
궁극적으로, 모든 이들 자원, 페이지 테이블 엔트리 및 메모리 AES 키의 구성 공간이 제어되어야 한다. 이 구성에의 판독/기록 액세스는 제어 상태 레지스터에서 별도의 액세스 제어 필드에 의해 보호된다. 코드는 이 구성 설정을 수정하기 전에 적절한 보호 링에 있을 필요가 있다.
전술된 이 하드웨어 기반 가상 메모리 지원 및 연관된 보안 설정은 현대 PC 기반 운영 시스템과 함께 사용하기 위해 민감한 코드와 데이터를 보호하기 위한 강력한 솔루션을 제공한다. 이것은 소프트웨어 기반 탬퍼링 방지 및 난독화와 연관된 소비 및 전력/열적 오버헤드를 제거한다.
도 2는 SAMU 아키텍처를 사용할 때 단일 애플리케이션에 대한 흐름도이다. SAMU에 대해 이진수(binaries)가 생성된다(단계 210). 랜덤 키가 부호 부여 툴에 생성된다(단계 215). 이진수는 SAMU에 대해 암호화되고, 예를 들어 GPU의 디스플레이 드라이버의 일부로 보안 커널을 발송하는 것을 포함한다(단계 220). 유저는 보안 커널(디스플레이 드라이버)과 보안 애플리케이션을 서로 결합하는 드라이버 및 애플리케이션을 유저의 컴퓨터/시스템에 설치할 수 있다(단계 225). 부트 시간에, 보안 커널(185)은 SAMU 하드웨어에 제공된다(단계 230). 보안 커널은 부트 ROM(110)에 의해 무결성에 대해 검증된다(단계 235). 부트 ROM(110)은, (암호화된 코드의 요구 시 복호를 수행하기 위해) 메모리 AES에 복호화 키를 구성하고 보안 커널에 제어를 전달하기 전에 보안 커널(185)의 무결성을 검증한다(단계 240). 보안 커널이 검증에 실패하면, SAMU 서비스가 노출되지 않고 애플리케이션이 소프트웨어 기반 보호 구조로 다시 떨어진다(단계 245). 검증이 성공적인 경우, 보안 커널에 대한 복호화 키는 부트 ROM(110)에 의해 구성되고(단계 250), 애플리케이션이 유저에 의해 론칭될 수 있다(단계 255). 애플리케이션은 SAMU의 존재를 검출하고 이 SAMU에 의해 제공되는 보안 서비스를 사용한다(단계 260).
전술된 하드웨어 가속을 위해 코드 또는 데이터를 SAMU에 오프로드하는 것은 오프로드 및 3D 렌더링 오프로드를 디코딩하는 것과 유사하다. 예를 들어, 애플리케이션은 API를 사용하여 잘 한정된 작업 항목을 GPU에 오프로드한다.
SAMU(104)는 보안 부트, 무결성 체크, 실행 암호화된 코드, 민감한 함수에 의해 사용된 민감한 데이터를 위한 메모리 보호, 및 생산 칩에 대한 디버깅 디스에이블링을 제공함으로써 보안 실행 환경을 제공한다. 보안 환경 내에 적어도 2개의 상이한 종류의 코드, 예를 들어, 커널 코드 또는 펌웨어 코드 및 부트 스트랩 코드가 있다.
부트 스트랩 코드는 보안 저장 매체에 암호화되어 저장되고 최종 칩에 제공된다. 이 코드는 부트 시간에 3개의 서비스, 즉 생산 칩에 대해 디버깅을 디스에이블링하는 서비스, SAMU 드라이버에 의해 제공된 커널 이미지의 무결성을 체크하는 서비스, 및 제어를 커널로 전달하기 전에 주어진 커널에 대해 복호화 키를 계산하는 서비스를 제공한다.
복호화 키는 부트 공정의 부분으로 계산되고, 커널 이미지의 무결성의 성공적인 검증 후에만 수행된다. 복호화 키는 다수의 입력의 함수, 즉 칩이 제조된 후에 변경될 수 없는 에칭 또는 하드 코딩 컴퓨터 로직을 칩에 수반하는 제조 시 주입된 e-융합된 패턴, 커널 이진수 부호 부여 시 생성된 랜덤 패턴(부호 있는 커널 이미지의 부분으로 저장됨), 및 SAMU 드라이버에 의해 부트 시간에 제공된 소프트웨어 파라미터의 함수이다. 커널 복호화 키를 계산하는 것은 또한 비밀 곱셈기(secret multipliers), DSP 블록, 프로세서, 고속 IO 로직 및 내장된 메모리를 포함할 수 있는 실리콘으로 매립된 비밀 함수에 대한 액세스를 수반한다.
커널 코드는 SAMU(104)에 대한 매니저로 기능하고, SAMU 드라이버에 서비스를 제공한다. 커널 코드는 제조사 커널 인증(certificate)을 포함할 수 있고, 부트 로더(boot-loader)에 의해 시행된 무결성이다. 이는 SAMU 자원을 제어하며 SAMU 및 프로세서 모두에 레지스터 레벨의 액세스를 가진다. 이는 또한 실행시간에 요구 시 서비스를 제공하도록 추가적인 펌웨어 코드를 로드할 수 있다. 보안 커널(185)은 드라이버 호(call)를 처리하며 이에 따라 펌웨어 루틴을 호출(invoke)한다.
도 3은 SAMU 소프트웨어 스택(300)을 기술한다. 호스트 애플리케이션(310)과 SAMU 드라이버(320)는 호스트 프로세서(360)(예를 들어, 퍼스널 컴퓨터, 스마트 폰 등)에 상주한다. 호스트 애플리케이션(310)으로부터 오는 요청에 기초하여, SAMU 드라이버(320)는 명령(330)을 발행하여 대응하는 데이터(340)를 (예를 들어, 프로세서 코어 또는 GPU 내) SAMU 프로세서(370)의 보안 커널(380)에 전송한다. 보안 커널(380)은 다수의 호스트 애플리케이션(310)에 서비스를 제공하여 다수의 애플리케이션으로부터 데이터를 수신할 수 있다. 보안 커널(380)은 처리된 데이터(340)를 다시 SAMU 드라이버(320)에 전달하고 이 SAMU 드라이버(320)는 호스트 애플리케이션(310)으로 데이터를 전달할 수 있다. 대안적으로, 보안 커널(380)은 출구 코드(exit codes)(350)를 SAMU 드라이버(320)로 전달하고 이 출구 코드는 궁극적으로 처리를 위해 호스트 애플리케이션(310)으로 전달될 수 있다.
본 명세서에 설명된 실시예는 호스트 프로세서로부터 민감한 코드를 오프로드하기 위해 SAMU를 사용한다. 프로세서는 보호된 형태의 민감한 데이터를 SAMU에서 실행되는 민감한 코드로 공급한다. 고가의 프리미엄 컨텐츠를 처리하기 위하여, SAMU는 오디오 및/또는 비디오 패킷의 컨텐츠 복사 방지, 디멀티플렉싱, 및 추출, 오디오 및/또는 비디오 기본 스트림(elementary stream)의 구성, 및 추가적인 처리를 위해 호스트 및/또는 코덱 디코더로 다시 제어를 전달하기 전에 재암호화하는 적용을 제공할 수 있다.
SAMU에 의해 제공되는 보안 실행 환경은 프리미엄 컨텐츠 소비를 위해 수립된 복사 방지 구조와 연관된 민감한 코드를 실행하도록 사용될 수 있다. 보안 실행이 요구될 수 있는 환경의 일례는 호스트에서 실행되는 블루-레이(상표명) 디스크 플레이어 또는 블루-레이(상표명) 플레이어 애플리케이션이다. 블루-레이(상표명) 디스크 플레이어는 퍼스널 컴퓨터 또는 유저 디바이스의 일부일 수 있다. 디스크는 콘텍츠를 보호하기 위해 컨텐츠 생성기가 의존하는 강력한 복사 방지 구조를 가지게 되기 때문에 소프트웨어 벤더는 블루-레이(상표명) 디스크를 실행하기 위한 보안 실행 환경을 요구한다. SAMU는 이 환경을 제공한다. 블루-레이(상표명) 플레이어는 컨텐츠 보호 함수(예를 들어, AACS 및 BD+ 함수)를 오프로드하여 보안 환경을 실행할 수 있다. 보호된 블루-레이(상표명) 컨텐츠는 광학 디스크로부터 로드되지만, 보안 환경에서 AACS 및 BD+ 함수에 의존하여 복호 및 디멀티플렉싱 동작을 수행한다. 비디오 비트스트림은 비디오 디코더에 의해 소비하기 위해 보안 환경 내에 AES로 재암호화될 수 있다. 오디오 비트스트림 및 다른 네비게이션 데이터는 플레이어에 의해 소비하기 위해 AES로 재암호화될 수 있다.
그러나, 이 기술 분야에 통상의 지식을 가진 자에게는 SAMU의 응용이 블루-레이(상표명) 디스크 플레이어로 제한되지 않는다는 것은 자명할 것이다. SAMU는 모바일 폰, 핸드헬드 액세서리, 위치지정 시스템 등을 포함하는 다른 하드웨어 플랫폼에서도 사용될 수 있다.
SAMU는 설명된 실시예에서, 프로세서 중심 보안 플랫폼이다. 프로세서는 다른 디바이스의 일부, 예를 들어, 집적된 노쓰 브리지, 애플리케이션 프로세서, 중앙 처리 유닛, 디지털 신호 프로세서 등의 일부를 형성할 수 있다. SAMU는 코덱 가속을 제공하는 프로세서의 일부이므로, SAMU로부터 빠져나오는 비트스트림을 보호하는 키(들)는 코덱 가속기에 입력으로 사용될 수 있고, 프로세서를 떠나지 않고 SAMU로부터 코덱 가속기로 진행할 수 있다. 이 구성 및 동작은 프리미엄 컨텐츠 소비를 위한 보안을 더 개선시킬 수 있다.
민감한 코드의 실행은 SAMU 커널의 일부로서 제공된 보안 서비스를 검출하고 사용함으로써 프로세서로부터 SAMU로 이동될 수 있다. 대안적으로, 민감한 코드는 부호 있는 펌웨어로서 반도체 제조사로부터 인증된 드라이버에 코드를 제공함으로써 프로세서로부터 SAMU로 이동될 수 있다. SAMU는 프라이버시 키에 액세스가 요구되는 디지털 시그너처의 인증과 생성과 같은 다른 암호화 동작을 오프로드할 때 더 사용될 수 있다. 이들 동작을 SAMU로 이동시킴으로써 프라이버시 키는 호스트 시스템에서 암호화된 형태로 저장될 수 있고, 프라이버시 키의 평문 값만이 보호된 실행 환경에서 복구되고 소비된다.
SAMU를 사용하는 것은 전체 시스템의 강력함 및 전력 효율을 개선시킬 수 있다. SAMU는 프로세서, 그래픽 처리 유닛(GPU), CPU, DSP, 또는 FPGA 내와 같이 처리 아키텍처에서 단일점의 신뢰 검증을 제공한다. SAMU는 암호화되고 부호 있는 커널 코드로부터만 부트되고, 암호화되고 부호 있는 코드만을 실행한다. SAMU 하드웨어는 부호 없는 명문(즉, 암호화되지 않은) 코드를 실행할 수 있다. SAMU는 하드웨어 기반 보안 부트 및 메모리 보호를 구비하며, 호스트 프로세서에 의해 제공된 요구 시 코드를 실행할 수 있다.
전력 효율 및 비용 효율적인 보안 실행 환경은 일 실시예에서 디바이스(예를 들어, GPU 플랫폼)에 32비트 RISC 프로세서를 통합하고 이에 보안 로직을 추가함으로써 수립된다. 이 환경에서 실행하기 위한 이진수는 랜덤하게 생성된 키로 암호화되고, 동시에 오프라인 툴에 의해 부호가 부여된다. 보호된 이진수는 드라이버 및/또는 애플리케이션으로 암호화된 형태로 제공되고, 메모리에 로드될 때에도 이 형태에 머무른다. 복호화는 민감한 코드가 요구 시 명령 캐시에 로드될 때 "진행 중에" 수행된다. 이 배열은 비밀 정보를 저장하기 위해 PC에서 이용가능한 기존의 메모리의 사용을 허용한다.
민감한 코드는 오프라인 부호 부여 툴에 의해 보호된다. 적어도 2가지 종류의 민감한 코드, 즉 자원 액세스를 관리하는 커널, 및 실제 보안 관련된 함수를 호스트 애플리케이션에 제공하는 유저 코드가 있다. SAMU 제조사는 커널을 소유할 수 있으나, 유저 코드는 (SAMU를 위한 애플리케이션을 형성하는) SAMU 제조사 또는 외부 소프트웨어 벤더로부터 올 수 있다. 별도의 부호 부여 툴이 이들 종류의 민감한 코드에 대해 더 개발될 수 있다.
또한, SAMU의 코어 기능은 SAMU 제조사가 개발 툴을 소프트웨어 벤더에 제공하는 소프트웨어 벤더에 또는 SAMU 제조사와 소프트웨어 벤더 둘 모두가 파티션 구조 및 관련된 API를 개발하는 소프트웨어 벤더에 제공될 수 있다. 이들 상황에서, SAMU 제조사 또는 소프트웨어 벤더는 요구 시 펌웨어 코드를 생성할 수 있다.
추가적으로, 본 명세서에 설명된 실시예는 연구 및 개발 자원의 랜덤화를 감소시키고, 리턴으로부터 리테일 압력(retail pressure)을 완화시키고, 퍼스널 컴퓨터 플랫폼에 프리미엄 방송을 가능하게 한다. 프리미엄 컨텐츠는 예를 들어, 디지털 비디오 방송 핸드헬드, ARIB 등을 포함할 수 있다. 본 명세서에 설명된 실시예는 난독된 및 탬퍼링 방지 소프트웨어 사용에 소비되는 전력을 감소시키고, 유효 소프트웨어의 취소의 빈도를 감소시키고, 소비자에 불편함을 상대적으로 저감시키거나 일으킴이 없이 컨텐츠 소유자를 만족스럽게 한다.
본 명세서에 설명된 실시예는 CPU, DSP, FPGA, GPU, 또는 이들의 임의의 조합에 내장될 수 있는 프로세서 코어로 구현될 수 있다. 이 기술 분야에 통상의 지식을 가진 자라면 프로세서 코어는 다른 디바이스의 일부, 예를 들어, 집적된 노쓰 브리지, 애플리케이션 프로세서, CPU, DSP 등의 일부를 형성할 수 있다는 것을 이해할 수 있을 것이다.
적절한 프로세서는 예를 들어, 일반 목적 프로세서, 특수 목적 프로세서, 종래의 프로세서, 디지털 신호 프로세서(DSP), 복수의 마이크로프로세서, DSP 코어와 연관된 하나 이상의 마이크로프로세서, 제어기, 마이크로제어기, ASIC, 전계 프로그래밍 게이트 어레이(FPGA) 회로, 임의의 다른 유형의 집적 회로(integrated circuit: IC) 및/또는 상태 기계를 포함한다.
추가적으로, 본 발명은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합으로 구현될 수 있다. 본 발명의 실시예 또는 이의 일부는 하드웨어 설명 언어(hardware description language: HDL), 어셈블리 언어, C 언어, 네트리스트(netlist) 등과 같은 많은 프로그래밍 언어로 인코딩될 수 있다. 본 발명의 하나 이상의 실시예의 측면을 구현하는 디바이스, 예를 들어, 프로세서, 애플리케이션 주문 제작 집적회로(Application Specific Integrated Circuit: ASIC) 및/또는 다른 하드웨어 요소를 합성하고, 시뮬레이팅하고 제조하는데 예를 들어, HDL, 예를 들어, 베릴로그(Verilog)가 사용될 수 있다. 베릴로그 코드는 SAMU를 응용할 수 있는 프로세서를 모델링하고, 설계하고, 검증하고 및/또는 구현하는데 사용될 수 있다.
베릴로그는 예를 들어 SAMU의 응용을 위해 명령을 실행할 수 있는 로직의 레지스터 전송 레벨(register transfer level: RTL) 설명을 생성하는데 사용될 수 있다. 로직의 RTL 설명은 원하는 로직 또는 디바이스를 제조하는데 사용되는 데이터, 예를 들어, 그래픽 설계 시스템(graphic design system: GDS) 또는 GDS II 데이터를 생성하는데 사용될 수 있다. 베릴로그 코드, RTL 설명 및/또는 GDS II 데이터는 컴퓨터 판독가능한 매체에 저장될 수 있다. 본 발명의 측면을 수행하기 위해 로직에 의해 실행되는 명령은 C 및 C++와 같은 여러 프로그래밍 언어로 코딩될 수 있고, 로직 또는 다른 디바이스에 의해 실행될 수 있는 목적 코드로 컴파일링될 수 있다.
본 발명의 측면은 컴퓨터 판독가능한 매체에 전체적으로 또는 부분적으로 저장될 수 있다. 컴퓨터 판독가능한 매체에 저장된 명령은 전체적으로 또는 부분적으로 본 발명을 수행하도록 프로세서를 적응시킬 수 있거나 또는 본 발명을 전체적으로 또는 부분적으로 수행하도록 구체적으로 적응된 디바이스, 예를 들어, 프로세서, ASIC 또는 다른 하드웨어를 생성하도록 적응될 수 있다. 이들 명령은 또한 본 명세서에 설명된 본 발명의 측면을 구현하는 하드웨어 디바이스를 생성하도록 마스크작업/포토마스크의 생성을 통해 궁극적으로 제조 공정을 구성하는데 사용될 수 있다.

Claims (16)

  1. 프로그램 코드 또는 데이터를 위한 보안 실행 환경을 제공하는 방법으로서,
    코드의 비밀을 인증하고 유지하기 위해 암호화된 포맷으로, 상기 코드를 호스트 프로세서로부터 보안 자산 관리 유닛(SAMU: secure asset management unit)으로, 상기 SAMU에 의해, 오프로드(offload)하는 단계;
    상기 코드가 상기 SAMU의 내부에서 소비되도록 의도되는지 또는 외부에서 소비되도록 의도되는지를, 상기 SAMU에 의해, 결정하는 단계;
    상기 코드가 상기 SAMU의 외부에서 소비되도록 의도되는 조건하에서, 민감한 데이터(sensitive data)의 표준 AES(advanced encryption standard) 암호화를, 상기 SAMU에 의해, 적용하는 단계; 및
    상기 코드가 상기 SAMU의 내부에서만 소비되도록 의도되는 조건하에서, 명령 캐시(instruction cache) 또는 데이터 캐시(data cache)에서 메모리 판독 동작에 대한 변조된 AES 복호화를, 상기 SAMU에 의해, 수행하는 단계 및 상기 명령 캐시 또는 상기 데이터 캐시의 라인들이 플러싱(flushing)될 때 메모리 기입 동작에 대한 변조된 AES 암호화를, 상기 SAMU에 의해, 수행하는 단계를 포함하고,
    상기 변조된 AES 암호화 및 상기 변조된 AES 복호화는, 표준 AES 프로세스 이전 및 이후에 하드웨어에서 독점 스크램블링을 사용하여 변조되는
    보안 실행 환경을 제공하는 방법.
  2. 제1항에 있어서, 상기 오프로드하는 단계는 상기 SAMU에 의해 사용된 부호 부여 툴에서 생성된 랜덤한 키로 암호화된 이진 부트 이미지(binary boot image)를 생성하는 단계를 포함하는 것인 보안 실행 환경을 제공하는 방법.
  3. 제2항에 있어서, 상기 암호화된 이진 부트 이미지는 상기 SAMU에 대해 암호화되고, 상기 SAMU에 대해 보안 커널로서 그리고 보안 애플리케이션으로서 제공되는 것인 보안 실행 환경을 제공하는 방법.
  4. 제3항에 있어서, 유저는 상기 암호화된 이진 부트 이미지를 설치하고, 상기 암호화된 이진 부트 이미지를 요구 시 상기 SAMU에 제공하는 것인 보안 실행 환경을 제공하는 방법.
  5. 제4항에 있어서, 부트 판독 전용 메모리(ROM)를 사용하여 상기 SAMU에 사용하기 위한 복호화 키를 구성하기 전에 무결성에 대해 상기 암호화된 이진 부트 이미지를, 상기 SAMU에 의해, 검증하는 단계를 더 포함하는 보안 실행 환경을 제공하는 방법.
  6. 제5항에 있어서,
    상기 SAMU에 사용하기 위해, 상기 부트 ROM에 의해, 복호화 키를 생성하는 단계; 및
    긍정적인 검증에 응답하여 상기 암호화된 이진 부트 이미지에, 상기 부트 ROM에 의해, 제어를 전달하는 단계를 더 포함하는 보안 실행 환경을 제공하는 방법.
  7. 제5항에 있어서, SAMU 서비스는 부정적인 검증이 있는 경우에 노출되지 않고, 상기 애플리케이션은 소프트웨어 기반 보호 구조로 복귀하는 것인 보안 실행 환경을 제공하는 방법.
  8. 프로그램 코드 또는 데이터를 위한 보안 실행 환경을 제공하는 시스템으로서,
    호스트 프로세서에서 코드를 포함하는 적어도 하나의 애플리케이션을 실행하도록 구성된 컴퓨터; 및
    프로그램 코드를 실행하도록 구성된 보안 자산 관리 유닛(SAMU)을 포함하고,
    상기 SAMU는 상기 컴퓨터에 연결되고, 상기 코드의 비밀을 인증하고 유지하기 위해 암호화된 포맷으로 상기 호스트 프로세서로부터 코드를 오프로드하도록 구성되며, 상기 SAMU는:
    명령 캐시;
    데이터 캐시;
    메모리 인터페이스; 및
    상기 메모리 인터페이스, 상기 명령 캐시 및 상기 데이터 캐시에 연결된 메모리 암호화 컴포넌트를 포함하고,
    상기 코드가 상기 보안 실행 환경 내부에서만 소비되도록 의도되는 조건하에서, 상기 메모리 암호화 컴포넌트는, 명령 캐시 또는 데이터 캐시에서 메모리 판독 동작에 대한 변조된 AES 복호화를 수행하고 그리고 상기 명령 캐시 또는 상기 데이터 캐시의 라인들이 플러싱될 때 메모리 기입 동작에 대한 변조된 AES 암호화를 수행하도록 구성되며,
    상기 변조된 AES 암호화 및 상기 변조된 AES 복호화는, 표준 AES 프로세스 이전 및 이후에 하드웨어에서 독점 스크램블링을 사용하여 변조되는 것인
    시스템.
  9. 제8항에 있어서, 상기 SAMU는 상기 오프로드의 일부로서 상기 SAMU에 의해 사용된 부호 부여 툴에서 생성된 랜덤 키로 암호화된 이진 부트 이미지를 제공하도록 더 구성된 것인 시스템.
  10. 제9항에 있어서, 상기 암호화된 이진 부트 이미지는 상기 SAMU에 대해 암호화되고, SAMU에 대해 보안 커널로 및 보안 애플리케이션으로 제공되는 것인 시스템.
  11. 제10항에 있어서, 유저는 상기 시스템에 상기 암호화된 이진 부트 이미지를 설치하고, 상기 암호화된 이진 부트 이미지를 상기 SAMU에 요구 시 제공하는 것인 시스템.
  12. 제11항에 있어서, 상기 SAMU는 부트 판독 전용 메모리(ROM)를 사용하여 상기 SAMU에 사용하기 위해 복호화 키를 구성하기 전에 무결성에 대해 상기 암호화된 이진 부트 이미지를 검증하도록 더 구성된 것인 시스템.
  13. 제12항에 있어서, 상기 부트 ROM은 상기 SAMU에 사용하기 위해 복호화 키를 생성하고, 긍정적인 검증에 응답하여 상기 암호화된 이진 부트 이미지에 제어를 전달하도록 더 구성된 것인 시스템.
  14. 제12항에 있어서, 부정적인 검증이 있는 경우 SAMU 서비스는 노출되지 않고, 상기 애플리케이션은 인증을 위해 소프트웨어 기반 보호 구조로 복귀하는 것인 시스템.
  15. 삭제
  16. 삭제
KR1020137012783A 2010-10-20 2011-10-19 민감한 코드와 데이터를 보호하는 아키텍처를 포함하는 방법 및 장치 KR101735023B1 (ko)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US40505410P 2010-10-20 2010-10-20
US40504510P 2010-10-20 2010-10-20
US61/405,054 2010-10-20
US61/405,045 2010-10-20
US12/964,278 US8904190B2 (en) 2010-10-20 2010-12-09 Method and apparatus including architecture for protecting sensitive code and data
US12/964,278 2010-12-09
US12/975,555 2010-12-22
US12/975,555 US8489898B2 (en) 2010-10-20 2010-12-22 Method and apparatus for including architecture for protecting multi-user sensitive code and data
PCT/US2011/056895 WO2012054609A1 (en) 2010-10-20 2011-10-19 Method and apparatus including architecture for protecting sensitive code and data

Publications (2)

Publication Number Publication Date
KR20130142135A KR20130142135A (ko) 2013-12-27
KR101735023B1 true KR101735023B1 (ko) 2017-05-12

Family

ID=45973980

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020137012783A KR101735023B1 (ko) 2010-10-20 2011-10-19 민감한 코드와 데이터를 보호하는 아키텍처를 포함하는 방법 및 장치
KR1020137011763A KR101397637B1 (ko) 2010-10-20 2011-10-19 다중 사용자 감응 코드 및 데이터를 보호하는 아키텍처를 포함하는 방법 및 장치

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020137011763A KR101397637B1 (ko) 2010-10-20 2011-10-19 다중 사용자 감응 코드 및 데이터를 보호하는 아키텍처를 포함하는 방법 및 장치

Country Status (6)

Country Link
US (2) US8904190B2 (ko)
EP (2) EP2630607B1 (ko)
JP (2) JP5537742B2 (ko)
KR (2) KR101735023B1 (ko)
CN (2) CN103221961B (ko)
WO (2) WO2012054609A1 (ko)

Families Citing this family (170)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8904190B2 (en) * 2010-10-20 2014-12-02 Advanced Micro Devices, Inc. Method and apparatus including architecture for protecting sensitive code and data
US10511630B1 (en) 2010-12-10 2019-12-17 CellSec, Inc. Dividing a data processing device into separate security domains
US9569633B2 (en) * 2012-06-29 2017-02-14 Intel Corporation Device, system, and method for processor-based data protection
US9294508B2 (en) 2012-08-02 2016-03-22 Cellsec Inc. Automated multi-level federation and enforcement of information management policies in a device network
US9171172B2 (en) * 2012-08-02 2015-10-27 CellSec, Inc. Automated multi-level federation and enforcement of information management policies in a device network
US10305937B2 (en) 2012-08-02 2019-05-28 CellSec, Inc. Dividing a data processing device into separate security domains
US9703945B2 (en) 2012-09-19 2017-07-11 Winbond Electronics Corporation Secured computing system with asynchronous authentication
US9507540B1 (en) * 2013-03-14 2016-11-29 Amazon Technologies, Inc. Secure virtual machine memory allocation management via memory usage trust groups
US9323552B1 (en) 2013-03-14 2016-04-26 Amazon Technologies, Inc. Secure virtual machine memory allocation management via dedicated memory pools
US11669441B1 (en) 2013-03-14 2023-06-06 Amazon Technologies, Inc. Secure virtual machine reboot via memory allocation recycling
US9247316B2 (en) * 2013-04-23 2016-01-26 Microsoft Technology Licensing, Llc Protected media decoding using a secure operating system
US9495544B2 (en) 2013-06-27 2016-11-15 Visa International Service Association Secure data transmission and verification with untrusted computing devices
KR101471589B1 (ko) * 2013-08-22 2014-12-10 (주)잉카엔트웍스 공통중간언어 기반 프로그램을 위한 보안 제공 방법
US9455962B2 (en) 2013-09-22 2016-09-27 Winbond Electronics Corporation Protecting memory interface
US9343162B2 (en) 2013-10-11 2016-05-17 Winbond Electronics Corporation Protection against side-channel attacks on non-volatile memory
US9830456B2 (en) * 2013-10-21 2017-11-28 Cisco Technology, Inc. Trust transference from a trusted processor to an untrusted processor
US20150121054A1 (en) * 2013-10-31 2015-04-30 Advanced Micro Devices, Inc. Platform Secure Boot
US9832172B2 (en) 2013-12-24 2017-11-28 Intel Corporation Content protection for data as a service (DaaS)
US9318221B2 (en) 2014-04-03 2016-04-19 Winbound Electronics Corporation Memory device with secure test mode
CA2981789A1 (en) 2014-04-04 2015-10-08 David Goldschlag Method for authentication and assuring compliance of devices accessing external services
US9438627B2 (en) 2014-06-11 2016-09-06 International Business Machines Corporation Shared security utility appliance for secure application and data processing
US9430619B2 (en) 2014-09-10 2016-08-30 Microsoft Technology Licensing, Llc Media decoding control with hardware-protected digital rights management
US9830289B2 (en) 2014-09-16 2017-11-28 Apple Inc. Methods and apparatus for aggregating packet transfer over a virtual bus interface
US9715402B2 (en) 2014-09-30 2017-07-25 Amazon Technologies, Inc. Dynamic code deployment and versioning
US9323556B2 (en) 2014-09-30 2016-04-26 Amazon Technologies, Inc. Programmatic event detection and message generation for requests to execute program code
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US10048974B1 (en) 2014-09-30 2018-08-14 Amazon Technologies, Inc. Message-based computation request scheduling
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9830193B1 (en) 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
IL234956A (en) 2014-10-02 2017-10-31 Kaluzhny Uri Data bus protection with enhanced key entropy
US9798377B2 (en) 2014-10-08 2017-10-24 Apple Inc. Methods and apparatus for recovering errors with an inter-processor communication link between independently operable processors
CN104331470B (zh) * 2014-10-31 2017-12-05 深圳市东信时代信息技术有限公司 基于缓存机制的数据处理方法及系统
US10496825B2 (en) 2014-11-26 2019-12-03 Hewlett-Packard Development Company, L.P. In-memory attack prevention
US9858429B2 (en) * 2014-12-01 2018-01-02 Samsung Electronics Co., Ltd. Methods of data transfer in electronic devices
US9537788B2 (en) 2014-12-05 2017-01-03 Amazon Technologies, Inc. Automatic determination of resource sizing
US9886297B2 (en) 2014-12-11 2018-02-06 Amazon Technologies, Inc. Systems and methods for loading a virtual machine monitor during a boot process
US9424067B2 (en) 2014-12-11 2016-08-23 Amazon Technologies, Inc. Managing virtual machine instances utilizing an offload device
US9292332B1 (en) 2014-12-11 2016-03-22 Amazon Technologies, Inc. Live updates for virtual machine monitor
US9400674B2 (en) 2014-12-11 2016-07-26 Amazon Technologies, Inc. Managing virtual machine instances utilizing a virtual offload device
US9535798B1 (en) 2014-12-19 2017-01-03 Amazon Technologies, Inc. Systems and methods for maintaining virtual component checkpoints on an offload device
WO2016099644A1 (en) * 2014-12-19 2016-06-23 Private Machines Inc. Systems and methods for using extended hardware security modules
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
KR102324336B1 (ko) * 2015-03-20 2021-11-11 한국전자통신연구원 사용자 장치 및 그것에 대한 무결성 검증 방법
US10211985B1 (en) * 2015-03-30 2019-02-19 Amazon Technologies, Inc. Validating using an offload device security component
US9667414B1 (en) 2015-03-30 2017-05-30 Amazon Technologies, Inc. Validating using an offload device security component
US10243739B1 (en) 2015-03-30 2019-03-26 Amazon Technologies, Inc. Validating using an offload device security component
US10140130B2 (en) 2015-04-07 2018-11-27 RunSafe Security, Inc. System and method of obfuscation through binary and memory diversity
US9930103B2 (en) 2015-04-08 2018-03-27 Amazon Technologies, Inc. Endpoint management system providing an application programming interface proxy service
US9785476B2 (en) 2015-04-08 2017-10-10 Amazon Technologies, Inc. Endpoint management system and virtual compute system
EP3289442B1 (en) 2015-04-30 2023-04-19 Microchip Technology Incorporated Central processing unit with enhanced instruction set
US10042794B2 (en) 2015-06-12 2018-08-07 Apple Inc. Methods and apparatus for synchronizing uplink and downlink transactions on an inter-device communication link
KR101658641B1 (ko) * 2015-06-12 2016-09-22 서울대학교산학협력단 하드웨어 기반의 커널 코드 삽입 공격 탐지 장치 및 그 방법
US10089500B2 (en) * 2015-09-25 2018-10-02 Intel Corporation Secure modular exponentiation processors, methods, systems, and instructions
US10142101B2 (en) * 2015-09-29 2018-11-27 Intel Corporation Hardware enforced one-way cryptography
US9928108B1 (en) 2015-09-29 2018-03-27 Amazon Technologies, Inc. Metaevent handling for on-demand code execution environments
US10042660B2 (en) 2015-09-30 2018-08-07 Amazon Technologies, Inc. Management of periodic requests for compute capacity
US9894061B2 (en) 2015-10-16 2018-02-13 International Business Machines Corporation Method for booting and dumping a confidential image on a trusted computer system
US10013267B1 (en) 2015-12-16 2018-07-03 Amazon Technologies, Inc. Pre-triggers for code execution environments
US9811434B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US10754701B1 (en) 2015-12-16 2020-08-25 Amazon Technologies, Inc. Executing user-defined code in response to determining that resources expected to be utilized comply with resource restrictions
US9910713B2 (en) 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
US10002026B1 (en) 2015-12-21 2018-06-19 Amazon Technologies, Inc. Acquisition and maintenance of dedicated, reserved, and variable compute capacity
US10067801B1 (en) 2015-12-21 2018-09-04 Amazon Technologies, Inc. Acquisition and maintenance of compute capacity
US10085214B2 (en) 2016-01-27 2018-09-25 Apple Inc. Apparatus and methods for wake-limiting with an inter-device communication link
US10572390B2 (en) 2016-02-29 2020-02-25 Apple Inc. Methods and apparatus for loading firmware on demand
US10019571B2 (en) 2016-03-13 2018-07-10 Winbond Electronics Corporation Protection from side-channel attacks by varying clock delays
US10097606B2 (en) 2016-03-14 2018-10-09 Amazon Technologies, Inc. Application streaming using access and execution environments
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
WO2017172440A1 (en) * 2016-03-30 2017-10-05 Amazon Technologies, Inc. Processing pre-existing data sets at an on-demand code execution environment
US10162672B2 (en) 2016-03-30 2018-12-25 Amazon Technologies, Inc. Generating data streams from pre-existing data sets
US10891145B2 (en) 2016-03-30 2021-01-12 Amazon Technologies, Inc. Processing pre-existing data sets at an on demand code execution environment
US10198364B2 (en) 2016-03-31 2019-02-05 Apple Inc. Memory access protection apparatus and methods for memory mapped access between independently operable processors
US10282229B2 (en) 2016-06-28 2019-05-07 Amazon Technologies, Inc. Asynchronous task management in an on-demand network code execution environment
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
US10277708B2 (en) 2016-06-30 2019-04-30 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US10203990B2 (en) 2016-06-30 2019-02-12 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US10270598B2 (en) 2016-08-26 2019-04-23 Intel Corporation Secure elliptic curve cryptography instructions
CN106445808A (zh) * 2016-08-29 2017-02-22 北京中电华大电子设计有限责任公司 一种具有控制程序单步调试功能的仿真器
US10884787B1 (en) 2016-09-23 2021-01-05 Amazon Technologies, Inc. Execution guarantees in an on-demand network code execution system
US10061613B1 (en) 2016-09-23 2018-08-28 Amazon Technologies, Inc. Idempotent task execution in on-demand network code execution systems
US11119813B1 (en) 2016-09-30 2021-09-14 Amazon Technologies, Inc. Mapreduce implementation using an on-demand network code execution system
US10775871B2 (en) 2016-11-10 2020-09-15 Apple Inc. Methods and apparatus for providing individualized power control for peripheral sub-systems
US10551902B2 (en) 2016-11-10 2020-02-04 Apple Inc. Methods and apparatus for providing access to peripheral sub-system registers
US10402273B2 (en) 2016-12-14 2019-09-03 Microsoft Technology Licensing, Llc IoT device update failure recovery
US10416991B2 (en) * 2016-12-14 2019-09-17 Microsoft Technology Licensing, Llc Secure IoT device update
US10715526B2 (en) 2016-12-14 2020-07-14 Microsoft Technology Licensing, Llc Multiple cores with hierarchy of trust
US10367639B2 (en) * 2016-12-29 2019-07-30 Intel Corporation Graphics processor with encrypted kernels
KR102617354B1 (ko) 2017-01-05 2023-12-26 삼성전자주식회사 보안 부트 시퀀서 및 보안 부트 장치
US10404470B2 (en) * 2017-01-13 2019-09-03 Microsoft Technology Licensing, Llc Signature verification of field-programmable gate array programs
US10467416B2 (en) 2017-06-16 2019-11-05 International Business Machines Corporation Securing operating system configuration using hardware
US10567359B2 (en) 2017-07-18 2020-02-18 International Business Machines Corporation Cluster of secure execution platforms
US10346226B2 (en) 2017-08-07 2019-07-09 Time Warner Cable Enterprises Llc Methods and apparatus for transmitting time sensitive data over a tunneled bus interface
CN107563224B (zh) * 2017-09-04 2020-07-28 浪潮集团有限公司 一种多用户物理隔离方法及装置
US10528768B2 (en) * 2017-09-15 2020-01-07 Intel Corporation Methods and apparatus to provide user-level access authorization for cloud-based field-programmable gate arrays
US10564946B1 (en) 2017-12-13 2020-02-18 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10303492B1 (en) 2017-12-13 2019-05-28 Amazon Technologies, Inc. Managing custom runtimes in an on-demand code execution system
US10331612B1 (en) 2018-01-09 2019-06-25 Apple Inc. Methods and apparatus for reduced-latency data transmission with an inter-processor communication link between independently operable processors
US10733085B1 (en) 2018-02-05 2020-08-04 Amazon Technologies, Inc. Detecting impedance mismatches due to cross-service calls
US10831898B1 (en) 2018-02-05 2020-11-10 Amazon Technologies, Inc. Detecting privilege escalations in code including cross-service calls
US10572375B1 (en) 2018-02-05 2020-02-25 Amazon Technologies, Inc. Detecting parameter validity in code including cross-service calls
US10353678B1 (en) 2018-02-05 2019-07-16 Amazon Technologies, Inc. Detecting code characteristic alterations due to cross-service calls
US10725752B1 (en) 2018-02-13 2020-07-28 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10776091B1 (en) 2018-02-26 2020-09-15 Amazon Technologies, Inc. Logging endpoint in an on-demand code execution system
US11792307B2 (en) 2018-03-28 2023-10-17 Apple Inc. Methods and apparatus for single entity buffer pool management
US10430352B1 (en) 2018-05-18 2019-10-01 Apple Inc. Methods and apparatus for reduced overhead data transfer with a shared ring buffer
US11714910B2 (en) * 2018-06-13 2023-08-01 Hewlett Packard Enterprise Development Lp Measuring integrity of computing system
WO2020005857A1 (en) * 2018-06-24 2020-01-02 Hex Five Security, Inc. Configuring, enforcing, and monitoring separation of trusted execution environments
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US10649749B1 (en) 2018-06-26 2020-05-12 Amazon Technologies, Inc. Cross-environment application of tracing information for improved code execution
US11146569B1 (en) * 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
US10949237B2 (en) 2018-06-29 2021-03-16 Amazon Technologies, Inc. Operating system customization in an on-demand network code execution system
EP3595256A1 (de) * 2018-07-13 2020-01-15 Siemens Aktiengesellschaft Vorrichtung und verfahren zum betreiben einer durch software gestalteten verarbeitungseinheit für ein gerät
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
US10585699B2 (en) 2018-07-30 2020-03-10 Apple Inc. Methods and apparatus for verifying completion of groups of data transactions between processors
US10846224B2 (en) 2018-08-24 2020-11-24 Apple Inc. Methods and apparatus for control of a jointly shared memory-mapped region
US10719376B2 (en) 2018-08-24 2020-07-21 Apple Inc. Methods and apparatus for multiplexing data flows via a single data structure
US11099917B2 (en) 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US10789110B2 (en) 2018-09-28 2020-09-29 Apple Inc. Methods and apparatus for correcting out-of-order data transactions between processors
US10838450B2 (en) 2018-09-28 2020-11-17 Apple Inc. Methods and apparatus for synchronization of time between independently operable processors
US11126757B2 (en) * 2018-10-19 2021-09-21 Microsoft Technology Licensing, Llc Peripheral device
US11163701B2 (en) * 2018-11-15 2021-11-02 Intel Corporation System, apparatus and method for integrity protecting tenant workloads in a multi-tenant computing environment
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US10884812B2 (en) 2018-12-13 2021-01-05 Amazon Technologies, Inc. Performance-based hardware emulation in an on-demand network code execution system
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
CN111562916B (zh) * 2019-02-13 2023-04-21 百度在线网络技术(北京)有限公司 共享算法的方法和装置
US11403409B2 (en) 2019-03-08 2022-08-02 International Business Machines Corporation Program interruptions for page importing/exporting
US11347869B2 (en) 2019-03-08 2022-05-31 International Business Machines Corporation Secure interface control high-level page management
US11206128B2 (en) 2019-03-08 2021-12-21 International Business Machines Corporation Secure paging with page change detection
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US11115404B2 (en) 2019-06-28 2021-09-07 Amazon Technologies, Inc. Facilitating service connections in serverless code executions
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11558348B2 (en) 2019-09-26 2023-01-17 Apple Inc. Methods and apparatus for emerging use case support in user space networking
US11829303B2 (en) 2019-09-26 2023-11-28 Apple Inc. Methods and apparatus for device driver operation in non-kernel space
US11656892B1 (en) 2019-09-27 2023-05-23 Amazon Technologies, Inc. Sequential execution of user-submitted code and native functions
US11550944B2 (en) 2019-09-27 2023-01-10 Amazon Technologies, Inc. Code execution environment customization system for object storage service
US11023416B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. Data access control system for object storage service based on owner-defined code
US11416628B2 (en) 2019-09-27 2022-08-16 Amazon Technologies, Inc. User-specific data manipulation system for object storage service based on user-submitted code
US11023311B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. On-demand code execution in input path of data uploaded to storage service in multiple data portions
US10996961B2 (en) 2019-09-27 2021-05-04 Amazon Technologies, Inc. On-demand indexing of data in input path of object storage service
US11055112B2 (en) 2019-09-27 2021-07-06 Amazon Technologies, Inc. Inserting executions of owner-specified code into input/output path of object storage service
US10908927B1 (en) 2019-09-27 2021-02-02 Amazon Technologies, Inc. On-demand execution of object filter code in output path of object storage service
US11360948B2 (en) 2019-09-27 2022-06-14 Amazon Technologies, Inc. Inserting owner-specified data processing pipelines into input/output path of object storage service
US11394761B1 (en) 2019-09-27 2022-07-19 Amazon Technologies, Inc. Execution of user-submitted code on a stream of data
US11263220B2 (en) 2019-09-27 2022-03-01 Amazon Technologies, Inc. On-demand execution of object transformation code in output path of object storage service
US11386230B2 (en) 2019-09-27 2022-07-12 Amazon Technologies, Inc. On-demand code obfuscation of data in input path of object storage service
US11250007B1 (en) 2019-09-27 2022-02-15 Amazon Technologies, Inc. On-demand execution of object combination code in output path of object storage service
US11106477B2 (en) 2019-09-27 2021-08-31 Amazon Technologies, Inc. Execution of owner-specified code during input/output path to object storage service
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
US10942795B1 (en) 2019-11-27 2021-03-09 Amazon Technologies, Inc. Serverless call distribution to utilize reserved capacity without inhibiting scaling
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11188391B1 (en) 2020-03-11 2021-11-30 Amazon Technologies, Inc. Allocating resources to on-demand code executions under scarcity conditions
US11775640B1 (en) 2020-03-30 2023-10-03 Amazon Technologies, Inc. Resource utilization-based malicious task detection in an on-demand code execution system
KR20210125330A (ko) * 2020-04-08 2021-10-18 삼성전자주식회사 보안 데이터 처리 방법 및 이를 지원하는 전자 장치
US11606302B2 (en) 2020-06-12 2023-03-14 Apple Inc. Methods and apparatus for flow-based batching and processing
US11775359B2 (en) 2020-09-11 2023-10-03 Apple Inc. Methods and apparatuses for cross-layer processing
US11954540B2 (en) 2020-09-14 2024-04-09 Apple Inc. Methods and apparatus for thread-level execution in non-kernel space
US11799986B2 (en) 2020-09-22 2023-10-24 Apple Inc. Methods and apparatus for thread level execution in non-kernel space
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
CN112906015B (zh) * 2021-01-26 2023-11-28 浙江大学 一种基于硬件标签的内存敏感数据加密保护系统
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system
US11876719B2 (en) 2021-07-26 2024-01-16 Apple Inc. Systems and methods for managing transmission control protocol (TCP) acknowledgements
US11882051B2 (en) 2021-07-26 2024-01-23 Apple Inc. Systems and methods for managing transmission control protocol (TCP) acknowledgements
CN116861411A (zh) * 2023-06-05 2023-10-10 北京连山科技股份有限公司 基于Seccomp机制的安全沙箱数据保护方法及系统
CN117056983B (zh) * 2023-10-13 2024-01-02 中国移动紫金(江苏)创新研究院有限公司 多级可控数据共享授权方法、装置及区块链系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997005551A1 (en) 1995-07-31 1997-02-13 Verifone, Inc. Method and apparatus for operating resources under control of a security module or other secure processor
US20020184046A1 (en) 2001-05-30 2002-12-05 Fujitsu Limited Code execution apparatus and code distributing method
US20060090084A1 (en) 2004-10-22 2006-04-27 Mark Buer Secure processing environment

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US964278A (en) 1910-04-08 1910-07-12 Clifford J Larkin Method of making coats.
JP2002229447A (ja) * 2001-01-30 2002-08-14 Nippon Telegr & Teleph Corp <Ntt> デジタルコンテンツ流通における著作権保護システム
AU2003303882A1 (en) * 2003-02-03 2004-08-30 Nokia Corporation Architecture for encrypted application installation
EP1548537A1 (en) 2003-12-23 2005-06-29 STMicroelectronics Limited Secure processor arrangement
JP4447977B2 (ja) 2004-06-30 2010-04-07 富士通マイクロエレクトロニクス株式会社 セキュアプロセッサ、およびセキュアプロセッサ用プログラム。
JP2008505385A (ja) * 2004-07-02 2008-02-21 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ セキュリティユニットおよびそのようなセキュリティユニットを備える保護システムならびにデータを保護するための方法
JP4596247B2 (ja) * 2005-01-31 2010-12-08 ソニー株式会社 データ処理回路、データ処理装置、データ処理方法、データ処理制御方法、データ処理プログラム及びデータ処理制御プログラム
WO2006082988A2 (en) 2005-02-07 2006-08-10 Sony Computer Entertainment Inc. Methods and apparatus for facilitating a secure processor functional transition
US7386775B2 (en) * 2005-08-18 2008-06-10 International Business Machines Corporation Scan verification for a scan-chain device under test
JP4795812B2 (ja) 2006-02-22 2011-10-19 富士通セミコンダクター株式会社 セキュアプロセッサ
US8135959B2 (en) * 2006-04-07 2012-03-13 Honeywell International Inc. External key to provide protection to devices
US7660769B2 (en) 2006-09-12 2010-02-09 International Business Machines Corporation System and method for digital content player with secure processing vault
US20080152142A1 (en) 2006-12-20 2008-06-26 Mark Buer Memory scrambler unit (msu)
JP4912921B2 (ja) * 2007-02-27 2012-04-11 富士通セミコンダクター株式会社 セキュアプロセッサシステム、セキュアプロセッサ及びセキュアプロセッサシステムの制御方法
US20080229117A1 (en) * 2007-03-07 2008-09-18 Shin Kang G Apparatus for preventing digital piracy
JP5007867B2 (ja) * 2007-05-11 2012-08-22 ナグラスター エル.エル.シー. 安全な環境におけるプロセッサ実行を制御するための装置
US8010763B2 (en) * 2007-08-02 2011-08-30 International Business Machines Corporation Hypervisor-enforced isolation of entities within a single logical partition's virtual address space
US8526616B2 (en) * 2008-03-18 2013-09-03 Christopher V. FEUDO Method for payload encryption of digital voice or data communications
US20090249222A1 (en) * 2008-03-25 2009-10-01 Square Products Corporation System and method for simultaneous media presentation
US8644499B2 (en) 2009-09-14 2014-02-04 Broadcom Corporation Method and system for securely protecting a semiconductor chip without compromising test and debug capabilities
US8904190B2 (en) * 2010-10-20 2014-12-02 Advanced Micro Devices, Inc. Method and apparatus including architecture for protecting sensitive code and data

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997005551A1 (en) 1995-07-31 1997-02-13 Verifone, Inc. Method and apparatus for operating resources under control of a security module or other secure processor
US20020184046A1 (en) 2001-05-30 2002-12-05 Fujitsu Limited Code execution apparatus and code distributing method
US20060090084A1 (en) 2004-10-22 2006-04-27 Mark Buer Secure processing environment

Also Published As

Publication number Publication date
CN103221961B (zh) 2015-10-14
US20120102333A1 (en) 2012-04-26
KR20130080046A (ko) 2013-07-11
JP2013545182A (ja) 2013-12-19
JP5670578B2 (ja) 2015-02-18
US20120102307A1 (en) 2012-04-26
CN103221961A (zh) 2013-07-24
EP2630607B1 (en) 2016-11-30
WO2012054615A1 (en) 2012-04-26
KR101397637B1 (ko) 2014-05-22
JP2013541783A (ja) 2013-11-14
CN103210396B (zh) 2016-03-02
US8904190B2 (en) 2014-12-02
EP2630607A1 (en) 2013-08-28
EP2630608A1 (en) 2013-08-28
KR20130142135A (ko) 2013-12-27
CN103210396A (zh) 2013-07-17
US8489898B2 (en) 2013-07-16
EP2630608B1 (en) 2016-01-20
WO2012054609A1 (en) 2012-04-26
JP5537742B2 (ja) 2014-07-02

Similar Documents

Publication Publication Date Title
KR101735023B1 (ko) 민감한 코드와 데이터를 보호하는 아키텍처를 포함하는 방법 및 장치
US9842212B2 (en) System and method for a renewable secure boot
TWI489308B (zh) 未知安全金鑰下開機影像之安全更新
KR100823374B1 (ko) 휴면 보호
KR100792287B1 (ko) 자체 생성한 암호화키를 이용한 보안방법 및 이를 적용한보안장치
US20080130893A1 (en) Methods and systems for utilizing cryptographic functions of a cryptographic co-processor
JP2004164491A (ja) プログラム更新方法およびサーバ
EP1429224A1 (en) Firmware run-time authentication
TW201319863A (zh) 用於防止惡意軟體執行的方法與系統
TW200937249A (en) Handling of secure storage key in always on domain
EP2270707B1 (en) Loading secure code into a memory
KR20210089486A (ko) 키를 안전하게 관리하기 위한 장치 및 방법
CN114816549B (zh) 一种保护bootloader及其环境变量的方法及系统
JP2004280678A (ja) データ処理装置、およびデータ処理方法
JP4580030B2 (ja) セキュアデバイス
JP2007272923A (ja) サーバ
JP2007272923A5 (ko)

Legal Events

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