KR102422351B1 - 순서 검증 - Google Patents

순서 검증 Download PDF

Info

Publication number
KR102422351B1
KR102422351B1 KR1020197006350A KR20197006350A KR102422351B1 KR 102422351 B1 KR102422351 B1 KR 102422351B1 KR 1020197006350 A KR1020197006350 A KR 1020197006350A KR 20197006350 A KR20197006350 A KR 20197006350A KR 102422351 B1 KR102422351 B1 KR 102422351B1
Authority
KR
South Korea
Prior art keywords
execution
main processor
sequence
environment
verification
Prior art date
Application number
KR1020197006350A
Other languages
English (en)
Other versions
KR20190038609A (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 KR20190038609A publication Critical patent/KR20190038609A/ko
Application granted granted Critical
Publication of KR102422351B1 publication Critical patent/KR102422351B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/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
    • G06F21/54Monitoring 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 by adding security routines or objects to programs
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)

Abstract

명령의 순서를 포함하는, 동작, 예를 들어 암호화 동작에 대한 실행 환경에서의 실행을 관찰하는 방법이 개시된다. 동작을 실행하기 위해, 메인 프로세서로부터 하나 이상의 보조 프로세서, 예를 들어 암호화 프로세서로 순서대로 발송된 명령이 관찰되고 명령의 순서는 검증 정보를 사용하여 검증된다. 이 방법은 순서의 성공적인 검증에 응답하여 동작의 결과의 실행 환경으로부터 출력을 활성화하는 단계, 또는 순서의 실패한 검증에 응답하여 검증 실패 신호를 생성하는 단계를 포함한다.

Description

순서 검증
본 발명은 메인 프로세서로부터, 특히 암호화 동작에 대한 하드웨어 가속화를 구현하는 하나 이상의 암호화 프로세서를 배제하지 않는 하나 이상의 보조 프로세서까지 발송된 명령의 순서의 검증에 관한 것이다.
안전한 프로세싱 환경은 다수의 프로세서, 일반적으로 전체 동작을 프로세싱하기 위한 메인 프로세서 및 프로세싱을 가속화하기 위해 하드웨어의 메인 동작의 일부로서 반복된 동작을 구현하는 다수의 보조 프로세서를 포함할 수 있다. 일반적으로, 이 동작은 암호화 동작이고, 보조 프로세서는 기초 암호화 동작을 구현하는 암호화 프로세서일 수 있다. 하드웨어의 전체 동작 중 일부를 구현하는 것은, 소프트웨어보다는 하드웨어를 변경하는 것이 더 어렵기 때문에, 프로세싱 속도뿐만 아니라 보안도 개선한다. 개선된 보안으로부터 득을 보는 것은 하드웨어 구현 동작을 메인 프로세서에 의해 완전하고 의도한 순서대로 명령할 것을 요구한다. 그렇지 않으면, 전체 동작의 결과는 변경될 수 있다. 이는 메인 프로세서에 의해 구현된 소프트웨어 코드가 안전한 환경 외부로부터 제공되는, 예를 들어, 부팅 또는 런타임에서 안전한 프로세싱 환경 외부의 플래시 또는 다른 펌웨어 메모리로부터 로드되는, 구성에서 특히 적절하다.
메인 프로세서로부터 암호화 동작을 구현하는 하나 이상의 보조 프로세서까지 발송된 명령의 순서의 검증하는 방법을 제공하는 것이다.
본 발명에 따르는 명령의 순서를 포함하는 동작의 실행 환경의 실행을 관찰하는 방법은,
동작을 실행하기 위해 메인 프로세서로부터 하나 이상의 보조 프로세서까지 발송된 명령을 순서대로 관찰하는 단계;
검증 정보를 이용하여 명령의 순서를 검증하는 단계; 및
순서의 성공적인 검증에 응답하여 동작의 결과의 실행 환경으로부터의 출력을 활성화하는 단계 및 순서의 실패한 검증에 응답하여 검증 실패 신호를 생성하는 단계 중 적어도 하나의 단계를 포함한다.
본 발명에 따르는 명령 순서 검증 방법에 따르면, 메인 프로세서로부터 하나 이상의 보조 프로세서까지 완전하도 의도된 순서대로 명령을 전송할 수 있다.
첨부된 도면을 참고로 예로서 특정 실시예가 개시되고 설명된다.
도1은 다수의 하드웨어 부품: 메인 프로세서, 보조 프로세서 및 추적기 모듈을 포함하는 분리된 실행 환경을 구비한 컴퓨팅 장치를 도시한다.
도2는 메인 프로세서에 의해 보조 프로세서에 발송된 명령의 순서를 추적 및 검증하기 위해 추적기 모듈에 의해 구현된 방법을 도시한다.
도3은 도2에 도시된 방법의 변형을 도시한다.
도4는 도1에 도시된 바와 같은 컴퓨팅 장치의 상세한 구현을 도시한다.
도5는 도4에 도시된 구현예에 대해, 추적기 모듈의 유한 상태 기계 명시 모드를 도시한다.
도6은 트래커 모듈이 사용하기 위해, 소프트웨어 코드에 대한 검증 정보를 준비하는 방법을 도시한다.
개략적으로, 본 발명의 일 양태에서, 명령의 순서를 포함하는 동작의 실행 환경에서의 실행을 관찰하는 방법이 제공된다. 동작을 실행하기 위해 메인 프로세서로부터 하나 이상의 보조 프로세서, 예를 들어 암호화 프로세서로 순서대로 발송된 명령이 관찰되며 명령의 순서는 검증 정보를 사용하여 검증된다. 이 방법은:
Figure 112019021881600-pct00001
순서의 성공적인 검증에 응답하여 동작의 결과의 실행 환경으로부터의 출력을 활성화하는(enabling) 단계; 및
Figure 112019021881600-pct00002
순서의 실패한 검증에 응답하여 검증 실패 신호를 생성하는 단계 중 적어도 하나 또는 둘 다를 포함한다.
바람직하게는, 진행중인 순서(sequence) 검증을 조건으로 결과를 출력하는 능력을 만듦으로써, 또는 실행 환경에 의해서나 변경 시도의 효과를 완화하기 위해 장치에서 사용될 수 있는 실패 신호를 생성함으로써, 동작을 구현하기 위해 메인 프로세서에 의해 사용되는 코드에 대한 완전한 제어가 발휘될 수 없는 상황에서조차도 동작의 안전성은 증가한다.
일부 실시예에서, 이 방법은 각각의 명령을 구비한 상태를 순서대로 업데이트하는 단계 및 검증 정보를 사용하여 상태를 검증하는 단계를 포함한다. 상태를 검증하는 단계는 상태 또는 해시(hash) 또는 상태의 값의 암호화 일-방향 함수를 검증 정보와 비교하는 단계를 포함할 수 있다. 상태를 업데이트하는 단계는 메인 프로세서로부터 하나 이상의 보조 프로세서로 발송될 때 명령을 수신하는 단계 및 명령이 수신될 때, 예를 들어 명령의 해시를 이 상태에 추가할 때 상태를 업데이트하는 단계를 포함할 수 있다. 추가된 보안을 위해, 검증 정보가 바람직하게는 비대칭 암호화를 사용하여 암호화된 형태로 실행 환경에 제공될 수 있다. 실행 환경은 컴퓨팅 장치의 일부일 수 있고 이 코드는 실행 환경 외부의 검증 정보와 함께 컴퓨팅 장치안에 저장될 수 있다. 개시된 순서 검증 방법은 예를 들어 펌웨어 업데이트의 일부로서 용이하게 업데이트될 수 있는 보안 환경 외부에서 코드의 저장을 용이하게 하면서, 의도된 명령 순서를 보조 프로세서에 강제함으로써 무결성의 측정을 보장한다.
일부 실시예에서, 이 방법은 동작 결과의 출력을 활성화하기 위해 요청을 수신하는 단계 및 요청 수신에 대응하여 순서를 검증하는 단계를 포함한다. 이 요청은 예를 들어 메인 프로세서로부터 수신될 수 있고, 검증 정보를 포함할 수도 있다. 예를 들어, 결과의 출력을 활성화하는 것은 환경의 외부로부터 액세스할 수 있는 인터페이스 메모리로의 메인 프로세서에 의한 액세스, 특히 쓰기-액세스를 활성화하여 동작의 결과를 출력하는 것을 포함할 수 있다. 따라서, 이 방법은, 사실상, 인터페이스 메모리로의 액세스를 제어함으로써 액세스가 제어되면서, 실행 환경 주변의 방화벽을 구현할 수 있다. 물론, 대안적으로 또는 추가적으로, 환경의 외부로부터 인터페이스 메모리로의 액세스, 특히 읽기 액세스가 제어될 수 있다. 이 방법은 프로세서에 의한 결과의 출력이 활성화될 때 메인 프로세서 및 하나 이상의 보조 프로세서 사이의 통신을 비활성화(disabling) 하는 단계를 포함할 수 있다. 이러한 방식으로, 메인 프로세서가 데이터를 출력할 수 있는 동안 어떤 프로세싱도 가능하지 않기 때문에, 변조는 더욱 어려워진다.
본 발명의 일부 양태에서, 격리된 환경을 포함하는 컴퓨팅 장치가 제공된다. 격리된 한경은 동작을 실행하도록 구성되는 메인 프로세서, 하나 이상의 보조 프로세서, 인터페이스, 예를 들어 인터페이스 버퍼 메모리, 및 추적 모듈을 포함한다. 하나 이상의 보조 프로세서, 예를 들어 암호화 프로세서는 메인 프로세서로부터 명령을 수신하고, 명령을 실행하고 메인 프로세서에 각각의 응답을 반환하도록(return) 구성된다. 동작을 실행하는 단계는 명령을 순서대로 발송하고 각각의 응답을 수신하는 메인 프로세서를 포함한다. 인터페이스는 격리된 환경과 컴퓨팅 장치의 나머지(remainder) 사이를 인터페이스로 접속하여 메인 프로세서로부터 동작의 결과를 수신하고, 격리된 환경 외부로부터 액세스할 수 있게 한다. 추적 모듈은 메인 프로세서로부터 하나 이상의 보조 프로세서까지 발송된 명령을 관찰하고, 검증 정보를 사용하여 명령의 순서를 검증하도록 구성된다. 검증에 응답하여, 추적 모듈은 다음 중 적어도 하나 또는 둘 다를 수행한다:
Figure 112019021881600-pct00003
결과를 출력을 활성화하기(enable) 위해 순서의 성공적인 검증에 응답하여 인터페이스 버퍼로의 액세스, 예를 들어 쓰기-액세스를 활성화하고,
Figure 112019021881600-pct00004
순서의 실패한 검증에 응답하여 검증 실패 신호를 생성한다.
상기 고려사항 및 장점은 이 양태에 동일하게 적용되는 것으로 이해될 것이다. 컴퓨팅 장치는, 격리된 환경 외부의 공유 또는 각각의 프로세서(들)에 의해 리치(Rich) 오퍼레이팅 시스템 환경 및/또는 신뢰 실행 환경을 구현하고 인터페이스 버퍼를 거쳐 격리된 환경과 접속하는, 하나 이상의 추가 메인 및/또는 보조 프로세서를 가질 수 있다. 일부 실시예에서, 추적 모듈은 전술된 바와 같은 방법을 구현하도록 구성된다.
본 발명의 또 다른 양태는 전술된 바와 같은 격리된 환경을 구현하기 위해 회로 소자 및 그들의 상호접속의 사양을 포함하는, 선택적으로 하나 이상의 컴퓨터 판독가능한 매체에 저장되는 네트 리스트(net list), 및 전술된 바와 같은 방법을 구현하기 위한 수단을 포함하는 컴퓨팅 장치로 확장된다. 개시된 양태는 특히 스마트 tv 셋과 같은 셋-톱 박스 또는 다른 콘텐츠 수신 장치이지만 이에 국한되지는 않는 많은 유형의 컴퓨팅 장치에 적용할 수 있고, 콘텐츠를 보호하는 암호화 동작의 보안이 보장될 필요가 있는 디지털 권한 관리 및 조건부 액세스 애플리케이션의 특정 애플리케이션을 발견한다.
또 다른 양태에서, 전술된 바와 같은 방법의 동작을 구현하기 위해 메인 프로세서에 의해 실행하기 위한 코드를 준비하는 방법이 제공된다. 코드를 준비하는 방법은 하나 이상의 보조 프로세서에 대한 코드의 명령의 순서로부터 검증 정보를 도출하는 단계 및 예를 들어 출력 명령의 일부로서 또는 코드에 포함된 데이터로서, 또는 코드와 함께 또는 이후의 조합을 위해 별도로 분배되는 데이터의 개별 아이템으로서 코드에 검증 정보를 포함시키는 단계를 포함한다. 검증 정보는 예를 들어 비대칭 암호화를 사용하여 암호화된 형태로 코드에 포함될 수 있다.
일부 특정 실시예는 첨부된 도면을 참고로 본 발명을 도시하기 위해 예로서 설명된다.
구체적으로, 도1을 참조하면, 컴퓨팅 장치(100)는, 컴퓨팅 장치(100)의 나머지로부터 격리된, 격리된 실행 환경(110)을 포함하는데, 격리된 실행 환경(110)은 인터페이스(120), 예를 들어 격리된 환경(110)의 내부로부터 읽기 및/또는 쓰기 액세스 및 환경(110)의 외부로부터 읽기 및/또는 쓰기 액세스를 제공하는 입력 출력 버퍼 메모리에 의해 컴퓨팅 장치(100)의 나머지와 통신하여 환경(110)이 장치(100)의 나머지와 통신할 수 있게 한다. 환경(110)은 메인 프로세서(130) 및 다수의 보조 프로세서(140), 예를 들어 암호화 하드웨어 가속을 위한 보조 암호화 프로세서를 포함한다. 메인 프로세서(130)는 동작, 예를 들어 암호화 동작을 구현하는 소프트웨어 코드를 실행하도록 구성된다. 이 소프트웨어 코드는 보조 프로세서(140)에 의해 실행되면서 소프트웨어 코드를 실행하는 명령을 포함하고, 메인 프로세서(130)는 이 명령을 보조 프로세서(140)에 발송하고 보조 프로세서(140)로부터의 응답의 형태로 중간 결과를 수신하여 소프트웨어 코드에 의해 구현되는 동작의 전체 결과를 생성한다.
이 소프트웨어 코드는, 예를 들어 장치(100)의 부팅시에 또는 소프트웨어 코드의 실행시간(runtime)에 환경(110)의 적합한 메모리안에 로딩된 후, 환경(110) 내부에 저장될 수 있다. 대안적으로, 소프트웨어 코드는 환경(110) 외부에 저장되고 인터페이스(120)를 통해 메인 프로세서(130)에 의해 판독될 수 있거나; 메인 프로세서(130)가 환경(110) 외부의 프로세서에 의해 구동되는, 인터페이스(120)를 통해 하나씩 또는 블록으로 명령을 수신할 수 있다.
추적기 모듈(150)은 메인 프로세서(130) 및 보조 프로세서(140) 사이의 통신을 관찰하는데, 예를 들어 메인 프로세서(130)에 의해 보조 프로세서(140)로 발송된 명령을 관찰한다. 예를 들어, 메인 프로세서(130)는 공통 데이터 버스(일반적으로 환경(110) 외부로터 격리된)를 거쳐 보조 프로세서(140)로 명령을 발송할 수 있고 추적기 모듈(150)은 데이터 버스를 이동하는(travelling) 신호를 들을 수 있다. 대안적으로, 추적기 모듈은 메인 프로세서(130)의 버스 액세스 모듈을 제공하거나 제어할 수 있으며. 통신은 버스 액세스 모듈을 통해 메인 프로세서(130)로부터 보조 프로세서(140)까지 보내질 수 있다.
추적기 모듈(150)은 메인 프로세서(130)에 의해 보조 프로세서(140)까지 발송된 명령을 관찰하고, 이하 상세히 설명되는 바와 같이 예를 들어 명령의 순서를 나타내는 내부 단계를 유지하고 내부 단계를 올바른 순서에 대응하는 검증 정보와 비교함으로써 명령의 순서를 검증한다. 예를 들어, 검증 정보는 격리된 환경(110)에 제공될 수 있으며, 따라서 소프트웨어 코드와 함께 추적기 모듈(150)은 추가 보안을 위해 예를 들어 비대칭 암호화를 사용하여 암호화될 수 있다. 내부 상태를 검증 정보와 비교함으로써, 추적기 모듈(150)은 명령의 올바른 순서가 실행되었는지를 결정할 수 있고, 전체 결과의 출력을 활성화하거나 검증 결과에 따라서 경보를 발생시키는 것과 같은 동작을 취할 수 있다.
다음으로, 도2를 참조로, 상세하게는, 순서를 관찰하는 방법이 설명된다. 추적기 모듈(150)은 단계 210에서 메인 프로세서(130)로부터 보조 프로세서(140)까지 발송된 메시지를 관찰한다. 단계 220에서, 추적기 모듈(150)은 그 메시지가 명령을 실행하고 결과를 반환하기 위해 보조 프로세서(140) 중 하나에 대한 명령인지를 점검하고, 만일 그렇다면, 단계 230에서 내부 상태를 업데이트한다. 그 상태는 현재 상태 및 현재 명령, 또는 현재 명령의 다이제스트(digest), 해시(hash) 또는 암호화 일-방향 함수를 기반으로 하는 계산에 의해 업데이트될 수 있다. 적합한 일-방향 함수의 예는 SHA 계열(SHA family)의 함수이다. 이 계산은 명령의 값 또는 다이제스트/해시/암호화 일-방향 함수를 상태 등에 연관(concatenate)시키기 위해, 명령 또는 다이제스트/해시/암호화 일-방향 함수의 값을 상태에 추가하는 것(가산)일 수 있다.
이어서, 단계 240에서, 추적기 모듈(150)은 메시지가 상태를 검증하기 위해 추적기 모듈에 대한 요청이었는지를 점검(check)한다. 문제의 메시지는 보조 프로세서(140)에 대한 명령 및 검증 요청 둘 다를 포함할 수 있는데, 이 경우, 단계 240이 단계 230에 이어지거나, 검증 요청이 메인 프로세서(130)에 의해 보조 프로세서(140)까지 발송된 임의의 명령과 별개일 수도 있으며, 따라서 단계 220에 바로 이어질 수 있다. 예를 들어, 요청은 예를 들어 이하 더욱 상세히 설명되는 바와 같이, 소프트웨어 코드에 의해 구현되는 동작의 전체 결과를 출력을 활성화하기 위해 메인 프로세서(130)로부터 추적기 모듈(150)까지의 요청일 수 있다.
메시지가 검증 요청을 포함하는 경우, 단계 250에서 추적기 모듈은 내부 상태를 검증하고, 그렇지 않을 경우 과정이 단계 210로 반환되고 추적기 모듈은 메시지 관찰을 지속한다. 단계 250에서 상태를 검증하는 것은 상태의 값을 검증 정보에 의해 제공되는 상태의 예측 값과 비교하는 것을 포함한다. 예를 들어, 상태, 또는 상태의 함수는 경우에 따라 검증 정보, 또는 검증 정보의 대응하는 함수와 비교될 수 있다. 검증 정보가 변경되지 않는다는 것을 보장하기 위해, 이하 더욱 상세히 설명되는 바와 같이, 소프트웨어 코드 및 검증 정보를 준비하는 엔티티에 의해 암호화되었을 수도 있다. 이 경우, 검증 정보는 단계 250에서 또는 그전에 1차 암호화된다. 예를 들어, 암호화되었을 수도 있는 검증 정보는 비대칭 암호화 알고리즘의 개인 키(private key)이고 대응하는 공개 키(public key)가 단계 250에서 또는 검증 정보를 복호화하기 전에 사용된다. 검증 정보는 상태 및 검증 정보 사이의 매치 또는 상태 및 검증 정보의 유사성(또는 상태 및/또는 검증 정보의 함수)을 점검함으로써, 또는 다른 적합한 비교 수단에 의해, 상태를 검증하는데 사용될 수 있다.
단계 260에서, 추적기 모듈은 상태가 검증되었는지를 점검한다. 상태가 검증된 경우, 동작의 전체 결과의 출력은 단계 270에서 활성화되고(enabled) 추적기 모듈은 단계 280에서 리셋되어 단계 210에서의 메시지 관찰이 지속되도록 한다. 이는 검증 요청이 동작의 전체 결과를 출력하라는 요청과 함께 수신되는 실시예에 특히 적용할 수 있다. 전체 결과의 출력이 활성화(enabled)될 때, 예를 들어 이하 설명되는 바와 같이 완료되었거나, 시간초과 되었거나(timeout), 부팅된, 이전의 동작에 응답하여 이미 검증 요청이 비활성화(disable) 것으로 이해할 것이다. 예를 들어 검증 요청이 각각 수신되거나 보조 프로세서(140)에 대한 명령과 함께 수신되는 다른 실시예에서, 긍정적인(positive) 검증에 대한 동작은 상이할 수 있는데, 예를 들어 명령을 처리하거나 결과를 메인 프로세서(130)에 반환하기 위해 문제의 프로세서를 활성화할 수 있다.
단계 260에서 결정된 바와 같이 검증이 부정적인(negative) 경우, 단계 290에서 예외가 발생하고, 예를 들어 장치의 셧다운(shutdown)을 야기하거나 제3자에게 경고를 하기 위해 장치의 다른 곳에서 경보 신호로서 사용될 수 있는 검증 실패 신호를 생성한다. 검증 실패 신호는, 대안적으로 또는 추가적으로, 격리된 환경(110)에서의 추가 프로세싱을 방지하기 위해, 예를 들어 격리된 환경(110)에서 동적 메모리에 유지되는 데이터를 삭제하고 인터페이스(120)를 차단함으로써, 사용될 수 있다. 일부 실시예는 단계 270 및 290 둘 다를 포함하지만, 다른 실시예는 이들 중 한 단계만을 구현한다.
도3을 참조하면, 일부 실시예에서, 보안을 추가로 증가시키기 위한 프로세스에 추가적인 단계가 추가된다. 도3의 동일한 단계가 주어지고 도2와 동일한 참조 번호가 기재되었다. 단계 310은 전술된 단계 220 다음에 삽입되어, 추적기 모듈(150)이 예를 들어 이하 더욱 상세히 설명되는 바와 같이 현재 유휴(idle) 모드에 있는지 여부를 점검한다. 추적기 모듈의 유휴 모드에서, 메인 프로세서에 의한 인터페이스(120)로의 액세스 및 그에 따른 동작의 전체 결과의 출력은 비활성화(disabled)되지 않으며 메인 프로세서(130)는 인터페이스(120)에 자유롭게 액세스하여 데이터를 읽고 쓸수 있다. 그러나, 추적기 모듈의 유휴 모드에서, 명령의 실행을 위한 보조 프로세서(140)로의 메인 프로세서의 액세스는 비활성화되고, 따라서 어떤 암호화 동작도 적합한 검증이 없이는 실행되지 않고 출력되지 않을 수 있다.
단계 310에서 명령을 포함하는 메시지가 수신될 때(단계 220 참조) 추적기 모듈(150)이 유휴 상태인 것이 결정될 경우, 단계 320에서 보조 프로세서(140)에 의해 메인 프로세서(130)로부터 명령의 처리를 활성화하고, 예를 들어 단계 320에서 인터페이스(120)로 직접 또는 간접적으로 메인 프로세서에 의한 쓰기 액세스를 비활성화함으로써 전체 결과의 출력을 비활성화하는 상이한 모드에 들어간다. 단계 310에서의 결정이 추적기 모듈이 유휴상태가 아니라는 것일 경우, 즉, 코드 실행이 이미 추적되고/명령의 순서가 관찰된 경우, 프로세스는 단계 230에서 상기와 같이 진행한다. 또한, 추가된 단계 310 및 320에 덧붙여, 추적기 모듈(150)을 리셋하는 단계 280은 추적기 모듈(150)을 유휴 모드로 반환하기 위해 수정되고, 단계 270에서 출력이 활성화되면 프로세싱을 비활성된다. 이러한 방식에서 프로세싱 및 출력 중 하나는 언제든지 비활성화되고, 프로세싱 도중의 명령의 정확한 순서만 결과의 후속 출력을 가능하게 한다.
도4를 참고로 하면, 일부 실시예에서, 컴퓨팅 장치(100)는 TEE 메인 프로세서(420), 입력/출력 인터페이스(430) 및 정적 랜덤 액세스 메모리(SRAM, 440)를 포함하는 신뢰 실행 환경(trusted execution environment, TEE) 칩셋(410)을 포함한다. TEE 메인 프로세서(130)는 SRAM(440) 및 컴퓨팅 장치(100)의 칩셋(410) 외부의 동적 랜덤 액세스 메모리(DRAM, 450)와 통신한다. 칩셋(410) 외부의 컴퓨팅 장치(100)의 나머지는, 예를 들어 컴퓨팅 장치(100)의 리치 운영체계와 칩셋(410)의 TEE와 접속하는 인터페이스(430)를 통해 칩셋(410)과 통신한다. 격리된 환경(110)이 암호화 동작을 위한 암호화 모듈을 구현하기 위해 칩셋(410)의 일부로서 제공된다. TEE 메인 프로세서(420)는, 특히 암호화 동작의 실행을 요청하고 격리된 실행 환경(110)으로부터 대응하는 결과를 얻기 위해, 인터페이스(120)에 쓰고 인터페이스(120)으로부터 읽음으로써 격리된 실행 환경(110)에 액세스할 수 있다.
TEE 칩셋(410)과 함께 또는 컴퓨팅 장치(100)의 일부로서 구현되는, 격리된 실행 환경(110)의 특정 실시예가 지금부터 설명된다. 메인 프로세서(130)는 격리된 실행 환경(110)에 대한 작업 메모리(working memory)를 제공하기 위해 SRAM(460)과 통신한다. 격리된 실행 환경(110) 내부 또는 외부에서 비-활성 저장소와 조합되는 어떤 다른 형태의 작업 메모리가 대신에 또는 부가적으로 사용될 수 있다는 것을 이해할 것이다. 추적기 모듈(150)은 메인 프로세서(130)와 인터페이스(120) 사이의 쓰기 접속부의 출력 스위치(470)를 제어하여, 추적기(150)가 메인 프로세서(130)에 의한 인터페이스(120)로의 쓰기 액세스를 제어하도록 한다. 스위치(470)는 많은 형태를 취할 수 있고, 예를 들어 인터페이스(120)로의 쓰기 액세스를 비활성화시키기 위해 쓰기 접속부를 지면(ground), 낮거나 높은 전압에 쇼트(short)시키는 물리적 스위치가 아니면서 논리적 스위치 기능을 구현할 수 있다. 일부 실시예에서, 스위치(470)는 적절하게 접속된 트랜지스터로서 구현될 수 있다. 일부 실시예에서, 메인 프로세서(130)는 쓰기 액세스의 활성화 여부와 관계없이 인터페이스(120)로의 읽기 액세스를 유지할 수 있다.
하나 이상의 보조 프로세서(140), 예를 들어 하나 이상의 암호화 프로세서 또는 암호화폐 코어(crypto cores)는 일부 실시예에서 데이터 버스(480)를 거쳐 메인 프로세서(130)와 통신하고 추적기 모듈(150)은 출력 스위치(470)와 유사하게 구성될 수 있는 데이터 버스 스위치(490)에 결합된다. 데이터 버스 스위치(490)는, 추적기 모듈(150)의 제어하에, 메인 프로세서(130)에 의한 보조 프로세서(140)로의 액세스를 제어하여, 필요에 따라 액세스를 활성화 또는 비활성화하도록 구성될 수 있다. 다른 실시예에서, 추적기 모듈은 다른 방식의 액세스를, 예를 들어 메인 프로세서가 데이터 버스(480)를 거쳐 통신할 수 있게 하는 버스 드라이버를 제공 및/또는 적절하게 연결된 AND 및/또는 NOT 게이트를 사용하여 0 또는 1의 고정 값으로 인터페이스(120)의 메모리 위치를 설정함으로써, 제어한다.
도5를 참고로 하면, 일부 실시예에서, 추적기 모듈(150)은 다음과 같은 다수의 동작 모드를 구현한다:
Figure 112019021881600-pct00005
유휴(IDLE, 510) : 데이터 버스(480)의 메시지 관찰; 메인 프로세서(130)에 의한 인터페이스(120)로의 쓰기 액세스 활성화됨; 메인 프로세서(130)에 의한 보조 프로세서(140)로의 액세스 비활성화됨; 리셋 상태.
Figure 112019021881600-pct00006
명령(CMD, 520) : 데이터 버스(480)의 메시지 관찰; 메인 프로세서(130)에 의한 인터페이스(120)로의 쓰기 액세스 비활성화됨; 메인 프로세서(130)에 의한 보조 프로세서(140)로의 액세스 활성화됨.
Figure 112019021881600-pct00007
업데이트(UPD, 530) : 전술된 바와 같이, 현재 상태의 계산 및 하나 이상의 보조 프로세서로의 현재 명령을 사용하여 상태 업데이트.
Figure 112019021881600-pct00008
점검(CHK, 540) : 전술된 바와 같이 검증 정보를 사용하여 상태 점검.
Figure 112019021881600-pct00009
경보(ALARM, 550) : 전술된 바와 같이, 검증 실패 신호 생성; 메인 프로세서(130)에 의한 인터페이스(120)로의 쓰기 액세스 비활성화됨; 메인 프로세서(130)에 의한 보조 프로세서(140)로의 액세스 비활성화됨.
추적기 모듈(150)은 초기에 IDLE 상태이고 메인 프로세서(130)에 의한 보조 프로세서(140)로의 명령이 데이터 버스(280) 상에서 검출될 경우 CMD로 이행(transition)된다. 추적기 모듈(150)은 상태를 업데이트하기 위해 CMD로부터 UPD까지 즉시 이행되고 추가 명령에 대해 관찰하기 위해 업데이트의 완료시 CMD로 역으로 이행된다. 각각의 추가 명령의 검출은 추적기 모듈(150)이 CMD로 다시 이행되도록 한다. 추적기 모듈(150)은 예를 들어 데이터 버스(280)를 거쳐 수신하는 검증 정보(예를 들어 출력 요청과 함께)에 응답하여 CMD로부터 CHK로 이행되며, 검증 정보를 이용하여 상태를 검증한다. 검증을 통과하면, 추적기 모듈은 IDLE로 이행하여, 메인 프로세서(130)에 의한 결과를 출력할 수 있게 되고 보조 프로세서(140)로 추가 명령이 발송되는 것을 기다린다. 검증이 실패하면, 추적기 모듈은 ALARM으로 이행되고, 전술된 바와 같이, 예를 들어 메인 프로세서(130)에 의한 인터페이스(120) 및 보조 프로세서(140) 둘 다와의 통신을 비활성화하는 검증 실패 신호를 생성한다. 예를 들어, 일단 ALARM으로 들어가면 추적기 모듈이 리셋 및/또는 장치(100)가 재-부팅될 때까지 추적기 모듈(150)은 ALARM으로 유지된다.
일부 실시예에서, 격리된 실행 환경(110)은 예를 들어 도4에 도시된 바와 같은 TEE 칩셋의 일부로서, 실리콘안에 구현된다. 격리된 실행 환경(110)의 다양한 부품을 구현하는(칩셋의 부품 전부와 격리되거나 함께), 회로 소자, 및 그들의 상호연결부는 일부 실시예에서 네트 리스트 안에 부호화되어(encoded) 있으며, 하나 이상의 컴퓨터 판독가능한 매체상에 저장되고 실리콘의 격리된 환경(110)을 구현하기 위해/칩셋의 다른 영역과 통합하기 위해 칩 제조업자에게 제공된다. 칩셋은 장치(100)의 다수의 통합 회로 중 하나로서 통합된 주문형 반도체(application specific integrated circuit, ASIC)의 일부일 수 있다.
도6을 참고로 하면, 전술된 바와 같은 메인 프로세서에 의한 순서 검증을 가능하게 하는 실행을 위한 소프트웨어 코드를 준비하는 방법은 보조 프로세서에 대한 명령의 순서를 식별하기 위해 코드를 분석하는 단계 610 및 전술된 바와 같이 식별된 명령으로 순서대로 하나씩 초기 상태를 업데이트함으로써 예측 상태의 형태로 검증 정보를 도출하는 단계를 포함한다. 예측 상태(또는 그 함수)는 코드에 제공된 순서대로 명령을 관찰할 때의 추적기 모듈(150)의 상태에 대응한다. 검증 정보는 예를 들어 비대칭 암호화를 사용하여, 선택적인 단계 630에서 암호화될 수 있고 단계 640에서 소프트웨어 코드에 포함된다. 예를 들어, 검증 정보는 추적기 모듈(150) 동작의 결과를 출력할 수 있도록 요청하는 코드 또는 코드의 데이터 섹션 또는 별도의 데이터 파일의 명령에 포함될 수 있다. 제3자에 의해 이뤄지는 단계 650에서, 소프트웨어 코드 및 검증 정보는 장치(100)에 분배되고, 예를 들어 셋톱 박스의 경우 예를 들어 펌웨어 업데이트, 예를 들어 방송에 의한(over the air) 소프트웨어 업데이트의 일부로서, 제조 도중 또는 제조 후에 장치(100)에 분배되는데, 예를 들어 제조시 장치(100)의 정적 메모리안에 포함되거나 영구 메모리, 예를 들어 플래시 메모리 안에 로딩된다.
검증 정보가 암호화될 경우, 복호화 키, 예를 들어 암호화가 비대칭인 경우 공개 키가 소프트웨어 코드와 별도로 분배된다. 복호화 키는, 예를 들어, 격리됨 실행 환경(110)의 네트 리스트안에 하드-코드될(hard-coded) 수 있거나, 제조시 또는 1차 부팅시 그 안에 설치될 수 있다. 복호화 키는, 일부 실시예에서, 저장되어 가끔 업데이트될 수 있다.
일부 구체적인 실시예의 상기 설명을 읽으면, 이하의 실시예가 기재되고 권리주장된다는 것을 이해할 것이다.
1. 명령의 순서를 포함하는 실행 환경의 실행을 관찰하는 방법으로서,
동작을 실행하기 위해 메인 프로세서로부터 하나 이상의 보조 프로세서까지순서대로 발송된 명령을 관찰하는 단계;
검증 정보를 이용하여 명령의 순서를 검증하는 단계; 및
순서의 성공적인 검증에 응답하여 동작의 결과의 실행 환경으로부터의 출력을 활성화하는 단계; 및
순서의 실패한 검증에 응답하여 검증 실패 신호를 생성하는 단계
중 적어도 하나의 단계를 포함하는
명령의 순서를 포함하는 실행 환경의 실행을 관찰하는 방법.
예를 들어, 실행 환경은 실행환경이 구현되는 장치로부터 격리되어, 하나 이상의 전용 인터페이스에 거쳐 장치의 나머지와 통신할 수 있다. 이러한 방식으로, 특히 관찰이 하드웨어로 구현되는 경우, 격리된 실행 환경에서의 연산의 무결성은 강화된 보안에 의해 보장될 수 있다.
2. 제1항에 있어서, 각각의 명령에 의해 상태를 순서대로 업데이트하는 단계를 포함하고, 순서를 검증하는 단계는 검증 정보를 사용하여 상태를 검증하는 단계를 포함하는 방법.
상태를 업데이트하는 단계는 명령 또는 명령의 해시를 그 상태에 추가하거나 명령 또는 명령의 해시를 다른 적합한 동작과 추가로 또는 추가하는 대신에 결합하는 단계를 포함할 수 있다. 검증 정보를 사용하여 상태를 검증하는 단계는, 예를 들어 상태의 각각의 함수의 값과 검증 정보의 값을 비교함으로써, 상태의 값을 검증 정보의 값과 비교하는 단계를 포함할 수 있다. 함수 중 하나 또는 둘 모두는 1과의 곱하기(multiplication with unity)일 수 있고, 이 함수는 각각의 값들이 비교될 수 있는 한 동일하거나 상이할 수 있다. 가능한 함수의 예는 해시 함수 또는 암호화 일-방향 함수이다. 상태를 규정하고 및 업데이트하는 다른 방식도 물론 동일하게 가능한데, 예를 들어 각각의 명령, 또는 각각의 명령의 해시를 임의의 이전의 명령 또는 해시에 연결하여, 순서의 길이와 함께 크기가 변경될 상태를 제공할 수 있다. 더욱 일반적으로, 상태를 업데이트하는 단계는 다음 상태를 계산하기 위해 현재 상태 및 현재 명령, 또는 현재 명령의 해시/다이제스트/함수를 사용하여 계산하는 단계를 포함한다.
3. 제2항에 있어서, 상태를 검증하는 단계는 상태를 검증 정보와 비교하는 단계를 포함하는 방법.
4. 제2항 또는 제3항에 있어서, 검증 정보는 각각의 정보에 의해 상태를 순서대로 업데이트한 후 예측되는 상태의 값을 포함한다.
5. 제3항에 있어서, 상태를 비교하는 단계는 상태의 함수를 검증 정보와 비교하는 단계를 포함하고, 검증 정보는 각각의 정보에 의해 상태를 순서대로 업데이트한 후 예측되는 상태의 함수의 값을 포함하는 방법.
6. 제2항 내지 제5항 중 어느 한 항에 있어서, 상태를 업데이트하는 단계는 메인 프로세서로부터 하나 이상의 보조 프로세서로 발송될 때 명령을 수신하는 단계 및 명령이 수신될 때 상태를 업데이트하는 단계를 포함하는 방법.
상태를 업데이트하는 단계는 명령을 저장하는 단계 및 상태를 업데이트하는 단계 및 나중에, 예를 들어 출력 요청이 수신될 때, 검증하는 단계를 포함하거나, 순서를 검증하는 단계는 검증 정보에 대해 명령의 순서 또는 그의 해시 또는 암호화 일-방향 함수를 비교하는 단계를 포함할 수 있다. 순서는 동작을 구현하는데 필요한 명령의 전체 순서 또는 단지 하나의 서브셋일 수 있다. 예를 들어, 검증은 그 명령까지의 순서에 대해 각각의 명령이 수신된 후(대응하는 검증 정보와 함께) 발생할 수 있다. 이 경우, 긍정적인 검증은 그 순서의 마지막 명령이 검증될 때까지 출력을 활성화하지 않을 수 있다.
7. 전술된 어느 항에 있어서, 검증 정보를 획득하기 위해 암호화된 검증 정보를 복호화하는 단계를 포함하는 방법.
8. 제6항에 있어서, 암호화된 검증 정보는 개인 키를 사용하여 암호화된 것이고, 암호화된 정보를 복호화하는 단계는 대응하는 공개 키를 사용하는 단계를 포함하는 방법.
9. 전술한 어느 항에 있어서, 동작의 결과의 출력을 활성화하기 위해 요청을 수신하는 단계 및 요청 수신에 응답하여 순서를 검증하는 단계를 포함하는 방법.
10. 제9항에 있어서, 요청은 메인 프로세서로부터 수신되는 방법.
11. 제9항 또는 제10항에 있어서, 요청은 검증 정보를 포함하는 방법.
12. 전술한 어느 항에 있어서, 결과의 출력을 활성화하는 단계는 동작의 결과를 출력하기 위해 환경 외부로부터 액세스할 수 있는 인터페이스 메모리에 액세스하기 위해 메인 프로세서에 의한 액세스를 활성화하는 단계 포함하는 방법.
출력/액세스를 활성화하기 전에, 성공적인 검증에 응답하여 출력/액세스를 활성화하는 실시예에서, 출력/액세스는 비활성화된다. 특히, 액세스는 각각의 AND 게이트에 대해 다수의 방식으로,예를 들어 액세스 제어 신호를 인터페이스 메모리의 각각의 비트, 또는 인터페이스가 양-방향성인 경우 인터페이스 메모리의 각각의 출력 비트에 연결하고, 액세스를 비활성화하기 위해 액세스 제어 신호를 ZERO로 설정하고 액세스를 활성화하기 위해 ONE으로 설정함으로써, 활성화/비활성화될 수 있다. 메인 프로세서는 비활성화된 상태의 인터페이스에 쓰기를 시도할 수 있지만 이는 인터페이스 매모리의 비트의 값에 영향을 미치지 않는다는 것을 알 수 있을 것이다. 액세스는 물론 다수의 방식으로, 예를 들어 메인 프로세서와 인터페이스 메모리 사이의 접속부를 개방 또는 폐쇄하기 위해 스위치를 작동시킴으로써, 활성화 또는 비활성화될 수 있다. 출력은 환경 외부로부터 인터페이스 메모리까지의 액세스를 비활성화함으로써 비활성화될 수 있다는 것을 이해할 것이다.
검증 실패 신호는 상기 방법이 구현되는 장치 또는 검증 실패에 대해 장치의 사용자에게 경고하는 경보기를 울릴수 있다. 부가적으로 또는 대신에, 검증 실패 신호는 예를 들어 프로세싱 도중에 출력이 비활성화되지 않는 실시예에서 결과의 출력을 비활성화하고, 메모리로부터 결과 및/또는 임의의 중간 결과를 삭제하고, 보조 프로세서에 의한 명령의 프로세싱을 방지하는 등의 특정 기능을 비활성화할 수 있다.
13. 전술된 어느 항에 있어서, 결과의 프로세서에 의한 출력이 활성화될 때 메인 프로세서와 하나 이상의 보조 프로세서 사이의 통신을 비활성화하는 단계를 포함하는 방법.
통신을 비활성화하기 전에, 통신이 활성화되어 있다는 것을 이해할 것이다. 통신은 다수의 방식으로 활성화/비활성화될 수 있다. 예를 들어, 메인 프로세서는 메인 프로세서와 하나 이상의 보조 프로세서 사이의 접속부를 개방 또는 폐쇄하기 위해 작동되는 스위치, 예를 들어 하나 이상의 보조 프로세서가 접속되는 버스에 메인 프로세서를 연결하는 라인상의 스위치, 고정된 값에 버스를 유지하는 게이트 등을 통해 보조 프로세서에 접속될 수 있다. 대안적으로, 액세스 제어 신호는 보조 프로세서로부터의 입력 및/또는 출력을 중단(interrupt)시키기 위해 예를 들어, 각각의 AND 게이트를 갖고 액세스를 비활성화하기 위해 액세스 제어 신호를 ZERO로 설정하고 액세스를 활성화하기 위해 액세스 제어 신호를 ONE으로 설정하는 보조 프로세서에 연결될 수 있다. 메인 프로세서는 비활성화된 상태의 보조 프로세서에 대해 읽기 또는 쓰기를 시도할 수 있지만 어떤 응답도 수신하지 않아서 통신이 사실상 비활성화될 것이라는 것을 알 수 있을 것이다.
14. 전술된 어느 항에 있어서, 순서의 성공적인 검증에 응답하여 동작의 결과의 실행 환경으로부터 출력을 활성화하는 단계; 및
순서의 실패한 검증에 응답하여 검증 실패 신호를 생성하는 단계 둘 다를 포함하는 방법.
15. 전술된 어느 항에 있어서, 검증 정보는 동작을 실행하기 위해 메인 프로세서에 의해 실행을 위한 코드와 함께 저장되는 방법.
물론, 검증 정보는 경우에 따라 깨끗하거나 암호화된 형태의 코드와 함께 저장된다.
16. 전술된 어느 항에 있어서, 실행 환경은 컴퓨팅 장치의 일부이고, 코드는 실행 환경 외부의 검증 정보와 함께 컴퓨팅 장치 안에 저장되는 방법.
17. 격리된 환경을 포함하는 컴퓨팅 장치로서, 격리된 환경은,
동작을 실행하도록 구성되는 메인 프로세서;
메인 프로세서로부터 명령을 수신하고, 명령을 실행하고, 각각의 응답을 메인 프로세서에 반환하도록 구성되는 하나 이상의 보조 프로세서로서, 동작을 실행하는 것은 메인 프로세서가 명령을 발송하고 각각의 응답을 수신하는 것을 포함하는, 하나 이상의 보조 프로세서;
메인 프로세서로부터 동작의 결과를 수신하기 위해 격리된 환경과 컴퓨팅 장치의 나머지 사이에서 접속하고, 격리된 환경 외부로부터 액세스할 수 있게 하는 인터페이스; 및
추적 모듈로서,
메인 프로세서로부터 하나 이상의 보조 프로세서까지 발송된 명령을 관찰;
검증 정보를 사용하여 명령의 순서를 검증;
결과의 출력을 활성화하기 위해 순서의 성공적인 검증에 응답하여 인터페이스 버퍼로의 액세스를 활성화, 및 순서의 실패한 검증에 응답하여 검증 실패 신호를 생성 중 적어도 하나를 하도록 구성되는 추적 모듈을 포함하는 컴퓨팅 장치.
액세스 활성화, 검증 신호, 상태 업데이트 등에 관한 상기 고려사항이 장치 실시예에 동일하게 적용된다는 것을 이해할 것이다.
또한, 물론, 컴퓨팅 장치는 리치 운영 체계 환경 및/또는 격리된 환경 외부의 공유되거나 각각의 프로세서(들)를 구비한 신뢰 실행 환경을 구현하고 인터페이스를 통해 격리된 환경과 접속하는 하나 이상의 부가적인 메인 및/또는 보조 프로세서를 가질 수 있다는 것을 이해할 것이다. 인터페이스는 인터페이스 메모리 또는 버퍼를 포함할 수 있으며, 인터페이스에 대한 액세스는 예를 들어 전술된 바와 같이 추적기 모듈에 의해 제어된다.
18. 제17항에 있어서, 추적 모듈은 제2항 내지 제16항 중 어느 한 항에 따르는 방법을 구현하도록 구성되는 장치.
19. 제15항 내지 제18항 중 어느 한 항에 있어서, 컴퓨팅 장치는 동작을 구현하기 위해 메인 프로세서에 의해 실행하기 위한 코드를 검증 정보와 함께 저장하기 위한 코드 메모리를 포함하는 장치.
20. 하나 이상의 컴퓨터 판독가능한 매체에 선택적으로 저장된 네트 리스트로서, 네트 리스트는 제17항 내지 제19항 중 어느 한 항에 따르는 회로 소자의 사양 및 격리된 환경의 그들의 상호접속부를 포함하는, 네트 리스트.
21. 제1항 내지 제16항 중 어느 한 항의 방법을 구현하기 위한 수단을 포함하는 컴퓨팅 장치.
22. 제1항 내지 제16항 중 어느 한 항의 방법의 동작을 구현하기 위해 메인 프로세서에 의해 실행하기 위한 코드를 준비하는 방법으로서,
코드의 하나 이상의 보조 프로세서에 대한 명령의 순서로부터 검증 정보를 도출하는 단계 및 코드와 함께 검증 정보를 포함하는 단계를 포함하는, 방법.
23. 제22항에 있어서, 검증 정보는 암호화된 형태로 코드에 포함되는, 방법.
컴퓨팅 장치의 실시예가 앞서 설명되었다. 컴퓨팅 장치, 예를 들어 셋-톱 박스 또는 다은 매체 소지 장치는 근거리 통신망(Local Area Network, LAN), 인트라넷, 엑스트라넷, 또는 인터넷의 다른 기계에 연결(예를 들어 네트워크연결)될 수 있다. 컴퓨팅 장치는 클라이언트-서버 네트워크 환경의 서버 또는 클라이언트 기계의 용량으로 동작할 수 있거나, 피어-투-피어(또는 분산된) 네트워크 환경의 피어(peer) 기계로서 동작할 수 있다. 컴퓨팅 장치는 개인용 컴퓨터(PC), 태블릿 컴퓨터, 셋-톱-박스(STB), 개인 휴대 정보 단말기(PDA), 셀룰러 전화, 웹 기기, 서버, 내트워크 라우터, 스위치 또는 브리지, 또는 기계에 의해 취해질 동작을 지정하는 명령의 셋을 실행할 수 있는(순차적으로 또는 기타) 임의의 기계일 수 있다. 또한, 단지 하나의 연상 장치만 도시되어 있지만, "컴퓨팅 장치"라는 용어는 여기서 논의된 하나 이상의 방법을 수행하기 위해 명령의 하나의 셋(또는 복수의 셋)을 개별적으로 또는 함께 실행하는 기계의 수집(예를 들어, 컴퓨터)을 포함하도록 취해질 수 있다.
도시된 부품 이외에, 컴퓨팅 장치는 버스를 통해 서로 통신하는 전술된 것, 메인 메모리(예를 들어, 읽기-전용 메모리(ROM), 플래시 메모리, 동기식 DRAM(SDRAM) 또는 Rambus DRAM(RDRAM) 등과 같은 동적 랜덤 액세스 메모리(DRAM) 등), 정적 메모리(예를 들어, 플래시 메모리, 정적 랜덤 액세스 메모리(SRAM), 등), 및 2차 메모리(예를 들어, 데이터 저장 장치 XX18)이외에, 하나 이상의 프로세서일 수 있다.
컴퓨팅 장치는 네트워크 인터페이스 장치를 추가로 포함할 수 있다. 컴퓨팅 장치는 또한 비이도 디스플레이 유닛(예를 들어, 액정 디스플레이(LCD) 또는 음극선관(cathode ray tube, CRT)), 영숫자 입력 장치(예를 들어, 키보드 또는 터치스크린), 및 오디오 장치(예를 들어, 스피커)를 포함할 수 있다.
전술된 다양한 방법은 컴퓨터 프로그램에 의해 구현될 수 있다. 컴퓨터 프로그램은 전술된 다양한 방법 중 하나 이상의 기능을 수행하도록 컴퓨터에게 명령하도록 마련되는 컴퓨터 코드를 포함할 수 있다. 이러한 방법을 수행하기 위한 컴퓨터 프로그램 및/또는 코드는 컴퓨터와 같은 장비, 하나 이상의 컴퓨터 판독가능한 매체 또는, 더욱 일반적으로는 컴퓨터 프로그램에 제공될 수 있다. 컴퓨터 판독가능한 매체는 일시적 또는 비-일시적일 수 있다. 하나 이상의 컴퓨터 판독가능한 매체는 예를 들어, 전자, 자기, 광학, 전기자기, 적외선, 또는 반도체 시스템, 또는 예를 들어 인터넷을 거쳐 코드를 다운로드하기 위한, 데이터 전송용 전파 매체(propagation medium)일 수 있다. 대안적으로, 하나 이상의 컴퓨터 판독가능한 매체는 반도체 또는 솔리드 스테이트 메모리, 자기 테이프, 제거가능한 컴퓨터 디스켓, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 강성 자기 디스크, 및 CD-ROM, CD-R/W 또는 DVD와 같은 광학 디스크의 형태를 취할 수 있다.
"하드웨어 부품"은 특정 동작을 수행할 수 있는 유형(有形)의(예를 들어, 비-일시적인) 물리적 부품(예를 들어, 하나 이상의 프로세서 한 세트)이고, 특정 물리적 방식으로 구성되거나 마련될 수 있다. 히드웨어 부품은 특정 동작을 수행하도록 영구적으로 구성되는 전용 회로 또는 로직을 포함할 수 있다. 하드웨어 부품은 필드 프로그램가능 게이트 어레이(Field Programmable Gate Array, FPGA) 또는 ASIC와 같은 특수-목적 프로세서이거나 포함할 수 있다. 하드웨어 부품은 특정 동작을 수행하도록 소프트웨어에 의해 일시적으로 구성되는 프로그램가능한 로직 또는 회로를 포함할 수도 있다.
따라서, 문구 "하드웨어 부품"은 여기에 기재된 특정 방식으로 동작하거나 특정 동작을 수행하도록 물리적으로 구성되거나, 영구적으로 구성(예를 들어 하드웨어에 내장되는)되거나, 일시적으로 구성(예를 들어, 프로그램되는)될 수 있는 유형(有形)의 개체를 포함하는 것으로 이해되어야 한다.
구체적으로 다르게 언급하지 않는 한, 다음의 논의로부터 명백한 바와 같이, 설명을 전반에 걸쳐, "수신하는(receiving)", "결정하는(determining)", "비교하는(comparing)", "활성화하는(enabling)", "유지하는(maintain)", "식별하는(identifying)", "계산하는(calculating)", "검증하는(verifying)", "방지하는(preventing)" 등의 용어를 활용하는 논의는, 레지스터 및 메모리 내의 물리적(전자식) 양으로 표현되는 데이터를 메모리 또는 레지스터 또는 다른 이러한 정보 저장소, 전송 또는 디스플레이 장치내의 물리적 양으로서 비슷하게 표현되는 다른 데이터로 조작하고 변환하는 컴퓨터 프로세서, 시스템, 또는 유사 전자식 컴퓨팅 장치의 동작 및 프로세스를 언급한다는 것을 알 수 있을 것이다.
본 발명은 예시를 위한 것으로, 제한적인 것이 아니라는 것이 이해되어야 한다. 많은 다른 구현예는 본 발명을 읽고 이해할 때 당업자에게 명백해질 것이다. 본 발명은 특정 예 구현을 참조로 설명되었지만, 본 발명은 설명된 구현예에 한정되지 않고, 첨부된 청구범위의 사상 및 범주내에서 변형 및 변경하여 실시될 수 있다는 것이 인식될 것이다. 따라서, 명세서 및 도면은 제한적인 의미보다는 예시적인 의미로 간주되어야 한다. 본 발명의 범주는, 따라서, 청구범위가 속하는 등가물의 전체 범위와 함께 첨부된 청구범위를 참고로 결정되어야 한다.

Claims (15)

  1. 명령의 순서를 포함하는 동작의 실행 환경의 실행을 관찰하는 방법으로서,
    동작을 실행하기 위해 메인 프로세서로부터 하나 이상의 보조 프로세서까지 순서대로 발송된 명령을 관찰하는 단계;
    검증 정보를 이용하여 명령의 순서를 검증하는 단계;
    명령의 순서의 성공적인 검증에 응답하여, 명령의 순서 중 하나의 명령을 처리하도록 보조 프로세서 중 하나를 활성화하는 단계; 및
    순서의 실패한 검증에 응답하여, 검증 실패 신호를 생성하는 단계를 포함하는
    명령의 순서를 포함하는 실행 환경의 실행을 관찰하는 방법.
  2. 제1항에 있어서,
    각각의 명령에 의해 상태를 순서대로 업데이트하는 단계를 포함하고, 순서를 검증하는 단계는 검증 정보를 사용하여 상태를 검증하는 단계를 포함하는
    명령의 순서를 포함하는 실행 환경의 실행을 관찰하는 방법.
  3. 제2항에 있어서,
    상태를 검증하는 단계는 상태를 검증 정보와 비교하는 단계를 포함하는
    명령의 순서를 포함하는 실행 환경의 실행을 관찰하는 방법.
  4. 제2항에 있어서,
    상태를 업데이트하는 단계는 메인 프로세서로부터 하나 이상의 보조 프로세서로 발송될 때 명령을 수신하는 단계 및 명령이 수신될 때 상태를 업데이트하는 단계를 포함하는
    명령의 순서를 포함하는 실행 환경의 실행을 관찰하는 방법.
  5. 제1항에 있어서,
    동작의 결과의 출력을 활성화하기 위해 요청을 수신하는 단계 및 요청 수신에 응답하여 순서를 검증하는 단계를 포함하는
    명령의 순서를 포함하는 실행 환경의 실행을 관찰하는 방법.
  6. 제5항에 있어서,
    상기 요청은 메인 프로세서로부터 수신되는
    명령의 순서를 포함하는 실행 환경의 실행을 관찰하는 방법.
  7. 제6항에 있어서,
    상기 요청은 검증 정보를 포함하는
    명령의 순서를 포함하는 실행 환경의 실행을 관찰하는 방법.
  8. 제5항에 있어서,
    결과의 출력을 활성화하는 것은 동작의 결과를 출력하기 위해 환경 외부로부터 액세스할 수 있는 인터페이스 메모리에 액세스하기 위해 메인 프로세서에 의한 액세스를 활성화하는 단계를 포함하는
    명령의 순서를 포함하는 실행 환경의 실행을 관찰하는 방법.
  9. 제5항에 있어서,
    결과의 프로세서에 의한 출력이 활성화될 때 메인 프로세서와 하나 이상의 보조 프로세서 사이의 통신을 비활성화하는 단계를 포함하는
    명령의 순서를 포함하는 실행 환경의 실행을 관찰하는 방법.
  10. 제1항에 있어서,
    검증 정보는 동작을 실행하기 위해 메인 프로세서에 의해 실행을 위한 코드와 함께 저장되는
    명령의 순서를 포함하는 실행 환경의 실행을 관찰하는 방법.
  11. 격리된 환경을 포함하는 컴퓨팅 장치로서, 격리된 환경은,
    동작을 실행하도록 구성되는 메인 프로세서;
    메인 프로세서로부터 명령을 수신하고, 명령을 실행하고, 각각의 응답을 메인 프로세서에 반환하도록 구성되는 하나 이상의 보조 프로세서로서, 동작을 실행하는 것은 메인 프로세서가 명령을 발송하고 각각의 응답을 수신하는 것을 포함하는, 하나 이상의 보조 프로세서;
    메인 프로세서로부터 동작의 결과를 수신하기 위해 격리된 환경과 컴퓨팅 장치의 나머지 사이에서 접속하고(interfacing), 격리된 환경 외부로부터 액세스할 수 있게 하는 인터페이스; 및
    추적 모듈을 포함하고,
    추적 모듈은
    메인 프로세서로부터 하나 이상의 보조 프로세서까지 발송된 명령을 관찰하고;
    검증 정보를 사용하여 명령의 순서를 검증하고; 및
    명령의 순서의 성공적인 검증에 응답하여, 명령의 순서 중 하나의 명령을 처리하도록 보조 프로세서중 하나를 활성화하고,
    순서의 실패한 검증에 응답하여, 검증 실패 신호를 생성하도록 구성되는
    격리된 환경을 포함하는 컴퓨팅 장치.
  12. 제11항에 있어서,
    추적 모듈은 제2항에 따르는 방법을 구현하도록 구성되는
    격리된 환경을 포함하는 컴퓨팅 장치.
  13. 제11항에 있어서,
    컴퓨팅 장치는 동작을 구현하기 위해 메인 프로세서에 의해 실행하기 위한 코드를 검증 정보와 함께 저장하기 위한 코드 메모리를 포함하고, 코드 메모리는 격리된 환경 외부에 존재하는
    격리된 환경을 포함하는 컴퓨팅 장치.
  14. 삭제
  15. 제1항의 방법의 동작을 구현하기 위해 메인 프로세서에 의해 실행하기 위한 코드를 준비하는 방법으로서,
    코드의 하나 이상의 보조 프로세서에 대한 명령의 순서로부터 검증 정보를 도출하는 단계 및 코드와 함께 검증 정보를 포함하는 단계를 포함하는
    메인 프로세서에 의해 실행하기 위한 코드를 준비하는 방법.
KR1020197006350A 2016-08-04 2017-08-02 순서 검증 KR102422351B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP16182872.8A EP3279826A1 (en) 2016-08-04 2016-08-04 Sequence verification
EP16182872.8 2016-08-04
PCT/EP2017/069578 WO2018024797A1 (en) 2016-08-04 2017-08-02 Sequence verification

Publications (2)

Publication Number Publication Date
KR20190038609A KR20190038609A (ko) 2019-04-08
KR102422351B1 true KR102422351B1 (ko) 2022-07-19

Family

ID=56681964

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197006350A KR102422351B1 (ko) 2016-08-04 2017-08-02 순서 검증

Country Status (7)

Country Link
US (1) US11314518B2 (ko)
EP (2) EP3279826A1 (ko)
KR (1) KR102422351B1 (ko)
CN (1) CN109891425B (ko)
DK (1) DK3494509T3 (ko)
ES (1) ES2894890T3 (ko)
WO (1) WO2018024797A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112055846A (zh) * 2018-07-31 2020-12-08 惠普发展公司,有限责任合伙企业 执行指令
US11269637B2 (en) * 2020-07-23 2022-03-08 Hewlett Packard Enterprise Development Lp Validating machine-readable instructions using an iterative validation process
US11698969B1 (en) * 2021-06-25 2023-07-11 Amazon Technologies, Inc. Boot security of integrated circuit device

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060059369A1 (en) * 2004-09-10 2006-03-16 International Business Machines Corporation Circuit chip for cryptographic processing having a secure interface to an external memory

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0889088A1 (en) 1997-07-01 1999-01-07 Du Pont De Nemours International S.A. Polyolefin compositions
EP1013026A4 (en) * 1997-09-16 2004-09-08 Information Resource Engineeri CRYPTOGRAPHIC COPROCESSOR
FR2790844B1 (fr) * 1999-03-09 2001-05-25 Gemplus Card Int Procede et dispositif de surveillance du deroulement d'un programme, dispositif programme permettant la surveillance de son programme
DE10061997A1 (de) * 2000-12-13 2002-07-18 Infineon Technologies Ag Kryptographieprozessor
DE602004031719D1 (de) * 2004-07-01 2011-04-21 Texas Instruments Inc Verfahren und System zur Überprüfung der Ausführung einer Eingabesequenz eines sicheren Modus
US7739517B2 (en) * 2005-03-31 2010-06-15 Intel Corporation Hardware-based authentication of a software program
FR2884000A1 (fr) * 2005-04-05 2006-10-06 St Microelectronics Sa Coprocesseur securise comprenant des moyens pour empecher l'acces a un organe du coprocesseur
US9177153B1 (en) * 2005-10-07 2015-11-03 Carnegie Mellon University Verifying integrity and guaranteeing execution of code on untrusted computer platform
CN101196965A (zh) * 2006-12-07 2008-06-11 上海安创信息科技有限公司 防攻击高级加密标准的加密芯片的算法
EP2262259A1 (en) * 2009-06-08 2010-12-15 Nagravision S.A. Method for monitoring execution of data processing program instructions in a security module
US8904189B1 (en) * 2010-07-15 2014-12-02 The Research Foundation For The State University Of New York System and method for validating program execution at run-time using control flow signatures
CN103888254B (zh) * 2012-12-21 2017-05-31 阿里巴巴集团控股有限公司 一种网络验证信息的方法和装置
CN103279700A (zh) * 2013-06-08 2013-09-04 北京时代奥视数码技术有限公司 液晶监视器的固件版本验证方法和液晶监视器
KR101584221B1 (ko) * 2013-10-18 2016-01-19 삼성전자주식회사 Crum 칩 및 이를 포함하는 소모품 유닛을 검증하는 화상형성장치와 그 방법
US10783250B2 (en) * 2014-07-24 2020-09-22 Nuvoton Technology Corporation Secured master-mediated transactions between slave devices using bus monitoring

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060059369A1 (en) * 2004-09-10 2006-03-16 International Business Machines Corporation Circuit chip for cryptographic processing having a secure interface to an external memory

Also Published As

Publication number Publication date
WO2018024797A1 (en) 2018-02-08
EP3494509B1 (en) 2021-09-29
US20190187994A1 (en) 2019-06-20
ES2894890T3 (es) 2022-02-16
DK3494509T3 (da) 2021-10-25
US11314518B2 (en) 2022-04-26
EP3279826A1 (en) 2018-02-07
CN109891425B (zh) 2022-11-15
EP3494509A1 (en) 2019-06-12
CN109891425A (zh) 2019-06-14
KR20190038609A (ko) 2019-04-08

Similar Documents

Publication Publication Date Title
EP3265950B1 (en) Device attestation through security hardened management agent
US9853974B2 (en) Implementing access control by system-on-chip
US20190280883A1 (en) Key-Attestation-Contingent Certificate Issuance
KR101888712B1 (ko) 운영 체제 구성 값 보호 기법
US20170337380A1 (en) Self-contained cryptographic boot policy validation
US9565169B2 (en) Device theft protection associating a device identifier and a user identifier
US20100082987A1 (en) Transparent trust validation of an unknown platform
US10917237B2 (en) Attestable and destructible device identity
EP3637297A1 (en) Securing firmware
CN102279760A (zh) 利用初始保护组件来进行设备引导
US9160542B2 (en) Authorizing use of a test key signed build
KR102422351B1 (ko) 순서 검증
US11095454B2 (en) Releasing secret information in a computer system
US20220382874A1 (en) Secure computation environment
US20230353343A1 (en) Providing access to a hardware resource based on a canary value
JP2014524628A (ja) デジタル署名するオーソリティ依存のプラットフォームシークレット
US20120278598A1 (en) Disabling communication ports
CN109154903B (zh) 用于虚拟机的恢复环境
JP6994022B2 (ja) セキュア・ブート更新にわたる保護済みの機密情報の維持
US9064118B1 (en) Indicating whether a system has booted up from an untrusted image
CN117610083A (zh) 文件校验方法、装置、电子设备及计算机存储介质
CN115361202A (zh) 区块链跨链方法、装置、存储介质及电子设备

Legal Events

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