KR101054981B1 - 프로그램의 콘텍스트를 보안적으로 저장하는 컴퓨터 구현 방법, 정보 처리 시스템 및 컴퓨터 판독 가능한 기록 매체 - Google Patents

프로그램의 콘텍스트를 보안적으로 저장하는 컴퓨터 구현 방법, 정보 처리 시스템 및 컴퓨터 판독 가능한 기록 매체 Download PDF

Info

Publication number
KR101054981B1
KR101054981B1 KR1020097006459A KR20097006459A KR101054981B1 KR 101054981 B1 KR101054981 B1 KR 101054981B1 KR 1020097006459 A KR1020097006459 A KR 1020097006459A KR 20097006459 A KR20097006459 A KR 20097006459A KR 101054981 B1 KR101054981 B1 KR 101054981B1
Authority
KR
South Korea
Prior art keywords
program
context
purpose processor
processor core
special purpose
Prior art date
Application number
KR1020097006459A
Other languages
English (en)
Other versions
KR20090051107A (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 KR20090051107A publication Critical patent/KR20090051107A/ko
Application granted granted Critical
Publication of KR101054981B1 publication Critical patent/KR101054981B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect

Abstract

공유 메모리에 프로그램 콘텍스트를 보안적으로 저장하기 위한 시스템, 방법 및 프로그램 제품이 제공된다. 격리 모드에서 특수 목적 프로세서 코어 상에서 실행 중인 보안되는 프로그램이 중단된다. 격리된 특수 목적 프로세서 코어는 이종 프로세싱 환경에 포함되는데, 이는 공유 메모리에 각각 액세스하는 특수 목적 프로세서 및 범용 프로세서를 포함한다. 격리 모드에서, 특수 목적 프로세서 코어의 로컬 메모리는 다른 이종 프로세서로부터 액세스 가능하지 않다. 보안 프로그램의 콘텍스트는 랜덤 영구적 보안 데이터를 사용하여 공유 메모리에 보안적으로 저장된다. 격리된 특수 목적 프로세서 코어의 로컬 메모리에 저장되는 코드 라인은 보안되는 프로그램에 의해 설정되는 레지스터 설정 등과 같은 데이터 값과 함께 판독된다. 코드 라인 및 데이터 값은 영구적 보안 데이터를 사용하여 암호화되고, 암호화 코드 라인 및 데이터 값은 공유 메모리에 저장된다.

Description

프로그램의 콘텍스트를 보안적으로 저장하는 컴퓨터 구현 방법, 정보 처리 시스템 및 컴퓨터 판독 가능한 기록 매체{SYSTEM AND METHOD FOR SECURELY SAVING A PROGRAM CONTEXT TO A SHARED MEMORY}
본 발명은 일반적으로 프로그램 콘텐츠를 보안적으로 저장하는 시스템 및 방법에 관한 것이다. 더 구체적으로, 본 발명은 이종(heterogeneous) 프로세싱 시스템에서 격리된 특수 프로세싱 유닛으로부터 공유 메모리로 프로그램의 콘텐츠를 저장하는 시스템 및 방법에 관한 것이다.
다수의 이종 프로세서를 포함하는 컴퓨팅 시스템의 인기가 높아지고 있다. 이들 환경에서, 하나 이상의 범용 프로세서 코어가 하나 이상의 특수 목적 프로세서 코어와 함께 동작한다. 통상적으로, 이들은 상이한 특성을 가지기 때문에 범용 프로세서 코어는 특수 목적 프로세서 또는 애플리케이션 특정 프로세서에 의해 사용되는 것들과는 다른 인스트럭션 세트 아키텍처(ISA)를 사용한다. 상이한 프로세싱 특성 및 ISA를 가짐으로써 각 프로세서 유형이 상이한 유형의 작업을 효율적으로 수행하는 것을 돕는다.
상이한 프로세서 특성으로 인해, 이종 프로세서는 멀티미디어, 게임 및 다수의 집약적 애플리케이션 환경과 같은 다양한 환경에 대해 매력적이다. 이 환경에서, 프로그램은 다수의 스레드를 가질 수 있다. 이들 스레드 중 일부는 범용 프로세서 코어 상에서 실행될 수 있으며 다른 스레드는 특수 목적 프로세서 코어 상에서 실행될 수 있다. 다수의 특수 목적 프로세서 코어가 하나의 시스템에 포함될 수 있지만, 이들 특수 목적 프로세서 코어는 특수 목적 프로세서 코어 상의 상이한 스레드를 로딩하고 실행시키기 위해 특수 목적 프로세서 코어 중 하나에서 현재 실행 중인 스레드를 작업 전환하도록 시스템에 촉구하는 것이 여전히 제한될 수 있다.
기존 컴퓨터 시스템을 괴롭히는 위협은 해커와 같은 악의의 사용자인데, 이들은, 소프트웨어의 상이한 이미지가 시스템에 의해 로딩되고 실행되도록 소프트웨어를 불법으로 복사하거나 소프트웨어를 해킹하기 위해, 소프트웨어의 애플리케이션에 의해 사용되는 보안 수단을 교모하게 회피하려고 노력한다. 소프트웨어의 한 버전을 다른 것으로 교환하는 것을 흔히 "리플레이 공격(replay attack)"이라고 한다. 악의의 사용자에 의해 사용되는 하나의 기술은 운영 시스템에 의해 작업된 소프트웨어 프로그램의 이미지를 캡처하고 이 이미지를 재사용하는 것이다.
제 1 양태에 따르면, 프로그램의 콘텍스트를 보안적으로 저장하는 컴퓨터 구현 방법이 제공되는데, 이 방법은 격리 모드(an isolation mode)에서 실행 중인 특수 목적 프로세서 코어를 포함하는 복수의 이종 프로세서 코어를 포함하는 이종 프로세서에 포함되는 특수 목적 프로세서 코어 상에서 실행 중인 보안되는 프로그램을 중단시키는 단계 - 격리된 특수 목적 프로세서 코어는 격리 모드에서 실행 중인 동안에 이종 프로세서에 포함되는 다른 프로세서 코어로부터 액세스 가능하지 않은 로컬 메모리를 포함하고, 이종 프로세서의 코어 각각은 공유 메모리에 액세스 가능함 - 와, 중단시키는 단계에 응답하여 보안되는 프로그램의 콘텍스트를 공유 메모리에 보안적으로 저장하는 단계 - 콘텍스트는 코드 라인 및 데이터 값을 포함함 - 를 포함하는데, 이 저장하는 단계는, 랜덤 영구적 보안 데이터를 생성하는 단계와, 격리된 특수 목적 프로세서 코어의 로컬 메모리로부터 상기 코드 라인을 판독하는 단계와, 격리된 특수 목적 프로세서 코어의 로컬 메모리로부터 데이터 값을 판독하는 단계와, 생성된 영구적 보안 데이터를 사용하여 코드 라인 및 상기 데이터 값을 암호화하는 단계와, 암호화 코드 라인 및 데이터 값을 공유 메모리에 저장하는 단계를 포함한다.
바람직하게는, 소프트웨어 프로그램을 보안적으로 저장하기 위해 보안 로더(a secure loader)를 사용하는 시스템 및 방법이 제공된다. 또한, 리플레이 공격(replay attacks)을 효율적으로 방지하는 방식으로 보안적으로 저장하는 시스템, 방법 및 프로그램이 제공된다.
바람직하게는, 프로그램의 콘텍스트를 공유 메모리에 보안적으로 저장하는 시스템, 방법 및 프로그램 제품이 제공된다. 바람직하게는, 격리 모드에서 실행 중인 특수 목적 프로세서 코어 상에서 실행 중인 보안되는 프로그램으로 중단이 송신된다. 바람직하게는, 격리된 특수 목적 프로세서 코어는 이종 프로세싱 환경에 포함되는데, 이는 범용 프로세서 코어 및 (격리된 특수 목적 프로세서를 포함하는) 특수 목적 프로세서 코어를 포함한다. 이종 프로세서의 각각(이종 프로세서 코어)은 공유 메모리에 액세스할 수 있다. 특수 목적 프로세서 코어가 격리 모드에서 실행 중인 경우, 그 로컬 메모리는 다른 이종 프로세서로부터 액세스 가능하지 않은 것이 바람직하다. 바람직하게는, 보안되는 프로그램의 콘텍스트는 랜덤 영구적 보안 데이터를 사용하여 공유 메모리에 보안적으로 저장된다. 바람직하게는, 격리된 특수 목적 프로세서 코어의 로컬 메모리에 저장되는 코드 라인은 보안되는 프로그램에 의해 설정되는 레지스터 설정과 같은 데이터 값과 함께 판독된다. 바람직하게는, 코드 라인 및 데이터 값은 영구적 보안 데이터를 사용하여 암호화되고, 암호화된 코드 라인 및 데이터 값은 공유 메모리에 저장된다.
일 실시예에서, 영구적 보안 데이터는 영구적 저장 레지스터에 저장된다. 이 실시예에서, 영구적 보안 데이터는 논스(a nonce)이며, 암호화된 데이터 값 중 하나가 이 논스이다. 이 실시예에서, 암호화는 정적 암호화 키를 사용하여 수행된다. 영구적 저장 레지스터는 특수 목적 프로세서 코어가 격리 모드에서 실행 중일 때 액세스 가능하다.
다른 실시예에서, 영구적 보안 데이터는 코드 라인 및 데이터 값을 암호화하는 데에 사용되는 랜덤적으로 생성된 암호화 키이다. 이 실시예에서, 영구적 보안 데이터는 영구적 저장 레지스터에 저장되며, 영구적 저장 레지스터는 특수 목적 프로세서 코어가 격리 모드에서 실행 중일 때 액세스 가능하다.
일 실시예에서, 격리된 특수 목적 프로세싱 유닛은 격리된 특수 목적 프로세서 코어와 공유 메모리 사이의 데이터 전송을 위해 사용되는 보호되지 않는 개방 메모리 공간을 포함한다. 이 실시예에서, 보호되지 않는 개방 공간 메모리에 저장되는 값은 암호화되지 않고 판독되고 공유 메모리에 기록된다.
다른 실시예에서, 보안되는 프로그램이 중단된 보안되는 프로그램 내의 한 위치에 대응하는 프로그램 카운터가 검색된다. 이 프로그램 카운터는 암호화되어 공유 메모리에 저장된다.
일 실시예에서, 보안되는 프로그램의 콘텍스트가 공유 메모리에 저장된 후, 격리된 특수 목적 프로세서 코어의 로컬 메모리가 클리어링되지만, 영구적 저장 레지스터는 그래도 남겨 진다. 그 후, 특수 목적 프로세서 코어는 비-격리 모드로 복귀된다. 그 후, 실행 중인 특수 목적 프로세싱 유닛에서 로딩되는 두 번째 프로그램이 이제 비-격리 모드에서 실행 중이다. 그러나, 영구적 저장 레지스터는 특수 목적 프로세서가 격리 모드에서 실행 중일 때에만 액세스 가능하므로 두 번째 프로그램에 액세스 가능하지 않다.
다른 실시예에서, 보안되는 프로그램의 암호화 콘텍스트(데이터)는 서명 누적기 결과를 생성하는 서명 생성 누적 함수에 입력된다. 서명 누적기 결과는 암호화되어 보안되는 프로그램의 콘텍스트와 함께 공유 메모리에 저장된다.
제 2 양태에 따르면, 정보 처리 시스템이 제공되는데, 이 시스템은, 하나 이상의 특수 목적 프로세서 코어와 하나 이상의 범용 프로세서 코어를 갖는 이종 프로세서 - 특수 목적 프로세서 코어는 격리 모드에서 실행 중임 - 와, 특수 목적 프로세서 코어와 범용 프로세서 코어에 의해 액세스 가능한 공유 메모리와, 복수의 이종 프로세서 각각에 대응하는 로컬 메모리 - 격리된 특수 목적 프로세서 코어에 대응하는 로컬 메모리는 다른 이종 프로세서에 의해 액세스 가능하지 않음 - 와, 로컬 메모리 중 하나에 저장되는 인스트럭션 세트를 포함하는데, 이종 프로세서 중 하나 이상은 인스트럭션 세트를 실행하여 격리 모드에서 실행 중인 특수 목적 프로세서 코어 중 하나 상에서 실행 중인 보안되는 프로그램을 중단시키는 동작 - 격리된 특수 목적 프로세서 코어는 다른 프로세서 코어로부터 액세스 가능하지 않은 로컬 메모리를 포함함 - 과, 중단시키는 동작에 응답하여, 보안되는 프로그램의 콘텍스트를 공유 메모리에 보안적으로 저장하는 동작 - 콘텍스트는 코드 라인 및 데이터 값을 포함함 - 을 수행할 수 있되, 이 저장하는 동작은, 랜덤 영구적 보안 데이터를 생성하는 동작과, 격리된 특수 목적 프로세서 코어의 로컬 메모리로부터 코드 라인을 판독하는 동작과, 격리된 특수 목적 프로세서 코어의 로컬 메모리로부터 데이터 값을 판독하는 동작과, 생성된 영구적 보안 데이터를 사용하여 코드 라인 및 상기 데이터 값을 암호화하는 동작과, 암호화 코드 라인 및 데이터 값을 공유 메모리에 저장하는 동작을 포함한다.
제 3 양태에 따르면, 컴퓨터 판독 가능한 매체에 저장되는 컴퓨터 프로그램 제품이 제공되는데, 정보 처리 시스템에 의해 실행되면 이 정보 처리 시스템으로 하여금 하나 이상의 특수 목적 프로세서 코어와 하나 이상의 범용 프로세서 코어를 갖는 이종 프로세서의 공유 메모리에 프로그램 콘텍스트를 보안적으로 저장하는 동작을 포함하는 동작을 수행하게 하는 기능적 기술 요소(functional descriptive material)을 포함하며, 이종 프로세서 코어 각각은 공유 메모리에 액세스할 수 있고, 보안적으로 저장하는 동작은 정보 처리 시스템에 의해 실행되면 정보 처리 시스템으로 하여금 격리 모드에서 실행 중인 특수 목적 프로세서 코어 중 하나 상에서 실행 중인 보안되는 프로그램을 중단시키는 동작 - 격리된 특수 목적 프로세서 코어는 다른 프로세서 코어로부터 액세스 가능하지 않은 로컬 메모리를 포함함 - 과, 중단시키는 동작에 응답하여, 보안되는 프로그램의 콘텍스트를 공유 메모리에 보안적으로 저장하는 동작 - 콘텍스트는 코드 라인 및 데이터 값을 포함함 -을 포함하는 추가 동작을 수행하게 하되, 이 저장하는 동작은, 랜덤 영구적 보안 데이터를 생성하는 동작과, 격리된 특수 목적 프로세서 코어의 로컬 메모리로부터 코드 라인을 판독하는 동작과, 격리된 특수 목적 프로세서 코어의 로컬 메모리로부터 데이터 값을 판독하는 동작과, 생성된 영구적 보안 데이터를 사용하여 코드 라인 및 데이터 값을 암호화하는 동작과, 암호화 코드 라인 및 데이터 값을 공유 메모리에 저장하는 동작을 포함한다.
전술한 설명은 개요이므로 필연적으로 간략화되고 일반화되며 세부 사항을 생략하였으므로, 결과적으로 당업자는 개요는 단지 예시적이며 제한적으로 의도되지 않았음을 인식할 것이다. 청구범위에 의해서만 정의되는 본 발명의 다른 양태, 발명적 특징 및 장점은 후술하는 제한적이지 않은 상세한 설명에서 명백해질 것이다.
이제 본 발명의 바람직한 실시예를 설명할 것인데, 단지 예시적인 것이며 다음의 도면을 참조한다.
도 1은 본 발명의 바람직한 실시예에 따른, 프로그램 콘텍스트를 보안적으로 저장하고 복원하기 위한 다양한 구성요소들 사이의 상호작용을 도시하는 블록도이다.
도 2는 본 발명의 바람직한 실시예에 따른, 특수 목적 프로세서 코어가 프로그램을 로딩하고 실행할 것을 요청하는 운영 시스템을 도시하는 흐름도이다.
도 3은 본 발명의 바람직한 실시예에 따른, 특수 목적 프로세서 코어 상에서 실행 중인 보안 프로그램을 중단하는 운영 시스템을 도시하는 흐름도이다.
도 4는 본 발명의 바람직한 실시예에 따른, 프로그램의 콘텍스트를 보안적으로 저장하기 위해 취해지는 단계를 도시하는 흐름도이다.
도 5는 본 발명의 바람직한 실시예에 따른, 보안 로더의 콘텍스트를 보안적으로 저장하기 위해 취해지는 단계를 도시하는 흐름도이다.
도 6은 본 발명의 바람직한 실시예에 따른, 보안 로더가 다수의 보안되는 프로그램을 관리할 때 프로그램의 콘텍스트를 보안적으로 저장하기 위해 취해지는 단계를 도시하는 흐름도이다.
도 7은 본 발명의 바람직한 실시예에 따른, 격리된 특수 목적 프로세서로부터 공유 메모리로 콘텍스트를 보안적으로 기록하기 위해 취해지는 단계를 도시하는 흐름도이다.
도 8은 본 발명의 바람직한 실시예에 따른, 프로그램이 특수 목적 프로세서 코어 상에 복원될 것을 요청하는 운영 시스템을 도시하는 흐름도이다.
도 9는 본 발명의 바람직한 실시예에 따른, 공유 메모리로부터 보안 로더의 콘텍스트를 보안적으로 복원하기 위해 취해지는 단계를 도시하는 흐름도이다.
도 10은 본 발명의 바람직한 실시예에 따른, 다수의 보안되는 프로그램을 관리하고 있는 보안 로더를 사용하는 프로그램의 콘텍스트를 복원하기 위해 취해지는 단계를 도시하는 흐름도이다.
도 11은 본 발명의 바람직한 실시예에 따른, 공유 메모리로부터 암호화 콘텍스트 데이터를 판독하고 격리 모드에서 실행 중인 특수 목적 프로세서 코어로 데이터를 복원하는 보안 로더의 세부 사항을 도시하는 흐름도이다.
도 12는 본 발명의 바람직한 실시예에 따른, 복원되고 있는 프로그램 콘텍스트에 대응한 레지스터 값들을 복원하기 위해 취해지는 단계를 도시하는 흐름도이다.
도 13은 본 발명의 바람직한 실시예에 따른, 서명을 생성하면서 보안되는 프로그램 또는 보안 로더의 콘텍스트를 저장하기 위해 취해지는 단계를 도시하는 흐름도이다.
도 14는 본 발명의 바람직한 실시예에 따른, 서명을 생성하면서 보안되는 프로그램 또는 보안 로더의 콘텍스트를 복원하고 콘텍스트가 저장된 경우에 생성된 서명을 저장된 서명과 비교하기 위해 취해지는 단계를 도시하는 흐름도이다.
도 15는 본 발명이 구현될 수 있는 복수의 이종 프로세서를 포함하는 광대역 엔진의 블록도이다.
이하 본 발명의 예에 대한 상세한 설명이 제공될 것인데 본 발명 자체를 제한하는 것으로 고려되어서는 안 된다. 오히려, 임의의 개수의 변형이 본 발명의 범위 내에 해당될 수 있으며, 이는 상세한 설명에 이어지는 청구범위에서 정의된다.
도 1은 본 발명의 바람직한 실시예에 따른, 프로그램 콘텍스트를 보안적으로 저장하고 복원하는 다양한 구성요소들 사이의 상호작용을 도시하는 블록도이다. 범용 프로세서 코어(100)는 운영 시스템(105)을 실행하며 공유 메모리로 지칭되는 시스템 메모리에 상호접속된다. 범용 프로세서 코어의 일례는 도 15에 더 전체적으로 도시된 PPE(Primary Processing Element)이다. 특수 목적 프로세서 코어의 일례는 또한 도 15에 더 전체적으로 도시된 SPE(Synergistic Processing Element)이다. 도 15에 도시된 바와 같이, 시스템의 한 특성은 범용 프로세서 코어와 특수 목적 프로세서 코어 모두에 의해 액세스될 수 있는 공유 메모리(130)이다. 일 실시예에서, 범용 프로세서 코어는 공유 메모리(130)에 저장되는 데이터를 판독하고 저장하기 위해 통상적인 판독 및 저장 명령을 사용하는 반면, SPE는 DMA(Direct Memory Access) 제어기를 통해 공유 메모리에 액세스하기 위해 DMA 명령을 사용한다.
도 1을 참조하면, 운영 시스템(105)은 통상적인 표준 운영 시스템 기능(110) 을 수행할 뿐만 아니라 통상적인 운영 시스템에 의해 일반적으로 수행되지 않는 추가 기능도 수행한다. 이들 비-표준 기능은 특수 목적 프로세서 코어(115) 중 하나 상에서 실행 중인 보안되는 프로그램을 보안적으로 로딩하고 복원하는 기능과, 격리 모드(120)에서 실행 중인 SPE 상에서 현재 실행 중인 보안되는 프로그램을 중단하는 기능과, SPE가 비-격리 모드인 동안 보안 로더를 사용하지 않고 실행되지 않는 보안되지 않는 프로그램을 SPE 상에 로딩하는 기능을 포함한다.
공유 메모리(130)가 사용되어 다양한 유형의 데이터를 저장한다. 공유 메모리(130)에 저장되는 데이터의 한 유형은 격리된 SPE(150) 상에서 실행 중이었지만 중단된 보안되는 프로그램에 대응하는 콘텍스트 데이터이다. 콘텍스트 데이터는 중단되고 작업되기 전에 SPE 중 하나에 의해 실행되고 있던 저장된 보안되는 프로그램의 암호화 콘텍스트(135)를 포함한다. 또한, 콘텍스트 데이터는 보안되는 프로그램이 실행되고 있었을 때 존재한 대로(138) 개방 영역(165)의 암호화되지 않은 콘텍스트를 포함한다. 개방 영역(165)은 SPE와 공유 메모리 사이의 DMA 동작을 위해 사용되는 보호되지 않는 메모리 영역이다. 일 실시예에서, 개방 영역(165)의 콘텍스트는 암호화되지 않는데, 그 이유는 개방 영역이 보호되지 않는 메모리 영역이기 때문이다. 일 실시예에서, 보안 로더(170)는 격리된 SPE로부터 하나의 프로그램을 저장하고 복원하는 정적 로더이다. 다른 실시예에서, 보안 로더는 격리된 SPE상에서 실행 중인 다수의 프로그램을 위해 콘텍스트(코드 및 데이터)를 관리하는 정적 로더이다. 이 다른 실시예에서, 로더에 대한 콘텍스트는 공유 메모리(130)에서도 암호화되고 저장된다. 다른 실시예에서, 보안 로더의 콘텍스트는 암호화되며 관리하고 있는 보안되는 프로그램(140)에 관련되는 데이터를 포함한다. 이 데이터는 식별자 정보(보안되는 프로그램의 콘텍스트가 공유 메모리에 저장되는 어드레스), 관리되고 있는 프로그램에 대응하는 암호화 키 및 실행이 운영 시스템에 의해 중단된 보안되는 프로그램의 위치에 관련되는 프로그램 카운터 정보를 포함한다.
SPE(150)가 격리 모드에서 동작할 때, 그 로컬 저장장치(160)는 PPE 상에서 실행되는 것들과 같은 다른 프로세스에 액세스 가능하지 않다. SPE의 보안되는 로컬 저장장치(160)는 보안 로더(170) 및 보안되는 프로그램의 코드와 데이터(175)를 저장하고 실행하기 위해 사용된다. 일 실시예에서, 보안 로더는 판독 전용 메모리에 저장되는 정적 프로그램이다. SPE는 격리 모드로 진입하는데, 정적 보안 로더는 로딩되는 첫 번째 프로그램이다. 그 후, 보안 로더는 보안되는 프로그램(170)을 SPE의 로컬 저장장치(160)로 로딩하는데, 여기서 SPE에 의해 프로그램이 실행된다. 일 실시예에서, 운영 시스템은 SPE 메일 박스(155)로 로딩되어야 하는 프로그램에 대응하는 포인터와 같은 식별자 데이터를 기록하는데, 일단 보안 로더가 로딩되면 SPE 메일 박스로부터의 식별자 데이터를 판독한다.
보안되는 프로그램이 운영 시스템으로부터 중단을 수신하면, 이는 보안 로더(170)로 진행하며 보안 로더는 보안되는 프로그램 콘텍스트(코드 및 데이터)를 보안적으로 저장한다. 보안 로더는 코드/데이터를 암호화하고 암호화 데이터를 개방 영역(165)에 기록하며 DMA 명령을 사용하여 암호화 데이터를 공유 메모리(130)에 기록함으로써(구체적으로, 데이터를 공유 메모리(130)의 데이터 영역(135)에 기 록함으로써) 보안되는 프로그램의 코드 및 데이터를 보안적으로 저장한다. 또한, 보안 로더는 보안되는 프로그램이 DMA 동작을 위해 사용되었던 개방 영역(165)의 상태를 저장한다. 개방 영역(165)은 보호되는 메모리 영역이 아니므로 보안 로더는 데이터를 암호화하지 않고 개방 영역의 상태를 저장한다. 또한, 보안 로더는 다양한 SPE 레지스터(180)에 값을 저장한다. SPE 레지스터는 비영구적 레지스터(185) 및 영구적 저장 레지스터(190)를 포함한다. 영구적 저장 레지스터는 논스(nonce) 또는 암호화 키와 같은 보안 데이터를 저장하기 위해 보안 로더에 의해 사용된다. 영구적 저장 레지스터는 격리 모드의 SPE 상에서 실행 중인 프로그램에 의해서만 액세스 가능하다. SPE가 격리 모드로 진입하면 시스템은 자동적으로 보안 로더를 우선 로딩하므로, 보안 로더는 보안 데이터를 검색하는 첫 번째 프로세스이다.
보안 로더가 다수의 보안되는 프로그램을 관리하고 있는 경우, 보안 로더는 자신의 콘텍스트를 갱신하는데, 가령, 보안되는 프로그램의 콘텍스트를 암호화하는 데 사용되는 암호화 키, 보안되는 프로그램이 중단된 프로그램 카운터 및 보안되는 프로그램에 관련되는 식별자 데이터를 갱신한다. 식별자 데이터는 보안되는 프로그램의 식별자 및 보안되는 프로그램의 콘텍스트 데이터가 공유 메모리(130)에 저장되는 어드레스를 포함한다.
도 2는 특수 목적 프로세서 코어가 프로그램을 로딩하고 실행할 것을 요청하는 운영 시스템을 도시하는 흐름도이다. 단계(205)에서, 운영 시스템(200)은 범용 프로세서 코어 중 하나(가령, PPE) 상에서 실행되고 있고 특수 목적 프로세서 코 어(가령, SPE 중 하나) 상에 보안되는 프로그램을 로딩하라는 요청을 수신한다. 운영 시스템은 요청되는 보안 프로그램이 SPE 중 하나 상에서 이전에 중단되었는가와(결정 210) 작업된 적이 있는가를 판단한다. 요청된 보안되는 프로그램이 이전에 중단된 경우, 결정(210)은 "예" 분기(212)로 진행하는데, 단계(215)에서 운영 시스템은 보안되는 프로그램이 실행 중이었던 특수 목적 프로세서 코어(SPE)의 식별자를 검색한다. 일 실시예에서, 보안되는 프로그램은, 그 SPE 상에서 실행 중인 로더가 보안되는 프로그램을 복원하기 위해 필요한 보안 데이터에 액세스를 가지므로 작업되었을 때 실행 중이었던 동일한 SPE로 복원된다. 한편, 보안되는 프로그램이 이전에 중단되지 않은 경우, 결정(210)은 "아니오" 분기(218)로 진행하해서, 단계(220)에서 운영 시스템은 현재 이용 가능한 SPE와 같은 특수 목적 프로세서 코어(SPE)를 식별하여 보안되는 프로그램을 실행한다.
보안되는 프로그램을 실행하기 위해 사용될 SPE가 식별된 후, 운영 시스템은 식별된 SPE 상에 보안 로더를 로딩한다(단계 225). 일 실시예에서, 운영 시스템은 식별된 SPE를 설정하는 레지스터 데이터를 격리 모드로 설정한다. 이 실시예에서, SPE가 격리 모드로 설정되면, 보안 로더는 판독 전용 메모리로부터 자동적으로 로딩되고 식별된 SPE를 실행한다. 단계(230)에서, 운영 시스템은 보안 로더가 격리된 SPE 상에 로딩할 보안되는 프로그램의 식별자를 제공한다. 일 실시예에서, 식별자는 식별되는 SPE에 대응하는 메일 박스로 기록된다. 이 실시예에서, 보안 로더가 개시될 때 식별자에 대한 메일 박스를 폴링(poll)할 것이다. 단계(240)에서, 보안되는 프로그램을 로딩하라는 요청을 프로세싱하는 운영 시스템 기능이 종료된 다.
식별되는 SPE 상에서 발생하는 프로세싱으로 전환하면, 프로세싱은 (250)에서 시작하며, 단계(255)에서 보안 로더가 판독 전용 메모리로부터 로딩되어 개시된다. 단계(260)에서, 보안 로더는 로딩할 프로그램의 식별자를 검색한다. 전술한 바와 같이, 일 실시예에서 식별자는 보안되는 프로그램 식별자가 수신될 때까지 메일 박스를 폴링하는 보안 로더를 갖는 메일 박스로부터 검색된다. 이것이 보안되는 프로그램의 첫 번째 호출(invocation)인지에 대해 판단한다. 보안되는 프로그램이 복원되지 않고 대신 첫 번째로 SPE 상에서 로딩되는 경우, 결정(265)은 "예" 분기(268)로 진행하고, 단계(270)에서, 로더는 보안되는 프로그램의 초기 로딩을 수행하며, 단계(275)에서, 로더는 보안되는 프로그램의 진입점으로 프로그램 카운터를 설정한다. 한편, 보안되는 프로그램이 이전에 SPE 상에서 실행 중이었고 중단되었으며 이제 복원되는 경우, 결정(265)은 "아니오" 분기(278)로 진행하며 보안되는 프로그램이 복원되고(사정 정의되는 프로세스(280), 복원 프로세싱 세부 사항에 대해서는 도 8 내지 12 및 해당 텍스트 참조), 단계(285)에서 보안 로더는 프로그램 카운터를 인스트럭션으로 설정하는데, 보안되는 프로그램이 운영 시스템에 의해 중단된다.
단계(290)에서, (초기에 로딩되거나 복원된) 보안되는 프로그램은 중단되거나 완료될 때까지 보안 로더에 의해 설정되는 프로그램 카운터로부터 실행된다. 보안되는 프로그램이 중단된 경우, 보안 로더는 (295)를 종료하기 전에 보안되는 프로그램의 콘텍스트를 보안적으로 저장한다.
도 3은 특수 목적 프로세서 코어 상에서 실행 중인 보안 프로그램을 중단하는 운영 시스템을 도시하는 흐름도이다. SPE(synergistic processing element)(150)는 특수 목적 프로세싱 코어이며 도 1에서 도입되었다. 도 3에서, SPE(150)는 보호되는 단계에서 보안되는 프로그램 코드(330)를 실행하고 있다. 보안되는 프로그램은 보안 프로그램 로더(170)에 의해 로딩되고, 저장되며, 복원되는데, 이는 또한 SPE의 보호되는 단계에서 실행된다. 보안 로더는 데이터 영역(DA)(310)을 포함하는데, 이 또한 보호되는 저장장치이며 저장 및 복원 동작을 위해 사용되는데, 보다 상세히 후술할 것이다.
SPE에 대한 프로세싱 단계는 (340)에서 시작한다. 유사하게, 범용 프로세서 코어(가령, 주요 프로세싱 요소 또는 "PPE") 상에서 실행 중인 운영 시스템에 의해 취해지는 단계가 (350)에서 시작한다. SPE 프로세싱의 단계(345)에서, 보안되는 프로그램(330)은 SPE 상에서 이미 실행 중이다. 한편, 운영 시스템 프로세싱의 단계(352)에서, 운영 시스템은 보안되는 프로그램 코드(330)를 실행하기 위해 현재 사용되고 있는 SPE를 사용하라는 요청을 수신한다. 단계(354)에서, 운영 시스템은 요청되는 SPE가 보안되는 프로그램을 현재 실행 중인지를 식별한다. 단계(356)에서, 운영 시스템은 SPE가 보안되는 프로그램의 콘텍스트를 저장하고 SPE의 제어를 해제하라고 요청하는 식별된 SPE로 중단을 송신하여 다른 프로세스가 SPE에 의해 실행될 수 있다.
SPE 프로세싱으로 돌아가서, 단계(358)에서, SPE는 보안되는 프로그램이 위치(메모리 어드레스)(331)에서 중단된다고 수신한다. 이 중단은 보안되는 프로그 램이 보안 로더로 분기하도록 한다. 그 후, 보안 로더는 보안되는 프로그램의 콘텍스트를 저장한다(사전 정의된 프로세스(360), 프로세싱 세부 사항에 대해서는 도 4 내지 7 및 해당 텍스트 참조). 보안 로더는 영구적 저장 레지스터에 보안 데이터를 저장한다. 전술한 바와 같이, 영구적 저장 레지스터는 격리 모드에서 실행 중인 프로그램에 대해 이용 가능하다. 보안 로더는 SPE가 격리 모드에 진입하면 자동적으로 로딩되므로, 보안 로더는 레지스터 및 레지스터에 저장되는 데이터로의 액세스를 효율적으로 제어할 수 있다. 단계(364)에서, 보안 로더가 보안되는 프로그램의 콘텍스트를 저장한 후, 보안 로더는 영구적 저장 레지스터를 제외한 SPE의 로컬 데이터 모두를 비우는 특수 SPE EXIT 명령을 발신한다. 단계(366)에서, SPE는 격리 모드로부터 빠져 나온다.
일 실시예에서, SPE 상에서 실행 중인 보안 로더는 하나의 보안되는 프로그램의 저장 및 복원을 관리한다. 운영 시스템 프로세싱으로 돌아가면, 이 실시예에서, 단계(362)에서 보안 로더가 보안되는 프로그램의 콘텍스트를 저장하였고 SPE가 이용 가능할 때 운영 시스템은 SPE로부터 신호를 수신한다. 이 실시예에서, 단계(368)에서, 운영 시스템은 격리 모드에서 동작하지 않는 두 번째 프로그램을 로딩한다. SPE 프로세싱으로 돌아가면, 단계(370)에서, 비-격리 모드 프로그램(보안되지 않는 프로그램(375))이 SPE에서 로딩되어 완료된다(즉, 작업되지 않는다). 운영 시스템 프로세싱으로 돌아가면, 단계(378)에서, 운영 시스템은 비-격리 모드 프로그램이 완료되었다는 신호를 수신하는데, 이 지점에서 운영 시스템은 보안되는 프로그램의 콘텍스트가 복원되게 하여 보안되는 프로그램이 실행을 계속할 수 있 다(사전 정의된 프로세스(382), 프로세싱 세부 사항에 대해서는 도 8-12 및 해당 텍스트 참조).
그 후, 보안되는 프로그램은 운영 시스템이 보안되는 프로그램을 중단할 필요가 있거나 보안되는 프로그램이 완료될 때까지 실행할 수 있다. SPE 프로세싱으로 돌아가면, 사전 정의된 프로세스(380)에서, 보안 로더는 보안되는 프로그램의 콘텍스트를 복원한다(프로세싱 세부 사항에 대해서는 도 8-12 및 해당 텍스트 참조). 다른 실시예에서, 도 5에 도시된 바와 같이, 보안 로더는 보안되는 프로그램의 콘텍스트와 함께 보안 로더의 콘텍스트를 저장함으로써 SPE 상에서 실행 중인 하나 이상의 보안되는 프로그램의 콘텍스트를 관리할 수 있다.
도 4는 보안되는 프로그램의 콘텍스트를 보안적으로 저장하기 위해 취해지는 단계를 도시하는 흐름도이다. 보안되는 프로그램의 콘텍스트를 저장하기 위한 도 4에 도시된 단계에 추가하여, 서명이 생성되어 프로그램의 콘텍스트와 함께 저장된다(프로세싱 세부 사항에 대해서는 도 13 및 해당 텍스트 참조). 프로세싱은 (400)에서 시작하는데, 단계(410)에서 보안 로더는 보안되는 프로그램이 중단된 메모리 어드레스를 검색한다. 일 실시예에서, 시스템은 보안 로더에 의해 검색된 레지스터에 최종 프로그램 카운터를 저장한다. 일 실시예에서, 영구적 저장 레지스터는 128 비트보다 작으므로 128 비트 암호화 키를 저장할 수 없다. 이 실시예에서, 정적 키가 사용되어 보안되는 프로그램의 콘텍스트를 암호화하고 고유 논스가 보안되는 프로그램의 콘텍스트에 포함된다. 이 실시예에서, 논스는 단계(415)에서 생성된다. 다른 실시예에서, 영구적 저장 레지스터는 적어도 128 비트 와이드이고 128 비트 암호화 키를 수용할 수 있다. 다른 실시예에서, 128 비트의 암호화 키가 단계(415)에서 생성된다. "영구적 보안 데이터"는 영구적 저장 레지스터에 저장되는 생성된 논스 또는 생성된 암호화 키를 지칭한다. 단계(420)에서, 메모리는 (암호화) 보안되는 프로그램의 콘텍스트가 저장될 공유 메모리에 할당된다.
루프는 (425)에서 시작하여 다양한 SPE 레지스터(180)를 통해 순환한다(loop). 각 레지스터가 보안 로더에 의해 필요한지를 판단한다(결정 440). 레지스터가 보안 로더에 의해 필요한 경우, 결정(440)은 "예" 분기(445)로 진행하는데, 단계(450)에서 레지스터 콘텐츠가 보안 로더의 데이터 영역(310)에 저장된다. 레지스터가 보안 로더에 의해 필요치 않는 경우, 결정(425)은 단계(450)를 뛰어넘어 "아니오" 분기(455)로 진행한다. 루프는 (460)에서 종료된다.
보안 로더에 의해 필요한 레지스터가 비워진(freed) 후, 보안 로더는 보안되는 프로그램의 콘텍스트를 암호화하고 공유 메모리 영역에 기록한다(사전 정의된 프로세스(470), 프로세싱 세부 사항에 대해서는 도 7 및 해당 텍스트 참조). 단계(475)에서, 영구적 보안 데이터(논스 또는 생성된 암호화 키)가 영구적 저장 레지스터(영구적 저장 레지스터(190)에 저장되는 보안 데이터(480))에 기록된다. 단계(490)에서, 보안 로더는 특수 하드웨어 EXIT 인스트럭션을 발신하는데, 이는 영구적 저장 레지스터에 저장되는 데이터를 제외한 모든 SPE 로컬 저장장치를 비운다. 그 후 프로세싱은 (495)에서 종료된다.
도 5는 보안 로더의 콘텍스트를 보안적으로 저장하기 위해 취해지는 단계를 도시하는 흐름도이다. 전술한 바와 같이 일 실시예에서 보안 로더는 다수의 보안 되는 프로그램의 콘텍스트를 관리한다. 이 실시예에서, 보안되는 프로그램의 콘텍스트가 저장된 후, 보안 로더의 콘텍스트가 저장된다. 보안되는 로더의 콘텍스트를 저장하는 도 5에 도시된 단계에 추가하여, 서명이 생성되어 로더의 콘텍스트와 함께 저장된다(프로세싱 세부 사항에 대해서는 도 13 및 해당 텍스트 참조). 프로세싱은 (500)에서 시작하는데, 단계(510)에서 보안 로더는 (암호화) 보안 로더의 콘텍스트가 저장될 공유 메모리 영역을 할당한다. 역시 전술한 바와 같이, 일 실시예에서, 영구적 저장 레지스터는 128 비트 와이드보다 작으므로 128 비트 암호화 키를 저장할 수 없다. 이 실시예에서, 단계(525)에서, 암호화 보안 로더의 콘텍스트와 함께 저장되며 영구적 저장 레지스터에도 저장될 논스가 생성된다. 영구적 저장 레지스터가 적어도 128 비트 와이드인 다른 실시예에서, 단계(525)에서 암호화 키가 생성된다. 전술한 바와 같이, 용어 "영구적 보안 데이터"는 생성되어 영구적 저장 레지스터에 저장되는 논스 또는 암호화 키를 지칭한다. 단계(530)에서, 영구적 보안 데이터(논스 또는 암호화 키)가 영구적 저장 레지스터에 저장된다. 논스가 사용되는 경우, 단계(535)에서, 논스는 (보안 로더에 인코딩되는) 정적 암호화 키를 사용하여 암호화되고 개방 공간(165)의 사전 설정된 위치에 기록되며, 단계(540)에서, 암호화된 논스는 DMA(direct memory access) 명령을 사용하여 할당된 메모리 영역에 기록된다.
루프는 (560)에서 시작되어 보안 로더의 데이터 영역을 통해 순환한다. 보안 로더의 데이터 영역(310)은 로더의 콘텍스트(550)를 포함한다. 보안 로더의 콘텍스트는 프로그램 식별자, 프로그램 카운터 및 보안되는 프로그램에 의해 관리되 는 각 보안되는 프로그램에 대응하는 암호화 키를 포함한다. 프로그램 식별자는 보안되는 프로그램에 대한 핸들 또는 프로그램 이름과 같은 고유 식별자 및 보안되는 프로그램의 암호화 콘텍스트가 공유 메모리에 저장되는 어드레스를 포함한다. 프로그램 카운터(PC)는 보안되는 프로그램이 중단된 보안되는 프로그램의 메모리 어드레스 위치이다. 암호화 키(Key)는 보안되는 프로그램의 콘텍스트를 암호화하는 데에 사용된 고유 암호화 키이다. 루프 내에서, 보안 로더에 의해 관리되고 있는 각 보안되는 프로그램(가령, 로더 콘텍스트(550)의 각 라인)에 있어서, 라인은 단계(570)에서 암호화되고 개방 공간(165)의 사전 설정된 위치에 기록된다. 단계(575)에서, 암호화 라인은 공유 메모리(130)에 저장되는 로더 콘텍스트(520)를 암호화하라는 DMA 명령을 사용하여 기록된다. 암호화 로더 콘텍스트는 암호화 논스(하나가 사용되고 있는 경우), 프로그램 식별자(핸들 및 어드레스), 프로그램 카운터 및 보안 로더에 의해 관리되고 있는 프로그램 각각에 대응하는 암호화 키를 포함한다. (580)에서 루프가 종료된다. 보안 로더의 콘텍스트가 암호화된 후 공유 메모리에 기록될 때, 프로세싱은 (595)에서 종료된다.
도 6은 보안 로더가 다수의 보안되는 프로그램을 관리할 때 프로그램의 콘텍스트를 보안적으로 저장하기 위해 취해지는 단계를 도시하는 흐름도이다. 보안되는 프로그램의 콘텍스트를 저장하는 도 6에 도시된 단계에 추가하여, 서명이 생성되어 프로그램의 콘텍스트와 함께 저장된다(프로세싱 세부 사항에 대해서는 도 13 및 해당 텍스트 참조). 프로세싱은 보안되는 프로그램이 중단되고 보안 로더로 분기된 후에 (600)에서 시작한다. 단계(610)에서, 보안 로더는 보안되는 프로그램이 중단되고 어드레스(PC)를 사용하여 보안 로더의 콘텍스트(550)를 갱신하는 메모리 어드레스를 검색한다. 단계(620)에서, 보안 로더는 새로운 암호화 키를 생성한다. 이 암호화 키는 영구적 저장 레지스터에 저장되지 않으며, 영구적 저장 레지스터의 크기와 무관하게 논스가 사용되지 않는다. 단계(630)에서, 보안 로더의 콘텍스트(550)는 생성된 암호 키를 포함하도록 갱신된다. 단계(640)에서, 보안 로더는 보안되는 프로그램의 암호화 콘텍스트를 저장하기 위해 공유 메모리 영역에 메모리를 할당한다. 단계(645)에서, 보안 로더의 콘텍스트(550)가 갱신되어 보안되는 프로그램의 식별자(보안되는 프로그램의 고유 식별자 및 공유 메모리에 암호화 콘텍스트를 저장하기 위해 할당된 메모리의 시작 어드레스)를 포함한다.
루프는 (650)에서 시작하여 다양한 SPE 레지스터(180)를 통해 순환한다. 각 레지스터가 보안 로더에 의해 필요한지를 판단한다(결정 660). 레지스터가 보안 로더에 의해 필요한 경우, 결정(660)은 "예" 분기(665)로 진행하고, 단계(670)에서 레지스터 콘텐츠가 보안 로더의 데이터 영역(310)에 저장된다. 레지스터가 보안 로더에 의해 필요하지 않은 경우, 결정(660)은 단계(670)를 건너뛰어 "아니오" 분기(675)로 진행한다. 루프는 (680)에서 종료된다.
보안 로더에 의해 필요한 레지스터가 비워진 후, 보안 로더는 보안되는 프로그램의 콘텍스트를 암호화하고 공유 메모리 영역에 기록한다(사전 정의된 프로세스(685), 프로세싱 세부 사항에 대해서는 도 7 및 해당 텍스트 참조). 보안되는 프로그램의 콘텍스트가 저장된 후, 보안 로더의 콘텍스트(550)가 저장된다(사전 정의된 프로세스(690), 프로세싱 세부 사항에 대해서는 도 5 및 해당 텍스트 참조). 그 후, 프로세싱은 (695)에서 종료된다.
도 7은 격리된 특수 목적 프로세서(SPE)로부터의 콘텍스트를 공유 메모리에 보안적으로 기록하기 위해 취해지는 단계를 도시하는 흐름도이다. 콘텍스트 데이터를 보안적으로 기록하는 도 7에 도시된 단계에 추가하여, 서명이 생성되어 데이터와 함께 공유 메모리에 기록된다(프로세싱 세부 사항에 대해서는 도 13 및 해당 텍스트 참조). 프로세싱은 (700)에서 시작하여 루프는 (710)에서 시작되어 개방 공간을 통해 순환한다. 개방 공간은 보호되지 않는 저장 장치이므로, 개방 공간(165)의 데이터는 공유 메모리(130)에 기록하기 전에 암호화되지 않는다(암호화되지 않은 데이터 영역(138)). 루프 내에서, 단계(720)에서 개방 공간의 각 라인은 DMA 명령을 사용하여 공유 메모리(130)의 암호화되지 않은 데이터 영역(138)에 기록된다. 루프는 (725)에서 종료된다.
다른 루프는 (730)에서 시작하여 보호되는 저장 라인을 통해 순환하는데, 보안되는 프로그램 및 그 데이터(175)가 현재 저장된다. 이 데이터는 보호되는 저장장치에 존재하므로, 이들은 공유 메모리에 기록되기 전에 암호화된다. 일 실시예에서, 공유 메모리에 기록되는 데이터를 암호화하기 위해 사용되는 암호화 키는 보안 로더에 인코딩되는 정적 키인 반면, 다른 실시예에서는 암호화 키는 보안되는 프로그램의 콘텍스트가 공유 메모리(130)에 기록될 때마다 동적으로 생성된다. 루프 내에서, 단계(740)에서, 각 라인은 암호화되어 개방 공간(165) 내의 사전 결정된 위치에 기록된다. 단계(750)에서, 암호화 라인은 사전 결정된 위치로부터 공유 메모리(130)의 암호화 콘텍스트 메모리 영역(135)으로 DMA 명령을 사용하여 기록된 다. 그 후, 두 번째 루프는 (760)에서 종료된다.
세 번째 루프는 (770)에서 시작하여 SPE 레지스터를 통해 순환한다. 이 루프 내에서, 단계(775)에서, 보안되는 프로그램에 의해 설정된 값이 검색된다. 레지스터가 보안 로더에 의해 사용되고 있는 경우, 보안 로더는 이전에 레지스터 값을 보안 로더의 데이터 영역에 저장하였고 이 레지스터 값이 보안 로더 데이터 영역(310)으로부터 검색된다. 그렇지 않은 경우, 레지스터 값은 SPE 레지스터(180)로부터 검색된다. 단계(780)에서, 각 레지스터 값은 암호화되어 개방 공간(165)의 사전 설정된 위치에 기록된다. 레지스터 값은 두 번째 루프의 보안되는 프로그램 코드 및 데이터를 암호화하기 위해 사용되는 동일한 암호화 키를 사용하여 암호화될 수 있다. 단계(785)에서, 암호화 라인은 DMA 명령을 사용하여 사전 설정된 위치로부터 공유 메모리(130)의 암호화 콘텍스트 메모리 영역(135)으로 기록된다. 그 후, 세 번째 루프는 (790)에서 종료되고, 프로세싱은 (795)의 호출 루틴으로 복귀한다.
도 8은 프로그램이 특수 목적 프로세서 코어 상에 저장될 것을 요청하는 운영 시스템을 도시하는 흐름도이다. 도 8에 도시된 복원 단계에 추가하여, 복원되는 데이터에 기초하여 서명 결과가 생성되고 이 결과는 이전에 저장된 서명 결과에 비교된다(프로세싱 세부 사항에 대해서는 도 14 및 해당 텍스트 참조). 서명이 일치하는 경우, 복원된 콘텍스트가 실행되고, 그렇지 않은 경우, SPE는 복원된 콘텍스트를 실행하지 않고 에러로 빠져 나온다. 도시된 운영 시스템 프로세싱은 (800)에서 시작하는데, 단계(805)에서, 운영 시스템은 SPE 상에 복원되어야 하는 보안되 는 프로그램의 식별자를 검색한다. 단계(810)에서, SPE는 격리 모드에서 시작된다. 단계(815)에서, 보안되는 프로그램 식별자 및 어드레스는 운영 시스템에 의해 공유 메모리의 한 영역에 기록되며, 단계(820)에서, 보안되는 프로그램 식별자 및 어드레스가 저장되는 공유 메모리의 어드레스(포인터(830))가 SPE의 메일 박스(155)에 기록된다.
SPE 프로세싱은 (850)에서 시작하며, (855)에서 SPE는 격리 모드에서 시작된다. 단계(870)에서 보안 로더는 정적 보안 로더 코드(865)를 사용하여 메모리 영역(860)으로부터 SPE로 자동적으로 로딩되고, 영구적 보안 데이터(480)는 영구적 저장 레지스터(190)로부터 검색된다. 일 실시예에서, 보안 로더는 다수의 보안되는 프로그램의 콘텍스트를 관리할 수 있으며, 보안 로더의 콘텍스트는 암호화 보안 로더 콘텍스트(520)로부터 복원된다(보안 로더의 콘텍스트를 복원하는 것에 관한 프로세싱 세부 사항에 대해서는 도 9 및 해당 텍스트 참조). 이 실시예에서, 영구적 보안 데이터가 사용되어 보안 로더의 콘텍스트를 해독한다. 다른 실시예에서, 영구적 보안 데이터가 사용되어 보안되는 프로그램을 해독한다. 단계(875)에서, 보안 로더는 SPE 메일 박스를 폴링하고 보안되는 프로그램을 복원하라는 요청을 수신한다. 단계(880)에서, 보안 로더는 SPE 메일 박스에 저장되는 포인터(830)를 사용하여 공유 메모리(820)를 어드레싱하는데, 여기서 운영 시스템은 보안되는 프로그램의 식별자 및 보안되는 프로그램의 암호화 콘텍스트가 공유 메모리에 저장되는 어드레스를 저장하였다. 그 후, 보안되는 프로그램은 공유 메모리로부터 복원된다(사전 정의된 프로세스(890), 프로세싱 세부 사항에 대해서는 도 10-12 및 해당 텍스트 참조).
도 9는 공유 메모리로부터 보안 로더의 콘텍스트를 보안적으로 복원하기 위해 취해지는 단계를 도시하는 흐름도이다. 도 9에 도시된 복원 단계에 추가하여, 복원되는 데이터에 기초하여 서명 결과가 생성되고, 이 결과는 이전에 저장된 서명 결과에 비교된다(프로세싱 세부 사항에 대해서는 도 14 및 해당 텍스트 참조). 서명이 일치하는 경우, 복원된 콘텍스트가 실행되고, 그렇지 않은 경우 SPE는 복원된 콘텍스트를 실행하지 않고 에러로 빠져 나온다. 프로세싱은 (900)에서 시작하며, 단계(910)에서 보안 로더는 SPE에서 로딩되며 프로세싱을 개시한다. 일 실시예에서, 보안 로더는 판독 전용 메모리에 저장되는 보안 로더의 정적 카피로부터 로딩된다. 일 실시예에서, 보안 로더의 콘텍스트는 보안 로더의 코드에 인코딩되는 정적 암호화 키로 암호화된다. 이 실시예에서, 논스는 보안 로더가 저장될 때 암호화되어 보안 로더의 암호화 콘텍스트에 기록된다. 보안 로더는 DMA 명령을 사용하여 공유 메모리로부터 (논스를 포함하는) 암호화 콘텍스트의 첫 번째 라인을 판독하고, 개방 공간(165)의 사전 설정된 위치에 암호화 라인을 저장한다. 단계(925)에서, 보안 로더에서 인코딩되는 정적 암호화 키가 논스를 보여주는 사전 설정된 위치에 저장되는 라인을 해독하는 데에 사용된다. 단계(925)에서, 해독된 논스는 영구적 저장 레지스터(190)에 저장된 논스(영구적 보안 데이터(480))와 비교된다. 논스가 동일한지를 판단한다(결정 930). (누군가가 보안 로더의 콘텍스트를 변경하려 했음을 표시하며) 논스가 동일하지 않은 경우, 결정(930)은 "아니오" 분기(935)로 진행하고 프로세싱은 (940)에서 에러로 종료된다. 한편, 논스가 동일한 경우, 결정(930)은 "예" 분기(945)로 진행하고 프로세싱은 계속된다.
다른 실시예에서, 영구적 저장 레지스터는 적어도 128 비트를 저장할 만큼 크다. 이 실시예에서, 보안 로더의 콘텍스트는 랜덤으로 생성되는 키(영구적 보안 데이터(490))를 사용하여 암호화되었다. 이 키는 영구적 저장 레지스터에 저장되며 보안 로더의 콘텍스트는 영구적 저장 레지스터로부터 영구적 보안 데이터(랜덤으로 생성되는 암호화 키)를 검색함으로써 해독된다. 이 실시예에서, 논스는 사용되지 않으므로 단계(920 내지 945)는 수행되지 않는다.
도 9를 참조하면, 단계(950)에서 보안 로더의 콘텍스트를 포함하는 제 1 라인이 공유 메모리(130)에 저장되는 암호화 로더 콘텍스트(140)로부터 DMA 명령을 사용하여 SPE 내의 개방 공간(165)의 사전 설정된 위치로 판독된다. 보안 로더 콘텍스트의 각 라인은 보안 로더에 의해 관리되는 보안되는 프로그램 중 하나에 관한 데이터를 포함한다. 이 데이터는 보안되는 프로그램의 콘텍스트를 암호화하기 위해 사용되는 암호화 키, 보안되는 프로그램에 대응하는 프로그램 식별자(이름, 핸들 등 및 어드레스) 및 보안되는 프로그래밍 중단된 어드레스를 갖는 프로그램 카운터를 포함한다. 단계(960)에서, 개방 공간(165)의 사전 설정된 위치에 기록된 암호화 라인은 암호화 키(정적 키 또는 랜덤으로 생성되는 키)를 사용하여 해독된다. 보안 로더에 의해 관리되고 있는 보안되는 프로그램 콘텍스트가 더 존재하는지를 판단한다(결정 970). 관리되고 있는 보안되는 프로그램 콘텍스트가 더 존재하는 경우, 결정(970)은 암호화 로더 콘텍스트(140)로부터 다음 암호화 라인을 판독하고 이 콘텍스트를 해독하기 위해 루프로 귀환하는 "예" 분기(975)로 진행한다. 이 루핑은, 판독할 보안되는 프로그램 콘텍스트가 더 이상 존재하지 않을 때까지 계속되는데, 여기서 결정(970)은 "아니오" 분기(980)로 진행하며, 사전 정의된 프로세스(990)에서, 보안되는 프로그램 중 하나(운영 시스템에 의해 요청되는 것)가 복원된다(프로세싱 세부 사항에 대해서는 도 10 및 대응하는 텍스트 참조). 그 후 프로세싱은 (995)에서 종료된다.
도 10은 다수의 보안되는 프로그램을 관리하고 있는 보안 로더를 사용하여 프로그램의 콘텍스트를 복원하기 위해 취해지는 단계를 도시하는 흐름도이다. 도 10에 도시된 복원 단계에 추가하여, 복원되고 있는 데이터에 기초하여 서명 결과가 생성되는데, 이 결과는 이전에 저장된 서명 결과에 비교된다(프로세싱 세부 사항에 대해서는 도 14 및 대응하는 텍스트 참조). 서명이 일치하는 경우, 복원되는 콘텍스트가 실행되고, 그렇지 않은 경우, SPE는 복원된 콘텍스트를 실행하지 않고 에러로 빠져 나온다.
프로세싱은 (1000)에서 시작하는데, 단계(1010)에서, 보안 로더는 운영 시스템(105)이 SPE 메일 박스(155)를 복원하기를 요청하는 프로그램의 식별자를 검색한다. 일 실시예에서, 포인터는 운영 시스템(105)에 의해 메일 박스(155)로 기록되었고, 보안 로더는 이 포인터에 의해 참조되는 공유 메모리 위치로부터 보안되는 프로그램의 식별자를 검색한다. 단계(1020)에서, 보안 로더는 보안 로더의 콘텍스트(310)의 보안 프로그램에 대응하는 데이터의 위치를 파악한다. 로더의 콘텍스트는 보안되는 프로그램의 식별자(이름 또는 핸드와 같은 고유 식별자 및 보안되는 프로그램의 암호화 콘텍스트가 공유 메모리에 저장되는 어드레스), 보안되는 프로 그램의 암호화 콘텍스트를 암호화하기 위해 사용된 암호화 키 및 보안되는 프로그램이 중단된 프로그램 카운터를 포함한다.
단계(1025)에서, 보안 로더는 공유 메모리에 기록되었을 때 요청되는 보안되는 프로그램의 콘텍스트를 암호화하기 위해 사용된 암호화 키를 검색한다. 검색된 암호화 키는 공유 메모리로부터의 요청된 보안되는 프로그램의 콘텍스트를 검색하고 SPE 상의 보안되는 프로그램을 복원하기 위해 사용된다(사전 정의된 프로세스(1030), 프로세싱 세부 사항에 대해서는 도 11 및 해당 텍스트 참조). 보안되는 프로그램이 복원된 후, 이는 운영 시스템에 의해 중단되거나 완료(1040)될 때까지 SPE 상에서 실행된다. 보안되는 프로그램이 중단되거나 완료되는지를 판단한다(결정 1050). 프로그램이 중단되면, 결정(1050)은 "예" 분기(1055)로 진행하는데, 보안되는 프로그램의 콘텍스트가 새로운 생성된 키를 사용하여 저장되고(프로세싱 세부 사항에 대해서는 도 4 및 해당 텍스트 참조) (보안되는 프로그램에 대응하는 새로운 데이터로 갱신된) 보안 로더의 콘텍스트는 사전 정의된 프로세스(1080)에 저장된다(프로세싱 세부 사항에 대해서는 도 5 및 해당 텍스트 참조). 보안되는 프로그램이 완료될 때까지 실행되는 경우, 결정(1050)은 "아니오" 분기(1065)로 진행하고, 단계(1070)에서 보안되는 프로그램에 대응하는 데이터는 보안 로더의 콘텍스트(310)로부터 삭제된다. 그 후, 보안 로더의 콘텍스트가 이제 비어 있는지를 판단하는데, 보안 로더가 SPE 상의 임의의 보안되는 프로그램을 더 이상 관리하지 않는다는 것을 표시한다(결정 1075). 보안 로더의 콘텍스트가 비어 있지 않은 경우, 결정(1075)은 "아니오" 분기(1076)로 진행하는데, 보안 로더의 콘텍스트가 사전 정 의된 프로세스(1080)에 저장된다(프로세싱 세부 사항에 대해서는 도 5 및 해당 텍스트 참조). 한편, 보안 로더의 콘텍스트가 비어 있는 경우, 결정(1075)은 사전 정의된 프로세스(1080)를 건너뛰고 "예" 분기(1078)로 진행한다.
보안 로더가 완료되기 전에, 단계(1090)에서, 보안 로더는 하드웨어 EXIT 인스트럭션을 발신한다. EXIT 인스트럭션은 영구적 저장 레지스터에 저장되는 데이터를 제외한 SPE의 로컬 저장 장치에 저장되는 모든 데이터를 지운다. 그 후, 보안 로더는 (1095)에서 종료된다.
도 11은 공유 메모리로부터 암호화 콘텍스트 데이터를 판독하고 격리 모드에서 실행되는 특수 목적 프로세서 코어로 데이터를 복원하는 보안 로더의 세부 사항을 도시하는 흐름도이다. 도 11에서 수행되는 판독에 추가하여, 공유 메모리로부터 판독되는 암호화 데이터에 기초하여 서명 결과가 생성되고 이 결과는 이전에 저장된 서명 결과에 비교된다(프로세싱 세부 사항에 대해서는 도 14 및 해당 텍스트 참조). 서명이 일치하는 경우에는 복원된 콘텍스트가 실행되고, 그렇지 않은 경우에는 SPE는 복원된 콘텍스트를 실행하지 않고 에러로 빠져 나온다. 프로세싱은 (1100)에서 시작하는데, 암호화 콘텍스트(135)의 이미지 서명이 생성된 암호화 콘텍스트가 생성될 때 얻어진 서명과 일치하는지를 판단한다(결정 1101). 일 실시예에서, 서명이 이미지(즉, 논스가 사용되고 있는 경우에 논스를 포함하는 모든 저장될 데이터)에 기초하여 생성되는 경우, 이 서명은 이미지에 첨부되며 모든 것(이미지, 서명 등)이 암호화되고 저장된다. 다른 실시예에서, 이미지가 우선 암호화되고, 암호화 이미지에 기초하여 생성된 후 이미지에 서명이 첨부된다. 올바른 서명 은 올바른 키(암호화 키 또는 개별 인증 키와 동일할 수 있음)에 의해서만 생성될 수 있다. 이미지 서명이 일치하지 않는 경우(이미지가 변경되거나 손상되었음을 의미함), 결정(1101)은 "아니오" 분기(1102)로 진행하고, 보안 로더 프로세싱은 에러로 (1103)에서 빠져 나온다. 한편, 이미지 서명이 일치하는 경우, 결정(1101)은 "예" 분기로 진행하고 보안 로더 프로세싱은 계속된다.
보안되는 프로그램의 콘텍스트를 보안하기 위해 논스가 사용되고 있는지를 판단한다(결정 1105). 논스가 사용되고 있지 않는 경우, 결정(1105)은 단계(1110 내지 1125)를 건너 뛰고 "아니오" 분기(1128)로 진행한다. 한편, 논스가 사용되고 있는 경우, 결정(1105)은 "예" 분기(1108)로 진행하는데, 단계(1110)에서, 논스를 포함하는 암호화 콘텍스트(135)로부터의 라인은 DMA 명령을 사용하여 암호화 콘텍스트(135)로부터 개방 공간(165) 내의 사전 설정된 위치로 기록된다. 단계(1115)에서, 사전 설정된 위치에 기록된 논스는 보안 로더에서 인코딩되는 정적 키를 사용하여 해독되고 해독된 논스는 영구적 저장 레지스터(190)에 저장된 논스에 비교된다. 해독된 논스가 영구적 저장 레지스터에 저장된 논스와 동일한지를 판단한다(결정 1120). 논스가 동일하지 않는 경우(암호화 콘텍스트를 사용하여 누군가가 변경하였거나 응답 공격을 시도하고 있음을 의미함), 결정(1120)은 "아니오" 분기(1122)로 진행하여 보안 로더 프로세싱은 (1125)에서 에러로 빠져 나온다. 한편, 논스가 동일한 경우, 결정(1120)은 "예" 분기(1126)로 진행하고 보안 로더 프로세싱은 계속된다.
단계(1130)에서, 암호화 보안되는 프로그램 콘텍스트의 첫 번째 라인은 DMA 명령을 사용하여 공유 메모리(130)(암호화 콘텍스트(135)로부터 판독되고 개방 공간(165)의 사전 설정된 위치에 저장된다. 사전 설정된 위치에 기록되는 암호화 라인은 단계(1135)에서 해독된다. 일 실시예에서(논스가 사용됨), 라인은 보안 로더에서 인코딩되는 정적 키를 사용하여 해독된다. 다른 실시예에서(논스가 필요치 않음), 라인은 (보안 로더가 다수의 보안되는 프로그램을 관리할 수 있을 때) 영구적 저장 레지스터(190)에 저장되거나 보안 로더의 콘텍스트로부터 검색되는 랜덤적으로 생성되는 키를 사용하여 해독된다. 판독되거나 해독되어야 하는 보호되는 저장 라인이 더 존재하는지를 판단한다(결정 1140). 결정(1140)은 암호화 콘텍스트(135)의 모든 라인이 프로세싱될 때까지 암호화 콘텍스트(135)로부터 다음 라인을 프로세싱하기 위해 다시 순환하는 "예" 분기(1145)로 진행하는데, 이 지점에서 결정(1140)은 "아니오" 분기(1150)로 진행한다.
사전 정의된 프로세스(1160)에서, 중단되기 전에 보안되는 프로그램에 의해 설정된 레지스터 값이 SPE 레지스터로 복원된다(프로세싱 세부 사항에 대해서는 도 12 및 해당 텍스트 참조). 단계(1170)에서, 암호화되지 않은 데이터 라인은 공유 메모리(130)에 저장된 암호화되지 않은 데이터(138)로부터 판독되고 개방 공간(165)으로 복원된다. 복원된 개방 공간은 이제 보안되는 프로그램이 중단되기 전의 개방 공간처럼 보인다. 전술한 바와 같이, 개방 공간은 격리 모드와 공유 메모리에서 실행 중인 SPE 사이의 DMA 통신을 위해 사용된다. 이들 DMA 통신은 공유 메모리로부터의 데이터 및 이전 DMA 동작의 결과를 나타내는 복귀 코드 값을 포함한다. 단계(1180)에서, 보안되는 프로그램이 중단된 프로그램 카운터(PC)의 어드 레스가 검색된다. 보안 로더가 다수의 보안되는 프로그램의 콘텍스트를 관리하고 있는 경우, PC가 보안 로더의 콘텍스트로부터 검색된다. 보안 로더가 다수의 보안되는 프로그램의 콘텍스트를 관리하고 있지 않아서 보안 로더에 대한 콘텍스트가 이용 가능하지 않은 경우, PC는 복원된 레지스터 중 하나 또는 보안되는 프로그램의 암호화 콘텍스트에 기록되는 암호화 콘텍스트 라인으로부터 검색된다. 단계(1190)에서, 보안되는 프로그램의 프로그램 카운터가 리셋되고 보안되는 프로그램은 완료되거나 운영 시스템에 의해 중단될 때까지 인스트럭션 실행을 재개한다.
도 12는 복원되는 프로그램 콘텍스트에 대응하는 레지스터 값을 복원하기 위해 취해지는 단계를 도시하는 흐름도이다. 도 12에 도시된 레지스터 복원 단계에 추가하여, 복원되는 데이터에 기초하여 서명 결과가 생성되고 이 결과가 이전에 저장된 서명 결과에 비교된다(프로세싱 세부 사항에 대해서는 도 12 및 해당 텍스트 참조). 서명이 일치하는 경우에는 복원된 콘텍스트가 실행되고, 그렇지 않은 경우에는 SPE는 복원되는 콘텍스트를 실행하지 않고 에러로 빠져 나온다. 프로세싱은 (1200)에서 시작하는데, 단계(1210)에서, 암호화 레지스터 콘텍스트의 첫 번째 라인은 DMA 명령을 사용하여 공유 메모리(130)(암호화 프로그램 콘텍스트(135))로부터 판독되고 SPE의 개방 공간(165)의 사전 설정된 위치에 기록된다. 단계(1220)에서, 보안 로더는 사전 설정된 위치에 저장되는 라인을 해독하고 보안 로더의 데이터 영역(310)에 결과를 저장한다. 일 실시예에서, 보안 로더에서 인코딩되는 정적 키는 사전 설정된 위치에 기록되는 라인을 해독하기 위해 사용된다. 다른 실시예에서, 랜덤적으로 생성되고 데이터를 암호화하는 데에 사용된 키는 영구적 저장 레 지스터 또는 보안 로더의 콘텍스트로부터 검색되고, 이 키는 사전 설정된 위치에 기록된 데이터를 해독하기 위해 사용된다. 보안 로더에 의해 레지스터가 사용되는지를 판단한다(결정 1230). 레지스터가 보안 로더에 의해 사용되는 경우, 결정(1230)은 "예" 분기(11235)로 진행하는데, 단계(1240)에서 이 값은 보안 로더의 데이터 영역(310) 내의 임시 레지스터 저장 위치에 기록된다. 한편, 레지스터가 보안 로더에 의해 사용되지 않는 경우, 결정(1230)은 "아니오" 분기(1245)로 진행하고, 단계(1250)에서 레지스터(SPE 레지스터(180))는 사전 설정된 위치로부터 해독된 결과로 로딩된다.
이것이 프로세싱할 최종 레지스터인지를 판단한다(결정 1260). 최종 레지스터가 아닌 경우, 결정(1260)은 DMA로 다시 순환하고 레지스터 콘텍스트의 다음 암호화 라인을 프로세싱하는 "아니오" 분기(1265)로 진행한다. 이 순환은 최종 레지스터가 프로세싱될 때까지 계속되는데, 이 시점에서 결정(1260)은 "예" 분기(1270)로 진행한다.
단계(1280)에서, 보안 로더에 의해 사용되고 있었던 레지스터가 클리어링된다. 일 실시예에서, 이는 보안되는 프로그램에 의한 사용을 위해 이용 가능한 영구적 저장 레지스터를 클리어링하는 것을 포함한다. 단계(1290)에서, 보안 로더의 데이터 영역의 임시 레지스터 저장장치에 기록된 임의의 레지스터 값이 각 레지스터에 기록된다(SPE 레지스터(180)). 그 후 프로세싱은 (1295)에서 종료된다.
도 13은 보안되는 프로그램 또는 보안 로더의 콘텍스트를 저장하면서 서명을 생성하기 위해 취해지는 단계를 도시하는 흐름도이다. 다른 도면을 참조하여 전술 한 바와 같이, 도 13에 도시된 단계는 다양한 콘텍스트 데이터(가령, 보안되는 프로그램 콘텍스트, 보안 로더 콘텍스트, 레지스터 콘텍스트 등)를 저장하는 다른 프로세스와 함께 수행된다. 프로세싱은 (1300)에서 시작하는데, 단계(1310)에서 서명 결과가 초기화된다. 단계(1320)에서, 저장되어 있는 첫 번째 데이터가 암호화된다. 이 데이터는 어떤 콘텍스트가 저장되어 있는지에 다라서 SPE 메모리, 레지스터 등으로부터의 데이터 라인일 수 있다. 단계(1330)에서, 암호화 데이터는 서명 결과를 갱신하는 서명 생성 누적 함수에 입력된다. 단계(1340)에서, 암호화 데이터는 암호화 데이터(1350)(가령, 보안되는 프로그램(135)의 암호화 콘텍스트, 보안 로더(140)의 암호화 콘텍스트 등)로서 공유 메모리(130)에 기록된다. 공유 메모리(130)에 암호화되고 기록될 데이터가 더 있는지를 판단한다(결정 1360). 기록될 데이터가 더 있는 경우, 결정(1360)은 다음 데이터를 암호화하고, 서명 누적 함수를 통해 다음 암호화 데이터를 실행하고, 공유 메모리에 다음 암호화 데이터를 기록하기 위해 다시 순환하는 "예" 분기(1365)로 진행한다. 이 순환은 기록될 데이터가 더 이상 없을 때까지 계속되는데, 이 지점에서 결정(1360)은 "아니오" 분기(1370)로 진행한다.
모든 데이터가 공유 메모리(130)에 암호화되고 기록된 후, 단계(1375)에서, 최종 서명 결과가 암호화된다. 단계(1380)에서, 암호화된 최종 서명 결과는 암호화된 최종 서명 결과(1390)로서 공유 메모리에 기록된다. 그 후 서명 생성 프로세싱은 (1375)에서 종료된다.
도 14는 보안되는 프로그램 또는 보안 로더의 콘텍스트를 복원하고 생성된 서명을 콘텍스트가 저장될 때 저장된 서명과 비교하면서 서명을 생성하기 위해 취해진 단계를 도시하는 흐름도이다. 다른 도면을 참조하여 전술한 바와 같이, 도 14에 도시된 단계는 다양한 콘텍스트 데이터(가령, 보안되는 프로그램 콘텍스트, 보안 로더 콘텍스트, 레지스터 콘텍스트 등)를 복원하는 다른 프로세스와 함께 수행된다. 서명 검증 프로세싱은 (1400)에서 시작하는데, 단계(1410)에서, 서명 결과가 초기화된다. 단계(1420)에서, 공유 메모리(130)에 저장되는 암호화 데이터 스토어(1350)로부터 첫 번째 암호화 데이터가 판독된다. 이 데이터는 어떤 콘텍스트가 복원되는지에 따라 SPE 메모리, 레지스터 등으로부터의 데이터 라인일 수 있다. 단계(1430)에서, 단계(1420)에서 판독된 암호화 데이터는 서명 결과를 갱신하는 서명 생성 누적 함수로 입력된다. 단계(1430)에서 사용되는 누적 함수는 도 13에 도시된 단계(1330)에서 사용된 동일한 누적 함수이다. 도 14를 참조하면, 단계(1440)에서, 해독된 데이터는 (복원되는 데이터 유형에 따라 가령, SPR 메모리, SPE 레지스터 위치, 등) SPE에 저장된다. 암호화 데이터(1350)로부터 판독될 데이터가 더 있는지를 판단한다(결정 1450). 프로세싱할 데이터가 더 있는 경우, 결정(1450)은 다음 데이터를 판독하고, (서명 결과를 추가 갱신하는) 누적 함수를 통해 다음 데이터를 실행하며, SPE에 데이터를 저장하기 위해 다시 순환하는 "예" 분기(1455)로 진행한다. 이 순환은 암호화 데이터(1350)로부터 모든 암호화 데이터가 판독되고 프로세싱될 때까지 계속되는데, 이 시점에서 결정(1460)은 "아니오" 분기로 진행한다.
모든 암호화 데이터가 판독되고 프로세싱된 후, 단계(1470)에서, 저장된 서 명 결과(1390)가 공유 메모리(130)로부터 판독되고 저장된 서명 결과가 해독된다. 단계(1475)에서, 단계(1430)에서 생성된 서명 결과는 단계(1470)의 해독되고 저장된 서명 결과와 비교된다. 서명이 일치하는지를 판단한다(결정 1485). 서명이 일치하는 경우, 결정(1485)은 "예" 분기(1488)로 진행하는데, 복원된 콘텍스트가 SPE 상에서 실행된다. 한편, 서명이 일치하지 않는 경우(암호화 콘텍스트 데이터(1350)의 변경이 가능함을 의미함), 결정(1485)은 "아니오" 분기로 진행하는데, 복원 프로세싱은 복원된 콘텍스트를 실행하지 않고 에러로 종료된다. 일 실시예에서, SPE EXIT 기능은 SPE가 에러로 빠져 나올 때 수행된다(영구적 저장 레지스터에 저장된 데이터를 제외한 로컬 데이터를 제거함).
도 15는 메인 프로세서(범용 프로세서 코어) 및 공유 시스템 메모리를 각각 공유하는 복수의 보조 프로세서(특수 목적 프로세서 코어)를 갖는 프로세싱 요소(이종 프로세서)를 도시하는 블록도이다. 도 15는 본 발명을 구현하는 데에 사용될 수 있는 이종 프로세서를 도시하고 있다. 주요 프로세서 요소(PPE)(1505)는 프로세싱 유닛(PU)(1510)을 포함하는데, 이는 일 실시예에서 메인 프로세서로서 기능하며 운영 시스템을 실행하는 범용 프로세서 코어이다. 프로세싱 유닛(1510)은 예를 들어 Linux®운영 시스템을 실행하는 IBM®Power®코어일 수 있다. 또한, PPE(1505)는 SPE(1545, 1565 및 1585)와 같은 복수의 SPE(sunergistic processing elements)를 포함한다. SPE는 PU(1510), 메모리 저장 유닛 및 로컬 저장장치에 대한 보조 프로세싱 유닛으로서 기능하는 특수 목적 프로세서 코어인 SPU(synergistic processing units)을 포함한다. 예를 들어, SPE(1545)는 SPU(1560), MMU(1555) 및 로컬 저장장치(1559)를 포함하고, SPE(1565)는 SPU(1570), MMU(1575) 및 로컬 저장장치(1579)를 포함하며, SPE(1585)는 SPU(1590), MMU(1595) 및 로컬 저장장치(1599)를 포함한다. (IBM 및 PowerPC는 미국, 다른 국가 또는 양자에 International Business Machines Corporation의 등록된 상표이며, Linux는 미국, 다른 국가 또는 양자에 Linux Torvalds의 등록된 상표이다).
모든 APC는 동일한 ISA를 사용할 수 있거나 각각 애플리케이션 특정 ISA를 구현할 수 있다. 각 APC는 상이한 작업을 수행하도록 구성될 수 있어서, 일 실시예에서 각 APC는 상이한 인스트럭션 세트를 사용하여 액세스될 수 있다. PPE(1505)가 무선 통신 시스템에서 사용되는 경우, 예를 들어, 각 APC는 이러한 변조, 칩 레이트 프로세싱, 인코딩, 네트워크 인터페이싱 등과 같은 개별 프로세싱 작업을 수행할 수 있다. 다른 실시예에서, APC는 동일한 인스트럭션 세트를 가질 수 있으며 병렬 프로세싱으로부터 이점을 취하는 연산을 수행하기 위해 서로에 대해 병렬로 사용될 수 있다.
또한, PPE(1505)는 PU(1510)의 사용을 위해 L2 캐시(1515)와 같은 레벨 2 캐시를 포함할 수 있다. 또한, PPE(1505)는 시스템 메모리(1520)를 포함하는데, 이는 PU(1510)와 SPU 사이에서 공유된다. 시스템 메모리(1520)는, 예를 들어, 실행 중 운영 시스템(커널을 포함할 수 있음), 장치 구동기, I/O 구성 등의 이미지, 실행하는 애플리케이션 및 기타 데이터를 저장할 수 있다. 시스템 메모리(1520)는 APC 중 하나 이상의 로컬 저장 유닛을 포함하는데, 이는 시스템 메모리(1520)의 영역으로 맵핑된다. 예를 들어, 로컬 저장장치(1559)는 맵핑된 영역(1535)으로 맵핑될 수 있고, 로컬 저장장치(1579)는 맵핑된 영역(1540)으로 맵핑될 수 있으며, 로컬 저장장치(1599)는 맵핑된 영역(1542)으로 맵핑될 수 있다. MPU(1510) 및 APC는 서로 통신하고 버스(1517)를 통한 시스템 메모리(1520)는 이들 장치들 사이의 데이터를 전달하도록 구성된다.
MMU는 APU 로컬 스토어와 시스템 메모리 사이의 데이터 전송을 수행한다. 일 실시예에서, MMU는 이 기능을 수행하도록 구성되는 직접 메모리 액세스(DMA) 제어기를 포함한다. MPU(1510)는 MMU를 프로그래밍하여 어느 메모리 영역이 MMU 각각에 대해 이용 가능하지를 제어할 수 있다. MMU 각각에 대해 이용 가능한 맵핑을 변경함으로써, MPU는 어느 APU가 시스템 메모리(1520)의 어느 영역에 액세스하는지를 제어할 수 있다. 이 방식에서, PU는, 예를 들어, 특정 SPU의 배타적 사용을 위한 프라이버시로서 시스템 메모리의 영역을 지정할 수 있다. 일 실시예에서, SPU 로컬 스토어는 메모리 맵을 사용하여 PU(1510) 및 다른 SPU에 의해 액세스될 수 있다. 일 실시예에서, PU(1510)는 모든 SPU에 대한 공통 시스템 메모리(1520)에 대한 메모리 맵을 관리한다. 메모리 맵 테이블은 MU(1510) L2 캐시(1515), 시스템 메모리(1520) 및 APU 공유 로컬 스토어를 포함할 수 있다.
일 실시예에서, SPU는 PU(1510) 제어 하에서 데이터를 프로세싱한다. SPU는, 예를 들어, 디지털 신호 프로세싱 코어, 마이크로프로세서 코어, 마이크로 제어기 코어 등이거나 전술한 코어의 조합일 수 있다. 로컬 스토어 각각은 특정 SPU 와 관련되는 저장 영역이다. 일 실시예에서, 각 SPU는 개인 저장 영역으로서 그 로컬 스토어, 공유 저장 영역을 구성할 수 있거나, SPU는 부분적 개인 저장장치 및 부분적 공유 저장장치로서 그 로컬 스토어를 구성할 수 있다.
예를 들어, SPU가 상당한 양의 로컬 메모리를 요구하는 경우, SPU는 그 SPU에 의해서만 액세스 가능한 개인 메모리에 로컬 스토어 100%를 할당할 수 있다. 한편, SPU가 최소량의 로컬 메모리를 요구하는 경우, SPU는 개인 메모리에 로컬 스토어의 10%를 할당하고 공유 메모리에 나머지 90%를 할당할 수 있다. 공유 메모리는 PU(1510) 및 다른 SPU에 의해 액세스 가능하다. SPU는 고속의 보장되는 메모리 액세스를 요구하는 작업을 수행할 때 이러한 고속 액세스를 갖기 위해 그 로컬 스토어의 일부분을 보존할 수 있다. 또한, SPU는 민감한 데이터를 프로세싱할 때, 예를 들어, SPU가 암호화/해독을 수행할 때 프라이버시로서 그 로컬 스토어의 일부를 보존할 수 있다. 격리 모드에 있을 때, SPU의 메모리의 일부는 개인이 아닌 "개방 공간"으로서 보존된다. 이 개방 공간은 SPU와 공유 메모리 사이의 데이터 판독 및 기록하는 DMA 동작을 위해 사용될 수 있다.
도 15에 도시된 이종 컴퓨터 시스템은 본 명세서에 개시된 프로세스를 실행할 수 있지만, 이 컴퓨터 시스템은 이종 컴퓨터 시스템의 일례에 불과하다. 당업자가 인식할 바와 같이 많은 다른 컴퓨터 시스템 설계가 본 명세서에서 설명된 프로세스를 수행할 수 있다.
본 발명의 바람직한 구현 중 하나는 클라이언트 애플리케이션, 즉, 인스트럭션 세트(프로그램 코드) 또는 예를 들어 컴퓨터의 RAM에 존재할 수 있는 코드 모듈 의 다른 기능적 기술 요소가다. 컴퓨터에 의해 요구되는 한, 인스트럭션 세트는 다른 컴퓨터 메모리, 예를 들어, 하드 디스크 드라이브, 또는 (가령, CD ROM에서의 사용을 위한) 광 디스크 또는 (플로피 디스크 드라이브에서의 사용을 위한) 플로피 디스크와 같은 제거 가능한 메모리에 저장되거나 인터넷 또는 다른 컴퓨터 네트워크를 통해 다운로딩될 수 있다. 따라서, 본 발명은 컴퓨터에서의 사용을 위한 컴퓨터 프로그램 제품으로서 구현될 수 있다. 또한, 설명된 다양한 방법은 소프트웨어에 의해 선택적으로 활성화되거나 재구성되는 범용 컴퓨터에서 편리하게 구현되지만, 당업자는 또한 이러한 방법이 하드웨어, 펌웨어 또는 요구되는 방법 단계를 수행하도록 구성되는 더 특수한 장치에서 구현될 수 있음을 인식할 것이다. 기능적 기술 요소(functional descriptive material)은 머신에 기능성을 제공하는 정보이다. 기능적 기술 요소는 컴퓨터 프로그램, 인스트럭션, 룰, 팩트(facts), 연산 가능한 기능의 정의, 객게 및 데이터 구조를 포함하지만, 이에 한정되는 것은 아니다.
본 발명의 특정 실시예를 설명하였지만, 본 명세서의 개시 내용에 기초하여, 본 발명 및 그 넓은 양태를 벗어나지 않고 변형 및 수정이 이루어질 수 있음은 당업자에게 명백할 것이다. 그러므로, 첨부된 청구범위는 그 범위 내에서 본 발명의 진정한 사상과 범위 내에 존재하는 모든 이러한 변형 및 수정을 포함한다.
또한, 본 발명은 첨부된 청구범위에 의해서만 정의된다는 것을 이해해야 한다. 당업자가 인식할 바와 같이, 도입되는 청구항 요소의 특정 개수가 의도되는 경우, 이러한 의도는 청구항에서 명시적으로 인용될 것이며, 이러한 인용이 없는 경우에 이러한 제한은 존재하지 않는다. 한정적이지 않은 예에 있어서, 이해를 돕기 위해, 이하 첨부된 청구항은 도입 문구 "적어도 하나의" 및 "하나 이상의"의 사용을 포함하여 청구항 요소를 도입한다. 그러나, 이러한 문구의 사용은, 수식어 "하나의"에 의한 청구항 요소의 도입이 이러한 도입된 청구항 요소를 포함하는 임의의 특정 청구항을 이러한 요소를 단지 하나만 포함하는 발명으로 제한하는 것으로 고려되어서는 안되며, 동일한 청구항이 도입 문구 "하나 이상" 또는 "적어도 하나" 및 수식어 "하나의"를 포함하는 경우에도 그러하다.

Claims (10)

  1. 프로그램의 콘텍스트를 보안적으로 저장하는 컴퓨터 구현 방법으로서,
    격리 모드에서 실행 중이며 보안 프로그램을 실행하고 있는 특수 목적 프로세서 코어에서 범용 프로세서 코어로부터의 중단(interrupt)을 수신하는 단계―여기서, 이종 프로세서는 복수의 이종 프로세서 코어들을 포함하되, 복수의 이종 프로세서 코어들은 범용 프로세서 코어와 격리된 특수 목적 프로세서 코어를 포함하며, 상기 격리된 특수 목적 프로세서 코어가 격리 모드에서 실행 중인 동안에 상기 격리된 특수 목적 프로세서 코어는 상기 이종 프로세서 내에 포함된 다른 프로세서 코어들로부터는 액세스불가능한 로컬 메모리를 포함하고, 상기 이종 프로세서의 코어들 각각은 공유 메모리에 액세스가능함―와,
    상기 중단을 수신하는 것에 응답하여, 상기 특수 목적 프로세서 코어에서 상기 보안 프로그램의 콘텍스트를 상기 공유 메모리에 보안적으로 저장하는 단계―상기 콘텍스트는 코드 라인 및 데이터 값을 포함함―를 포함하되,
    상기 저장하는 단계는,
    랜덤 영구적 보안 데이터(random persistent security data)를 생성하는 단계와,
    상기 격리된 특수 목적 프로세서 코어의 로컬 메모리로부터 상기 코드 라인을 판독하는 단계와,
    상기 격리된 특수 목적 프로세서 코어의 로컬 메모리로부터 상기 데이터 값을 판독하는 단계와,
    상기 생성된 영구적 보안 데이터를 사용하여 상기 코드 라인 및 상기 데이터 값을 암호화하는 단계와,
    상기 암호화된 코드 라인 및 상기 암호화된 데이터 값을 상기 격리된 특수 목적 프로세서 코어 내에 포함된 보호되지 않는 개방 메모리 공간에 저장하는 단계와,
    상기 보호되지 않는 개방 메모리 공간 내에 저장된 상기 암호화된 코드 라인을 판독하고 상기 암호화된 코드 라인을 상기 공유 메모리에 기록하는 직접 메모리 액세스(DMA) 전송을 수행하는 단계를 포함하는
    프로그램의 콘텍스트를 보안적으로 저장하는 컴퓨터 구현 방법.
  2. 제 1 항에 있어서,
    상기 생성된 영구적 보안 데이터를 영구적 저장 레지스터에 저장하는 단계를 더 포함하되,
    상기 영구적 보안 데이터는 논스(a nonce)이고, 암호화되는 상기 데이터 값 중 하나는 상기 논스이며, 상기 암호화하는 단계는 정적 암호화 키를 사용하여 수행되는
    프로그램의 콘텍스트를 보안적으로 저장하는 컴퓨터 구현 방법.
  3. 제 1 항에 있어서,
    상기 영구적 보안 데이터는 상기 암호화하는 단계를 수행하는 데에 사용되는 암호화 키이고,
    상기 방법은,
    상기 영구적 보안 데이터를 영구적 저장 레지스터에 저장하는 단계를 더 포함하는
    프로그램의 콘텍스트를 보안적으로 저장하는 컴퓨터 구현 방법.
  4. 제 1 항에 있어서,
    상기 데이터 값 중 적어도 하나는 상기 격리된 특수 목적 프로세서 코어 내에 포함되는 레지스터에 대응하는 레지스터 값인
    프로그램의 콘텍스트를 보안적으로 저장하는 컴퓨터 구현 방법.
  5. 삭제
  6. 제 1 항에 있어서,
    상기 보안 프로그램이 중단되었던 상기 보안 프로그램 내의 한 위치에 대응하는 프로그램 카운터를 검색하는 단계와,
    상기 프로그램 카운터를 암호화하는 단계와,
    상기 암호화된 프로그램 카운터를 상기 공유 메모리에 저장하는 단계를 더 포함하는
    프로그램의 콘텍스트를 보안적으로 저장하는 컴퓨터 구현 방법.
  7. 제 1 항에 있어서,
    상기 저장하는 단계 후,
    영구적 저장 레지스터는 그대로 남겨(intact) 둔 채, 상기 격리된 특수 목적 프로세서 코어의 로컬 메모리를 클리어링(clearing)하는 단계와,
    상기 특수 목적 프로세서 코어를 비-격리 모드(non-isolation mode)로 복귀시키는 단계와,
    비-격리 모드에서 실행 중인 상기 특수 목적 프로세서 코어 내에 제 2 프로그램을 로딩하는 단계를 더 포함하되,
    상기 영구적 저장 레지스터는 상기 특수 목적 프로세서 코어가 격리 모드에서 실행 중일 때에만 액세스가능한
    프로그램의 콘텍스트를 보안적으로 저장하는 컴퓨터 구현 방법.
  8. 제 1 항에 있어서,
    상기 암호화된 코드 라인 및 상기 암호화된 데이터 값을 서명 생성 함수에 입력하는 단계 - 상기 서명 생성 함수는 서명 결과를 발생시킴 - 와,
    상기 서명 결과를 상기 공유 메모리에 저장하는 단계를 더 포함하는
    프로그램의 콘텍스트를 보안적으로 저장하는 컴퓨터 구현 방법.
  9. 정보 처리 시스템에 있어서,
    하나 이상의 특수 목적 프로세서 코어와 하나 이상의 범용 프로세서 코어를 갖는 이종 프로세서 - 상기 특수 목적 프로세서 코어 중 하나가 격리 모드에서 실행 중임 - 와,
    상기 특수 목적 프로세서 코어와 상기 범용 프로세서 코어에 의해 액세스가능한 공유 메모리와,
    복수의 이종 프로세서 각각에 대응하는 로컬 메모리 - 상기 격리된 특수 목적 프로세서 코어에 대응하는 상기 로컬 메모리는 다른 이종 프로세서에 의해서는 액세스가능하지 않음 - 와,
    상기 로컬 메모리 중 하나에 저장되는 인스트럭션 세트를 포함하며,
    상기 이종 프로세서 중 하나 이상은 상기 인스트럭션 세트를 실행하여,
    보안 프로그램을 실행하고 있는 상기 격리된 특수 목적 프로세서 코어에서 상기 범용 프로세서 코어 중의 하나로부터의 중단(interrupt)을 수신하는 동작과,
    상기 중단을 수신하는 것에 응답하여, 상기 격리된 특수 목적 프로세서 코어에서 상기 보안 프로그램의 콘텍스트를 상기 공유 메모리에 보안적으로 저장하는 동작―상기 콘텍스트는 코드 라인 및 데이터 값을 포함함―을 수행하되,
    상기 저장하는 동작은,
    랜덤 영구적 보안 데이터(random persistent security data)를 생성하는 동작과,
    상기 격리된 특수 목적 프로세서 코어의 로컬 메모리로부터 상기 코드 라인을 판독하는 동작과,
    상기 격리된 특수 목적 프로세서 코어의 로컬 메모리로부터 상기 데이터 값을 판독하는 동작과,
    상기 생성된 영구적 보안 데이터를 사용하여 상기 코드 라인 및 상기 데이터 값을 암호화하는 동작과,
    상기 암호화된 코드 라인 및 상기 암호화된 데이터 값을 상기 격리된 특수 목적 프로세서 코어 내에 포함된 보호되지 않는 개방 메모리 공간에 저장하는 동작과,
    상기 보호되지 않는 개방 메모리 공간 내에 저장된 상기 암호화된 코드 라인을 판독하고 상기 암호화된 코드 라인을 상기 공유 메모리에 기록하는 직접 메모리 액세스(DMA) 전송을 수행하는 동작을 포함하는
    정보 처리 시스템.
  10. 컴퓨터 상에서 실행되면 제 1 항 내지 제 4 항 및 제 6 항 내지 제 8 항 중의 어느 한 항에 기재된 방법을 수행하도록 구성되는 프로그램 코드 수단을 포함하는 컴퓨터 프로그램을 수록한
    컴퓨터 판독 가능한 기록 매체.
KR1020097006459A 2006-09-12 2007-08-31 프로그램의 콘텍스트를 보안적으로 저장하는 컴퓨터 구현 방법, 정보 처리 시스템 및 컴퓨터 판독 가능한 기록 매체 KR101054981B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/530,937 2006-09-12
US11/530,937 US8095802B2 (en) 2006-09-12 2006-09-12 System and method for securely saving a program context to a shared memory
PCT/EP2007/059126 WO2008031730A1 (en) 2006-09-12 2007-08-31 System and method for securely saving a program context to a shared memory

Publications (2)

Publication Number Publication Date
KR20090051107A KR20090051107A (ko) 2009-05-20
KR101054981B1 true KR101054981B1 (ko) 2011-08-05

Family

ID=38543638

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097006459A KR101054981B1 (ko) 2006-09-12 2007-08-31 프로그램의 콘텍스트를 보안적으로 저장하는 컴퓨터 구현 방법, 정보 처리 시스템 및 컴퓨터 판독 가능한 기록 매체

Country Status (5)

Country Link
US (1) US8095802B2 (ko)
EP (1) EP2062185A1 (ko)
KR (1) KR101054981B1 (ko)
TW (1) TW200834373A (ko)
WO (1) WO2008031730A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1986122A1 (fr) * 2007-04-23 2008-10-29 Stmicroelectronics Sa Unite de traitement securisee
US7506176B1 (en) * 2008-03-10 2009-03-17 International Business Machines Corporation Encryption mechanism on multi-core processor
US8650653B2 (en) * 2009-12-24 2014-02-11 Intel Corporation Trusted graphics rendering for safer browsing on mobile devices
US8990582B2 (en) * 2010-05-27 2015-03-24 Cisco Technology, Inc. Virtual machine memory compartmentalization in multi-core architectures
US8468365B2 (en) * 2010-09-24 2013-06-18 Intel Corporation Tweakable encryption mode for memory encryption with protection against replay attacks
KR101577886B1 (ko) * 2011-06-29 2015-12-15 인텔 코포레이션 무결성 검사 및 리플레이 공격들에 대한 보호를 이용하는 메모리 암호화를 위한 방법 및 장치
FR2984552A1 (fr) * 2011-12-16 2013-06-21 France Telecom Procede et dispositif de gestion d'une application referencee par un dispositif
WO2014046974A2 (en) 2012-09-20 2014-03-27 Case Paul Sr Case secure computer architecture
US9967319B2 (en) * 2014-10-07 2018-05-08 Microsoft Technology Licensing, Llc Security context management in multi-tenant environments
US11513805B2 (en) * 2016-08-19 2022-11-29 Wisconsin Alumni Research Foundation Computer architecture with synergistic heterogeneous processors
US10528485B2 (en) * 2016-09-30 2020-01-07 Intel Corporation Method and apparatus for sharing security metadata memory space
US10579377B2 (en) 2017-01-19 2020-03-03 International Business Machines Corporation Guarded storage event handling during transactional execution
US10452288B2 (en) 2017-01-19 2019-10-22 International Business Machines Corporation Identifying processor attributes based on detecting a guarded storage event
US11604671B2 (en) * 2020-03-19 2023-03-14 Red Hat, Inc. Secure virtual machine and peripheral device communication

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6651169B1 (en) * 1997-05-28 2003-11-18 Fujitsu Siemens Computers Protection of software using a challenge-response protocol embedded in the software
US20060015748A1 (en) * 2004-06-30 2006-01-19 Fujitsu Limited Secure processor and a program for a secure processor

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69638018D1 (de) 1995-02-13 2009-10-15 Intertrust Tech Corp Systeme und Verfahren zur Verwaltung von gesicherten Transaktionen und zum Schutz von elektronischen Rechten
US6529602B1 (en) 1997-08-19 2003-03-04 Walker Digital, Llc Method and apparatus for the secure storage of audio signals
US6732275B1 (en) 1999-03-23 2004-05-04 Samsung Electronics Co., Ltd. Securing encrypted files in a PC and PC peripheral environment
US6983374B2 (en) 2000-02-14 2006-01-03 Kabushiki Kaisha Toshiba Tamper resistant microprocessor
JP2002229447A (ja) 2001-01-30 2002-08-14 Nippon Telegr & Teleph Corp <Ntt> デジタルコンテンツ流通における著作権保護システム
US7565659B2 (en) * 2004-07-15 2009-07-21 International Business Machines Corporation Light weight context switching
US7660769B2 (en) 2006-09-12 2010-02-09 International Business Machines Corporation System and method for digital content player with secure processing vault

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6651169B1 (en) * 1997-05-28 2003-11-18 Fujitsu Siemens Computers Protection of software using a challenge-response protocol embedded in the software
US20060015748A1 (en) * 2004-06-30 2006-01-19 Fujitsu Limited Secure processor and a program for a secure processor

Also Published As

Publication number Publication date
TW200834373A (en) 2008-08-16
US20080066074A1 (en) 2008-03-13
US8095802B2 (en) 2012-01-10
KR20090051107A (ko) 2009-05-20
WO2008031730A1 (en) 2008-03-20
EP2062185A1 (en) 2009-05-27

Similar Documents

Publication Publication Date Title
KR101054981B1 (ko) 프로그램의 콘텍스트를 보안적으로 저장하는 컴퓨터 구현 방법, 정보 처리 시스템 및 컴퓨터 판독 가능한 기록 매체
KR101081118B1 (ko) 보안되는 프로그램을 복원하는 컴퓨터 구현 방법, 정보 처리 시스템 및 컴퓨터 판독 가능한 기록 매체
US8190917B2 (en) System and method for securely saving and restoring a context of a secure program loader
US10007793B2 (en) Secure object having protected region, integrity tree, and unprotected region
JP6347831B2 (ja) ハイパーバイザに制御されるシステムにおいてゲスト・イベントを処理するための方法、データ処理プログラム、コンピュータ・プログラム製品、およびデータ処理システム
JP5175856B2 (ja) セキュアデバイス・システムにおけるフラッシュメモリ・ブロックの保護と方法
JP4660188B2 (ja) スリープ状態における攻撃からの保護
TW201535145A (zh) 使用保護讀取儲存器安全地儲存韌體數據之系統及方法
US20120216051A1 (en) Building and distributing secure object software
EP1536307B1 (en) Encryption of system paging file
US9256756B2 (en) Method of encryption and decryption for shared library in open operating system
WO2011009738A1 (en) Encrypting data in volatile memory
US9881142B2 (en) Method and apparatus for preventing and investigating software piracy
US10303885B2 (en) Methods and systems for securely executing untrusted software
US20080104711A1 (en) System and method for an isolated process to control address translation
US11829454B2 (en) Method and apparatus for preventing and investigating software piracy
US8972745B2 (en) Secure data handling in a computer system
JP2018526720A (ja) 仮想マシンの状態情報の保護
US20240045933A1 (en) Method and apparatus for preventing and investigating software piracy

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee