KR20210014686A - Tee 측에 대해 병렬인 멀티-코어를 구현하기 위한 방법, 장치 및 시스템 - Google Patents

Tee 측에 대해 병렬인 멀티-코어를 구현하기 위한 방법, 장치 및 시스템 Download PDF

Info

Publication number
KR20210014686A
KR20210014686A KR1020207037763A KR20207037763A KR20210014686A KR 20210014686 A KR20210014686 A KR 20210014686A KR 1020207037763 A KR1020207037763 A KR 1020207037763A KR 20207037763 A KR20207037763 A KR 20207037763A KR 20210014686 A KR20210014686 A KR 20210014686A
Authority
KR
South Korea
Prior art keywords
thread
tee
sub
shadow
core
Prior art date
Application number
KR1020207037763A
Other languages
English (en)
Other versions
KR102509384B1 (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 KR20210014686A publication Critical patent/KR20210014686A/ko
Application granted granted Critical
Publication of KR102509384B1 publication Critical patent/KR102509384B1/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
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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/53Monitoring 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 executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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/74Protecting 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 operating in dual or compartmented mode, i.e. at least one secure mode
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • 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
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5015Service provider selection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Neurology (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • Computer Hardware Design (AREA)
  • Collating Specific Patterns (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

본 출원은 TEE, 컴퓨터 시스템 등 상의 멀티프로세싱을 구현하기 위한 방법 및 장치를 제공한다. 이러한 방법은, TEE에 의해, 복수의 서브-스레드들을 생성하는 단계- 서브-스레드들은 TEE 상에 배치되는 TA의 서브-기능들을 구현하기 위해 사용됨 -; 각각의 서브-스레드에 대해, TEE에 의해, REE(rich execution environment)를 트리거하여 서브-스레드에 대응하는 섀도우 스레드를 생성하는 단계- 섀도우 스레드의 실행은 섀도우 스레드가 실행되는 코어로 하여금 TEE에 진입하게 함 -; 및, TEE에 의해, 실행을 위해 대응하는 섀도우 스레드가 실행되는 코어에 생성된 서브-스레드를 스케줄링하는 단계를 포함한다. 이러한 방법에 따르면, 높은 성능 요건을 갖는 서비스에서의 복수의 서비스 로직은 TEE에서 병렬로 실행될 수 있고, TEE는 REE를 트리거하여 스레드를 생성하고 이러한 스레드는 TEE에 자동으로 진입한다. 이러한 방식으로, 코어가 TEE 상에 능동적으로 추가되고, TEE 상의 멀티프로세싱 유연성이 개선된다.

Description

TEE 측에 대해 병렬인 멀티-코어를 구현하기 위한 방법, 장치 및 시스템
본 출원은 운영 체제 기술들에, 특히, 멀티도메인 운영 체제에서 TEE 상의 멀티프로세싱을 구현하기 위한 방법 및 장치, 및 시스템에 관련된다.
단말 디바이스의 대표적인 보안 프레임워크로서, 단말 디바이스의 보안을 보장하기 위해 ARM(advanced RISC machines) TrustZone®이 출현하며, RISC의 영문 전체 명칭은 reduced instruction set computer이다. ARM TrustZone® 아키텍처에서, 시스템-레벨 보안은 시스템 온 칩(system on chip, SoC)의 소프트웨어 및 하드웨어 리소스들을 2개의 세계들: 정상 세계(normal world) 및 보안 세계(secure world)로 분할하는 것에 의해 달성된다. 이러한 2개의 세계들은 보안 도메인 및 비-보안 도메인이라고 또한 지칭될 수 있고, 풍부한 실행 환경(rich execution environment, REE) 및 신뢰형 실행 환경(trusted execution environment, TEE)에 각각 대응할 수 있다. REE 및 TEE는 동일한 물리적 디바이스 상에서 실행되고, REE 및 TEE 각각에서 하나의 운영 체제가 실행된다. 낮은 보안 요건을 갖는 클라이언트 애플리케이션(client application, CA)이 REE에서 실행된다. 높은 보안 요건을 갖는 신뢰형 애플리케이션(trusted application, TA)이 TEE에서 실행되고, TEE는 인가된 신뢰형 애플리케이션 TA에 대한 보안 실행 환경을 제공한다. ARM TrustZone®에 의해 제공되는 통신 메커니즘에 따라 CA와 TA 사이에서 통신이 수행되며, 이러한 통신은 클라이언트와 서버 사이에서 수행되는 통신과 유사하다.
현재, 생체 인식 기술, 예를 들어, 지문 인식 기술 또는 안면 인식 기술이, 단말 상의 더 많은 애플리케이션 시나리오들에 적용된다. 지문 인식 기술 및 안면 인식 기술 양자 모두는 단말을 잠금해제하고 단말 상의 지불을 행하는 것과 같은 시나리오들에서 사용될 수 있다. 생체 인식 기술의 사용은 단말의 사용자에게 많은 편의성을 가져다 준다. 그러나, 민감한 개인 데이터인, 사용자의 일부 생체 특징들이 생체 인식 기술이 사용될 때 저장된다. 따라서, 생체 인식 기술을 사용하는 해결책은 단말에 대해 높은 보안 요건을 갖는다.
종래 기술에서, 생체 인식 해결책의 보안을 보장하기 위해 ARM TrustZone® 아키텍처가 사용될 수 있다. 구체적으로, 생체 인식의 메인 서비스 로직(특징 추출, 특징 비교, 생기 검출, 및 특징 저장을 포함함)이 TA로서 구현되고, 이러한 TA는 TEE에서 실행된다. 또한, 생체 특징 데이터가 TEE에 또한 저장된다. 이러한 방식으로, TEE에 의해 제공되는 보안 환경은 전체 해결책의 보안을 보장한다.
그러나, ARM TrustZone®은 TEE가 하나의 코어(일반적으로 코어 0이라고 지칭됨) 상에서만 실행할 수 있다는 원리에 따라 초기 스테이지에서 설계된다. 이러한 설계는 시스템을 매우 단순화할 수 있고 이전의 비교적 단순한 애플리케이션 시나리오의 요건을 충족시킨다. 그러나, 전술한 애플리케이션 시나리오들에서는, 높은 성능이 요구되고 생체 인식 기술의 처리 로직이 비교적 복잡하기 때문에, TEE의 높은 계산 능력이 요구된다. 결과적으로, TEE가 싱글 코어 상에서 실행되는 초기 구현 해결책은 이러한 애플리케이션 시나리오들의 성능 요건들을 충족시킬 수 없다. 싱글-코어 해결책이 안면 잠금해제 또는 안면 지불에 대해 사용되면, 느린 안면 잠금해제 속도 또는 안면 지불 속도로 인해 사용자 경험이 불량하다.
이러한 문제점을 해결하기 위해, 종래 기술의 OP-TEE(open portable trusted execution environment)는 단순한 멀티-코어 구현 해결책을 제공한다. 도 1에 도시되는 바와 같이, 복수의 CA들은 복수의 TA들에 대한 보안 액세스를 병렬로 착수하는 것이 허용된다. 구체적으로, 각각의 CA는 REE 상에서 TEE 클라이언트 라이브러리(TEE client lib)를 호출하는 것에 의해 TEE 드라이버에 액세스할 수 있고; TEE 드라이버는 보안 모니터 호출(Secure Monitor Call, SMC) 명령어를 전송하여, 각각의 코어가 모니터 모드에 진입할 수 있고- 모든 코어들의 상태들은 서로 독립적임 -; 다음으로 각각의 코어는 보안 모드에 진입하고, 즉, TEE에 진입하고; TEE는 CA에 대응하는 스레드에 대한 스레드 풀을 검색하여, TEE에서의 태스크를 완료한다. 그러나, TEE에서의 코어들의 수량은 REE 상에서 TA를 호출하기 위한 스레드들의 수량에 의해 직접 제한된다. 코어들이 불충분할 때, TEE는 스레드를 능동적으로 생성할 수 없다. 또한, 이러한 해결책에서, 병렬로 실행되는 복수의 TA들이 단순한 스레드 풀에만 기초하여 구현되고, 통합형 스케줄링 및 로드 밸런싱 메커니즘이 제공되지 않는다. 결과적으로, 복수의 TA들의 병렬 실행은 전체 시스템 성능을 저하시키고 전력 소비를 증가시킨다.
본 출원은 멀티프로세싱을 구현하기 위한 방법 및 장치, 컴퓨터 시스템 등을 제공한다. 이러한 방법은 ARM TrustZone® 기반 단말 디바이스에 적용될 수 있거나, 또는 다른 타입의 컴퓨터 시스템에 적용될 수 있다. 이러한 해결책에 따르면, 높은 성능 요건을 갖는 서비스에서의 복수의 서비스 로직이 TEE에서 병렬로 실행될 수 있고, 코어가 TEE 상에 능동적으로 추가될 수 있어, TEE 상의 멀티프로세싱 유연성이 개선된다.
다음은 복수의 양태들에서 본 출원을 설명한다. 복수의 양태의 구현들에 대해, 상호 참조가 이루어질 수 있다는 점을 이해하기 쉽다.
제1 양태에 따르면, 본 출원은 컴퓨터 시스템을 제공한다. 이러한 컴퓨터 시스템에 REE(rich execution environment) 및 TEE(trusted execution environment)가 배치되고, REE 상에 CA가 배치되고, TEE 상에 TA가 배치된다. CA는 TA의 기능을 호출하라는 호출 요청을 TA에 전송하도록 구성된다. TA의 기능은 복수의 서브-기능들을 포함한다. 스레드 생성 모듈, 통지 모듈, 및 TEE 스케줄링 모듈이 TEE 상에 추가로 배치된다. 스레드 생성 모듈은 TA의 호출 하에서 서브-스레드를 생성하도록 구성되고, 서브-스레드는 복수의 서브-기능들 중 하나를 구현하기 위해 사용된다. 통지 모듈은 REE를 트리거하여 섀도우 스레드를 생성하도록 구성되고, 섀도우 스레드의 실행은 섀도우 스레드가 실행되는 코어로 하여금 TEE에 진입하게 한다. TEE 스케줄링 모듈은 실행을 위해 코어에 서브-스레드를 스케줄링하도록 구성된다. 예를 들어, TA는 안면 인식 기능을 구현하기 위한 TA(줄여서 안면 인식 TA), 또는 지문 인식 기능을 구현하기 위한 TA(줄여서 지문 인식 TA)이다.
TEE 상의 TA는 하나 이상의 서브-스레드(일반적으로 복수의 서브-스레드들)를 능동적으로 생성하고, 하나의 서브-스레드가 생성될 때마다, 통지를 전송하는 것에 의해, REE가 트리거되어 하나의 섀도우 스레드 REE를 생성한다는 점을 알 수 있다. TEE 상에 섀도우 스레드가 실행되는 코어로 섀도우 스레드가 스위칭되어야 하고, 다음으로 TEE 스케줄링 모듈은 실행을 위해 코어에 TA에 의해 생성되는 서브-스레드를 스케줄링한다. 이러한 방식으로, TEE 상의 TA는 요구되는 바와 같이 서브-스레드를 생성할 수 있고, 서브-스레드를 실행하기 위해 코어를 TA 측 상에 능동적으로 "풀(pull)"할 수 있다. 하나 이상의 서브-스레드 및 TA 메인 스레드가 병렬로 실행되어, TEE 상의 멀티프로세싱이 구현된다. 또한, 코어를 능동적으로 "풀하는(pulling)" 방식은 종래 기술과 비교하여 더 유연하고 더 효과적이다.
일부 구현들에서, 통지 처리 모듈이 REE 상에 추가로 배치되고, 이러한 통지 모듈은 구체적으로, 상기 서브-스레드가 생성된 후에 통지를 생성하도록, 그리고 상기 통지를 상기 통지 처리 모듈에 전송하도록 구성되고; 상기 통지 처리 모듈은 상기 통지에 기초하여 상기 섀도우 스레드를 생성하도록 구성되고, 상기 섀도우 스레드의 실행은 상기 섀도우 스레드가 실행되는 코어로 하여금 상기 TEE에 진입하게 한다. 예를 들어, 이러한 통지는 소프트웨어 인터럽트이다.
섀도우 스레드가 생성되고 실행된 후에, 섀도우 스레드가 실행되는 코어는 TEE에 진입한다. 이러한 것은 섀도우 스레드가 TEE에 진입하는 "처음(the first time)"이다. 일정 기간 후에, 섀도우 스레드는 REE로 리턴할 수 있거나, 또는 TEE에 재-진입할 수 있다.
섀도우 스레드가 REE 또는 TEE에 진입하는 것은, 섀도우 스레드가 실행되는 코어가 REE 또는 TEE에 진입하는 것으로서 이해될 수 있거나, 또는 REE 또는 TEE 또는 코어에서 섀도우 스레드가 실행되는 코어가 REE 모드 또는 TEE 모드에서 실행되는 것으로서 이해될 수 있다는 점이 주목되어야 한다.
일부 구현들에서, TEE 스케줄링 모듈은 섀도우 스레드와 서브-스레드 사이의 대응관계를 기록하도록 추가로 구성된다. 구체적으로, 상기 TEE 스케줄링 모듈은, 상기 서브-스레드에 대한 제1 스레드 식별자를 생성하도록- 상기 제1 스레드 식별자는 상기 서브-스레드에 액세스하는 스레드를 표시하기 위해 사용됨 -; 그리고 실행을 위해 상기 코어에 상기 서브-스레드를 스케줄링한 후에 상기 제1 스레드 식별자의 값을 상기 섀도우 스레드의 식별자로 설정하도록 구성된다.
"섀도우 스레드(shadow thread)"는 REE 상의 가상 CA로서 고려될 수 있고, 가상 CA는 TEE 상의 서브-스레드에 액세스하고, 섀도우 스레드의 식별자를 기록하는 것에 의해 섀도우 스레드와 서브-스레드 사이의 클라이언트/서버 관계가 수립된다.
전술한 해결책에서는, 섀도우 스레드와 서브-스레드 사이의 대응관계가 기록된다. 이러한 방식으로, 섀도우 스레드가 REE 상의 스케줄러에 의해 다른 코어에 스케줄링되는지에 관계없이, 섀도우 스레드가 TEE에 재-진입할 때, 섀도우 스레드에 대응하는 서브-스레드가 실행을 위해 섀도우 스레드가 실행되는 코어에 여전히 스케줄링될 수 있다는 것이 보장될 수 있다.
일부 구현들에서, 제1 스레드 식별자는 서브-스레드에 대응하는 스레드 제어 블록(thread control block, TCB)에 포함되고, 제1 스레드 식별자는 TCB에서의 필드이다.
일부 구현들에서, 상기 TEE 스케줄링 모듈은 구체적으로, 상기 섀도우 스레드가 처음으로 상기 TEE에 진입한다고 결정할 때, 실행을 위해 상기 섀도우 스레드가 실행되는 코어에 새롭게 생성된 서브-스레드를 스케줄링하도록 구성된다.
섀도우 스레드는 서브-스레드의 트리거 하에서 생성된다고 본 명세서에서 가정된다. 따라서, 섀도우 스레드가 처음으로 TEE에 진입한다고 결정될 때, 실행을 위해 서브-스레드는 섀도우 스레드가 실행되는 코어에 스케줄링된다.
일부 구현들에서, 상기 TEE 스케줄링 모듈은, 상기 섀도우 스레드가 상기 TEE에 재-진입한다고 결정할 때, 상기 섀도우 스레드와 상기 서브-스레드 사이의 기록된 대응관계에 기초하여, 실행을 위해 상기 섀도우 스레드가 실행되는 현재 코어에 상기 서브-스레드를 스케줄링하도록 추가로 구성된다. 섀도우 스레드가 본 명세서에서 실행되는 "현재 코어(current core)"는 원래의 코어 또는 다른 코어일 수 있다.
일부 구현들에서, 섀도우 스레드는 SMC(secure monitor call) 명령어를 호출하여, 섀도우 스레드가 실행되는 코어가 TEE에 진입하는 것을 가능하게 한다. 코어는 처음으로 TEE에 진입하거나 또는 TEE에 다시 진입할 수 있다. "재-진입(re-entering)"은 코어가 처음으로 TEE에 진입하는 것이 아니라는 점을 의미한다. SMC 명령어는 파라미터를 포함하고, 이러한 파라미터는 코어가 처음으로 TEE에 진입하는지 또는 TEE에 재-진입하는지를 표시하기 위해 사용된다. 대응하여, TEE 스케줄링 모듈은, 이러한 파라미터에 기초하여, 섀도우 스레드가 TEE에 재-진입한다고 결정하도록 구성된다.
일부 구현들에서, TEE 스케줄링 모듈은 섀도우 스레드가 실행되는 현재 코어와 섀도우 스레드 사이의 대응관계를 기록하도록 추가로 구성된다.
섀도우 스레드가 본 명세서에서 실행되는 "현재 코어(current core)"는 원래의 코어 또는 다른 코어일 수 있다.
일부 구현들에서, 상기 TEE 스케줄링 모듈은 구체적으로, 상기 섀도우 스레드가 실행되는 현재 코어가 상기 TEE에 진입한 후에, 글로벌 상태 어레이에서의 상기 현재 코어에 대응하는 엘리먼트에 상기 섀도우 스레드의 식별자를 기록하도록- 상기 글로벌 상태 어레이는 N개의 엘리먼트들을 포함하고, 각각의 엘리먼트는 상기 컴퓨터 시스템의 하나의 코어에 대응함 -; 그리고 상기 섀도우 스레드가 실행되는 현재 코어가 상기 TEE를 이탈한 후에, 상기 글로벌 상태 어레이에서의 상기 현재 코어에 대응하는 엘리먼트의 값을 0으로 설정하도록 구성된다.
섀도우 스레드가 실행되는 현재 코어와 섀도우 스레드 사이의 대응관계가 기록되고, 이러한 것은 스케줄링을 위해 요구되는 데이터를 제공한다. 다시 말해서, 구체적인 현재 코어 및 구체적인 현재 섀도우 스레드가 학습되어, 대응하는 서브-스레드가 섀도우 스레드의 식별자에 기초하여 발견되고, 이러한 서브-스레드는 실행을 위해 코어에 스케줄링된다.
일부 구현들에서, 상기 TEE 스케줄링 모듈은 구체적으로, 상기 섀도우 스레드가 실행되는 현재 코어가 상기 TEE에 진입한 후에, 상기 글로벌 상태 어레이에서의 상기 현재 코어에 대응하는 엘리먼트에 상기 섀도우 스레드의 식별자를 기록하도록, 타겟 서브-스레드를 검색하도록, 그리고 실행을 위해 상기 현재 코어에 상기 타겟 서브-스레드를 스케줄링하도록- 상기 타겟 서브-스레드에 대응하는 제1 스레드 식별자는 상기 글로벌 상태 어레이에서의 상기 현재 코어에 대응하는 엘리먼트에 기록되는 식별자임 - 구성된다.
일부 구현들에서, 섀도우 스레드가 REE로 리턴하는 것은 인터럽트에 의해 트리거될 수 있다.
일부 구현들에서, TEE 스케줄링 모듈은 섀도우 스레드가 처음으로 TEE에 진입한다고 결정하고, 실행을 위해 섀도우 스레드가 실행되는 코어에 실행되지 않은 서브-스레드(서브-스레드와 임의의 섀도우 스레드 사이에 대응관계가 수립되지 않은 서브-스레드로서 또한 이해될 수 있음)를 스케줄링한다. 이러한 서브-스레드는 스레드의 실행 상태에 의해 표시될 수 있다. 예를 들어, 새롭게 생성된 서브-스레드는 구체적인 실행 상태로 설정된다. 이러한 방식으로, 코어가 처음으로 TEE 상에 풀될 때, 서브-스레드는 코어에 의해 식별될 수 있고 코어 상에서 실행된다. 일부 다른 구현들에서, TEE 스케줄링 모듈은 제1 스레드 식별자의 값이 널이라는 정보에 기초하여 새롭게 생성된 서브-스레드(아직 실행되지 않은 서브-스레드)를 식별할 수 있다.
일부 구현들에서, 섀도우 스레드가 처음으로 TEE에 진입하는 것은 아니라고 결정할 때, TEE 스케줄링 모듈은 타겟 서브-스레드를 결정하고, 실행을 위해 섀도우 스레드가 실행되는 현재 코어에 타겟 서브-스레드를 스케줄링하며, 타겟 서브-스레드의 제1 스레드 식별자는 섀도우 스레드의 식별자이다.
일부 구현들에서, TEE에 NPU(neural processing unit) 드라이버가 추가로 배치된다. 이러한 NPU 드라이버는, TA의 하나 이상의 서브-스레드의 호출 하에서, 실행할 NPU를 구동하도록 구성된다.
이러한 NPU는 전용 신경 프로세서이고, 대규모 복잡한 병렬 연산들, 특히 신경-관련 연산들을 구현하도록 구성된다. 일부 TA들이 복잡한 알고리즘을 사용할 때, 이러한 알고리즘을 구현하기 위해 소프트웨어가 사용될 수 있거나, 또는 본 출원에서 제공되는 방법에 따라 가속화를 위해 NPU가 호출될 수 있다.
TEE 상에 NPU 드라이버가 배치되어, TEE 상에서 NPU가 호출될 수 있다. 또한, 본 출원에서 제공되는 해결책에서는, TEE 상에서 멀티프로세싱이 구현될 수 있어, TEE 상에서 NPU가 더 잘 사용될 수 있다. 이러한 것은 전체 시스템 성능을 개선한다.
일부 구현들에서, TEE에 보안 저장 유닛 및 하드웨어 드라이버 유닛이 추가로 배치된다. 이러한 보안 저장 유닛 및 하드웨어 드라이버 유닛은 TEE에 의해서만 액세스될 수 있다. 하드웨어 드라이버 유닛은 TA의 하나 이상의 서브-스레드의 호출 하에서 대응하는 하드웨어에 액세스하도록 구성된다. 보안 저장 유닛은 하드웨어에 의해 수집되는 데이터를 저장하도록 구성된다. 본 명세서에서의 보안 저장 유닛은 저장 영역으로서 이해된다. 보안 저장 유닛은 TEE에 의해서만 액세스될 수 있기 때문에, 보안 저장 유닛은 안전하다.
일부 구현들에서, 보안 저장 유닛은 크기가 고정된 또는 크기가 고정되지 않은 버퍼이다. 크기가 고정되지 않은 버퍼는 줄여서 동적 버퍼라고 또한 지칭될 수 있다. 일부 구현들에서, 하드웨어 드라이버 유닛이 카메라 드라이버이면, 이러한 카메라 드라이버에 대응하는 하드웨어는 카메라이다.
TA는 TEE 상의 하드웨어에 직접 액세스하고, 이러한 하드웨어에 의해 수집되는 데이터를 TEE 상의 저장 영역에 저장하여, TA에 의해 이러한 데이터를 사용하는 보안 및 이러한 데이터의 보안이 추가로 보장된다. 예를 들어, 3D(3 dimensions) 안면 인식 TA에 대해, 본 출원에서 제공되는 방법을 사용하여 TEE 상에 카메라 드라이버가 배치될 수 있고, TEE 상에 카메라에 의해 캡처되는 안면 이미지가 저장된다. TA는 안면 이미지에 액세스하기 위해 TEE 상의 카메라를 직접 구동할 수 있어, 전체 안면 인식 프로세스의 보안이 추가로 보장된다.
모듈들로의 분할의 방식들은 열거되지 않고, 본 출원의 제1 양태에서의 모듈들은 단지 예들이지만, 본 출원의 범위에 대한 임의의 제한을 구성해서는 안 된다. TEE 상에 배치되는 모든 모듈들에 의해 실행되는 방법은 TEE에 의해 실행되는 방법으로서 또한 고려될 수 있다. 대응하여, REE 상에 배치되는 모든 모듈들에 의해 실행되는 방법은 REE에 의해 실행되는 방법으로서 또한 고려될 수 있다. 하드웨어에 의해 수행되는 일부 단계들 외에도, 본 출원에서 TEE 및 REE에 의해 수행되는 방법은 TEE 및 REE에서의 운영 체제들 또는 애플리케이션들에 의해 수행되는 방법으로서 일반적으로 고려될 수 있다.
제2 양태에 따르면, 본 출원은 TEE(trusted execution environment) 상의 멀티프로세싱을 구현하기 위한 방법을 제공한다. 이러한 방법은 멀티-코어 컴퓨터 디바이스에 적용된다. 이러한 방법은, TEE에 의해, 서브-스레드를 생성하는 단계- 상기 서브-스레드는 상기 TEE 상에 배치되는 TA의 서브-기능을 구현하기 위해 사용됨 -; 및, 상기 TEE에 의해, REE(rich execution environment)을 트리거하여 섀도우 스레드를 생성하는 단계- 상기 섀도우 스레드의 실행은 상기 섀도우 스레드가 실행되는 코어로 하여금 상기 TEE에 진입하게 함 -; 및, 상기 TEE에 의해, 실행을 위해 상기 코어에 상기 생성된 서브-스레드를 스케줄링하는 단계를 포함한다.
일부 구현들에서, TEE는 서브-스레드가 생성된 후에 통지(예를 들어, 소프트웨어 인터럽트)를 생성하고, 이러한 통지를 REE에 전송하여, REE가 이러한 통지에 기초하여 섀도우 스레드를 생성한다.
일부 구현들에서, 이러한 방법은, 상기 TEE에 의해, 상기 섀도우 스레드와 상기 서브-스레드 사이의 대응관계를 기록하는 단계를 추가로 포함한다.
일부 구현들에서, TEE에 의해, 섀도우 스레드와 서브-스레드 사이의 대응관계를 기록하는 단계는, 상기 TEE에 의해, 상기 섀도우 스레드의 식별자를 상기 서브-스레드의 TCB(thread control block)에 기록하는 단계를 포함한다.
일부 구현들에서, 이러한 방법은, 섀도우 스레드의 실행이 섀도우 스레드가 실행되는 현재 코어로 하여금 TEE에 진입하게 한 후(섀도우 스레드가 TEE에 재-진입하는 것으로서 또한 이해될 수 있음), TEE가, 섀도우 스레드와 서브-스레드 사이의 기록된 대응관계에 기초하여, 실행을 위해 섀도우 스레드가 실행되는 현재 코어에 서브-스레드를 스케줄링하는 것을 추가로 포함한다. 본 명세서에서의 "현재 코어(current core)"는 원래의 코어 또는 다른 코어일 수 있으며 그 이유는 섀도우 스레드가 실행을 위해 상이한 코어에 스케줄링될 수 있기 때문이다.
일부 구현들에서, 이러한 방법은, 상기 TEE에 의해, 상기 섀도우 스레드가 실행되는 현재 코어와 상기 섀도우 스레드 사이의 대응관계를 기록하는 단계를 추가로 포함한다. 구체적으로, 상기 섀도우 스레드가 실행되는 현재 코어가 상기 TEE에 진입한 후에, 글로벌 상태 어레이에서의 상기 현재 코어에 대응하는 엘리먼트에 상기 섀도우 스레드의 식별자가 기록되고- 상기 글로벌 상태 어레이는 N개의 엘리먼트들을 포함하고, 각각의 엘리먼트는 상기 컴퓨터 시스템의 하나의 코어에 대응함 -; 상기 섀도우 스레드가 실행되는 현재 코어가 상기 TEE를 이탈한 후에, 상기 글로벌 상태 어레이에서의 상기 현재 코어에 대응하는 엘리먼트의 값이 0으로 설정된다.
일부 구현들에서, 이러한 방법은, 상기 TEE에 의해, 상기 TEE에 배치되는 NPU 드라이버를 호출하는 것에 의해 NPU(neural processing unit)를 호출하는 단계를 추가로 포함한다.
일부 구현들에서, 이러한 방법은, 상기 TEE에 의해, 상기 TEE 상에 배치되는 하드웨어 드라이버 유닛을 통해 대응하는 하드웨어에 액세스하는 단계, 및, 상기 TEE 상에 배치되는 보안 저장 유닛에, 상기 하드웨어에 의해 수집되는 데이터를 저장하는 단계를 추가로 포함한다.
일부 구현들에서, 이러한 TA는 안면 인식 기능을 구현하기 위한 TA 또는 지문 인식 기능을 구현하기 위한 TA, 또는 안면 인식 기능 및 지문 인식 기능 양자 모두를 구현하기 위한 TA이다. 이러한 안면 인식은 구체적으로 3D 안면 인식일 수 있다.
제3 양태에 따르면, 본 출원은 컴퓨터 시스템을 제공한다. 이러한 컴퓨터 시스템은 메모리 및 프로세서를 포함하고, 이러한 메모리는 컴퓨터-판독가능 명령어(또는 컴퓨터 프로그램이라고 지칭됨)를 저장하도록 구성되고, 이러한 프로세서는 전술한 구현들 중 임의의 하나에서의 방법을 구현하기 위해 컴퓨터-판독가능 명령어를 판독하도록 구성된다.
제4 양태에 따르면, 본 출원은 컴퓨터 저장 매체를 제공한다. 이러한 컴퓨터 저장 매체는 비-휘발성 저장 매체일 수 있다. 이러한 컴퓨터 저장 매체는 컴퓨터-판독가능 명령어를 저장하고, 이러한 컴퓨터-판독가능 명령어가 프로세서에 의해 실행될 때, 전술한 구현들 중 임의의 하나에서의 방법이 구현된다.
제5 양태에 따르면, 본 출원은 컴퓨터 프로그램 제품을 제공한다. 이러한 컴퓨터 프로그램 제품은 컴퓨터-판독가능 명령어를 포함하고, 이러한 컴퓨터-판독가능 명령어가 프로세서에 의해 실행될 때, 전술한 구현들 중 임의의 하나에서의 방법이 구현된다.
본 출원에서 제공되는 TEE 상의 멀티프로세싱을 구현하기 위한 방법 및 장치, 및 컴퓨터 시스템에 따르면, 복수의 태스크들 TEE 상에서 병렬로 실행될 수 있다는 점을 알 수 있다. 예를 들어, 하나의 TA의 복수의 서브-태스크들이 병렬로 실행된다. 따라서, 비교적 높은 보안 요건들을 갖는 일부 복잡한 서비스들, 예를 들어, 3D 안면 인식은, TEE 상에서 병렬로 모두 실행될 수 있다. 이러한 방식으로, 이러한 서비스들의 보안 요건들 및 성능 요건들 양자 모두가 충족될 수 있다. 추가로, TEE의 트리거 하에서 REE 상에 섀도우 스레드가 생성되어, TEE 상에 코어가 능동적으로 "풀된다(pulled)". 이러한 것은 TEE 상의 멀티프로세싱 유연성을 개선한다.
추가로, 제공된 멀티프로세싱 메커니즘에 기초하여, REE 상의 CA와 TEE 상의 TA 사이의 액세스 대응관계(즉, CA-TA 스케줄링 그룹)가 기록되어, CA(섀도우 스레드를 포함함) 및 대응하는 TA(TA의 서브-스레드를 포함함)가 동일한 코어 상에서 실행될 수 있다. 따라서, REE 상의 CA 로드 계산의 정확성이 보장되고, 시스템의 전체적인 로드 밸런싱이 더 잘 구현될 수 있다.
추가로, TEE 상에 NPU가 배치되어, NPU의 가속화 능력 및 멀티프로세싱 실행 해결책에 기초하여 서비스 실행 효율이 추가로 개선된다.
추가로, TEE 상의 보안 저장 매체에 서비스에 의해 요구되는 데이터가 저장되어, 이러한 데이터의 보안이 추가로 보장될 수 있다. 따라서, 서비스의 보안이 보장된다.
본 출원에서 제공되는 기술적 해결책들을 더 명확하게 설명하기 위해, 다음은 첨부 도면들을 간단히 설명한다. 다음의 설명에서의 첨부 도면들은 본 출원의 일부 실시예들만을 도시한다는 점이 명확하다.
도 1은 종래 기술에서의 TEE 상의 멀티-코어 해결책의 개략도이다.
도 2는 본 출원의 실시예에 따른 단말 디바이스의 개략 구조도이다;
도 3은 본 출원의 실시예에 따른 TEE 상의 멀티프로세싱 해결책의 배치의 개략도이다.
도 4a 및 도 4b는 본 출원의 실시예에 따른 TEE 상의 멀티프로세싱 해결책의 개략도들이다.
도 5는 본 출원에 따른 복수의 CA-TA 스케줄링 그룹들의 개략도이다.
도 6은 이중 인증: 본 출원의 실시예에 따른 안면 인증 및 지문 인증을 구현하기 위한 단말 시스템의 개략도이다.
도 7은 본 출원의 실시예에 따른 지불 해결책의 개략도이다.
도 8은 본 출원의 실시예에 따른 컴퓨터 시스템의 개략 구조도이다.
도 9는 본 출원의 실시예에 따른 신경 처리 유닛의 개략 구조도이다.
실시예들이 설명되기 전에, 실시예들에서 사용될 수 있는 몇몇 개념들이 먼저 설명된다. 이러한 개념들의 다음의 설명들은 실시예들에서의 구체적인 경우로 인해 제한될 수 있지만, 이러한 것은 본 출원이 구체적인 경우로 제한되는 것을 표시하지 않는다는 점이 이해되어야 한다. 이러한 개념들의 다음의 설명들은 또한 상이한 실시예들에서의 구체적인 경우에 따라 변할 수 있다.
멀티-코어 스케줄링은 복수의 코어들 상에서 수행되는 태스크 생성, 스케줄링, 마이그레이션, 및 이탈의 연산들이 지원되는 스케줄링 메커니즘이며, 이러한 스케줄링 메커니즘은 멀티-코어 프로세서를 포함하는 컴퓨터 시스템에 의해 제공된다.
로드 밸런싱은 멀티-코어 프로세서 상의 병렬로 실행되는 복수의 태스크들이, 전체 시스템 성능을 개선하고 전력 소비를 감소시키기 위해, 시스템 로드 밸런싱을 달성하기 위한 밸런싱 방식으로 상이한 코어들에 분산될 필요가 있다는 점을 의미한다.
태스크는 본 출원에서의 일반적인 개념이다. 컴퓨터에 의해 행해질 임의의 작업은 태스크, 예를 들어, 프로세스, 스레드, 서브-스레드, CA, TA, 또는 서비스라고 지칭될 수 있다.
스레드는 때때로 경량 프로세스(light weight process, LWP)라고 지칭되고, 프로그램 실행 흐름의 최소 유닛이다. 스레드의 엔티티들은 프로그램, 데이터, 및 TCB를 포함한다. 스레드는 동적 개념이고, 스레드의 동적 특징은 스레드 제어 블록(thread control block, TCB)을 사용하여 설명된다. TCB는 다음의 정보: 스레드 상태, 스레드가 실행되고 있지 않을 때의 저장된 컨텍스트, 실행 스택들의 그룹, 각각의 스레드의 로컬 변수가 저장되는 메인 메모리 영역, 동일한 프로세스에 액세스하는 메인 메모리, 및 다른 리소스를 포함할 수 있다. 실시예들에서 TCB에 대해 일부 변경들이 이루어진다.
인터럽트 요청(interrupt request, IRQ): 인터럽트 요청은 하드웨어 또는 소프트웨어에 의해 생성되는 이벤트를 일반적으로 지칭한다. 하드웨어는 이벤트를 프로세서에 전송한다. 이벤트를 수신할 때, 프로세서는 현재 프로그램의 실행을 일시적으로 중지하고 이벤트에 대응하는 프로그램을 실행한다. 인터럽트 요청은 소프트웨어 인터럽트 및 하드웨어 인터럽트를 포함한다. 프로세서에 대한 하드웨어(예를 들어, 네트워크 어댑터, 하드 디스크, 키보드, 또는 마우스)에 의해 생성되는 인터럽트는 하드 인터럽트 또는 하드웨어 인터럽트(때때로 인터럽트라고 또한 지칭됨)라고 일반적으로 지칭된다. 소프트웨어 인터럽트는 프로세서 상의 현재 실행되는 프로세스에 의해 일반적으로 생성된다. 소프트웨어 인터럽트의 처리 프로세스는 하드웨어 인터럽트의 처리 프로세스와 유사하다. 소프트웨어 인터럽트의 처리 프로세스는 다음과 같다: 소프트웨어 인터럽트가 발생한 후에, 인터럽트 트랜잭션을 트리거하기 위해 대응하는 인터럽트 플래그가 먼저 설정되고; 다음으로 인터럽트 상태 레지스터를 검출하기 위해 데몬 스레드가 깨어나고; 쿼리를 통해, 소프트웨어 인터럽트가 발생하는 것으로 발견되면, 소프트웨어 인터럽트 벡터 테이블을 쿼리하는 것에 의해 대응하는 소프트웨어 인터럽트 서비스 프로그램이 호출된다. 소프트웨어 인터럽트의 처리 프로세스와 하드웨어 인터럽트의 처리 프로세스 사이의 차이는 인터럽트 플래그로부터 인터럽트 서비스 프로그램으로의 매핑 프로세스에 있다. 하드웨어 인터럽트가 발생한 후에, 프로세서는 벡터 테이블에 기초하여 하드웨어 인터럽트 요청을 구체적인 서비스 프로그램에 매핑할 필요가 있다. 이러한 프로세스는 하드웨어에 의해 자동으로 완료된다. 그러나, 소프트웨어 인터럽트에 대해, 이러한 프로세스는 상이하며, 그 이유는 소프트웨어 인터럽트에 대해 이러한 프로세스를 구현하기 위해 데몬 스레드가 요구되기 때문이다. 다시 말해서, 소프트웨어는 하드웨어를 모방하여 인터럽트에 대한 처리 프로세스를 구현한다. 따라서, 인터럽트는 소프트웨어 인터럽트라고 지칭된다.
CFS(completely fair scheduler, CFS) 스케줄러는 Linux® 운영 체제의 커널에서 스케줄링 모듈로서 구현되는 완전히 공정한 스케줄링 프로그램이다.
도 2는 본 출원의 실시예에 따른 단말 디바이스의 개략 구조도이다. 이러한 단말 디바이스는 데스크톱 컴퓨터, 노트북 컴퓨터, 모바일 폰, 태블릿 컴퓨터, 스마트워치, 스마트 밴드 등일 수 있다. 단말 디바이스 상에 TrustZone® 시스템이 배치된다. 이러한 시스템은 REE 및 TEE를 포함한다. Linux® 운영 체제 및 TEE 운영 체제(예를 들어, 오픈-소스 OP-TEE® 운영 체제)가 각각 REE 및 TEE에서 실행된다. Linux® 운영 체제 및 TEE OS는 사용자 모드 및 커널 모드를 각각 갖는다. REE 상의 사용자 모드에 안면 인식 CA 및 지문 인식 CA와 같은 복수의 CA들이 배치된다. TEE 상의 사용자 모드에 지문 인식 TA 및 안면 인식 TA와 같은 복수의 신뢰형 애플리케이션들이 배치된다. REE 상의 커널 모드에 Android® 컴포넌트가 배치되고, TEE 상의 커널 모드에 신뢰형 코어 컴포넌트가 배치된다. REE에서의 CA 및 TEE에서의 TA는 클라이언트/서버 아키텍처와 유사한 아키텍처를 구성하며, CA는 클라이언트 역할을 하고, TA는 서버 역할을 한다. CA는 액세스 연산을 착수하고, CA 및 TA는 REE 통신 프록시, 하드웨어 레이어에서의 메시지 채널, 및 TEE 통신 프록시를 통해 데이터를 교환한다. REE 통신 프록시, 하드웨어 레이어에서의 메시지 채널, 및 TEE 통신 프록시를 통해 CA와 TA 사이에 보안 통신 채널이 수립되어, 데이터 송신의 보안이 어느 정도 보장된다. 구체적으로, CA는 TEE 클라이언트 API(application program interface)를 호출하여 대응하는 TA와 통신하고, TA는 TEE 내부 API(internal API)를 호출하여 TEE에 의해 제공되는 프로그래밍 리소스를 사용하여, 관련 기능을 구현한다.
도 3은 실시예에 따른 TEE 상의 멀티프로세싱 해결책의 배치의 개략도이다. 이러한 실시예에서, 기술적 해결책을 설명하기 위해 예들로서 안면 인식 CA 및 안면 인식 TA(301)가 사용된다. 안면 인식 CA 및 안면 인식 TA(301)는 각각 REE 및 TEE 상에 배치된다. 안면 인식 CA 및 안면 인식 TA(301)는 단말 잠금해제, 애플리케이션 로그인, 및 금융 지불과 같은 시나리오들에서 널리 적용되는 안면 검증과 같은 안면 인식 서비스를 구현하도록 협력하여 작업한다. 이러한 실시예에서, 안면 인식 TA(301)는 다음의 4개의 서브-기능들: 특징 추출, 특징 비교, 생기 검출, 및 특징 저장을 가질 수 있다. 일부 다른 실시예들에서, 안면 인식 TA는 더 많은, 더 적은, 또는 다른 타입들의 서브-기능들을 포함할 수 있다. 이러한 것은 본 출원에서 제한되지 않는다.
추가로, TEE 상에 안면 인식 TA(301), 스레드 생성 모듈(예를 들어, libthread)(302), 통지 모듈(303), 및 TEE 스케줄링 모듈(305)이 배치된다. REE 상에 통지 처리 모듈(304)이 배치된다. 모니터(monitor)는 TrustZone® 시스템에 의해 제공되는 기존의 모듈이고, REE로부터 TEE로 스위칭하도록 구성된다. 스레드 생성 모듈(302)은 안면 인식 TA(301)의 호출 하에서 서브-스레드를 생성하도록, 그리고 통지 모듈(303)을 호출하여 소프트웨어 인터럽트를 생성하도록 구성된다. 통지 모듈(303)은 소프트웨어 인터럽트를 생성하도록 그리고 소프트웨어 인터럽트를 REE 상의 통지 처리 모듈(304)에 전송하도록 구성된다. 통지 처리 모듈(304)은 소프트웨어 인터럽트를 수신하도록 그리고 섀도우 스레드를 생성하도록 구성되고, 생성된 섀도우 스레드는 실행을 위해 코어에 스케줄링된다. 다음으로, 섀도우 스레드는 SMC 명령어를 전송하는 것에 의해 TEE에 진입하고, 이러한 것은 섀도우 스레드가 실행되는 코어가 TEE에 진입하는 것(즉, 보안 모드)과 동등하다.
이러한 실시예에서, 하드웨어 레이어에 보안 하드웨어 및 비-보안 하드웨어가 추가로 배치된다. 보안 하드웨어는 TEE에 의해서만 액세스될 수 있는 하드웨어이다. 비-보안 하드웨어는 REE 및 TEE 양자 모두에 의해 액세스될 수 있는 하드웨어 또는 REE에 의해서만 액세스될 수 있는 하드웨어이다.
도 4a 및 도 4b는 실시예에 따른 TEE 상의 멀티프로세싱 해결책의 방법의 개략도들이다. 다음은 도 3, 도 4a, 및 도 4b에 기초하여 이러한 해결책의 구현 프로세스를 상세히 설명한다.
S101: 안면 인식 CA가 TrustZone®에 의해 제공되는 SMC 명령어에 따라 TEE 상의 안면 인식 TA(301)에 호출 요청을 전송함. 이러한 프로세스는 종래 기술이고, 본 출원에서 상세히 설명되지 않는다. 이해의 용이함을 위해, 프로세스는 다음과 같이 이해될 수 있다: 안면 인식 CA가 실행되는 코어는 TrustZone®에 의해 제공되는 SMC 명령어에 따라 TEE (보안 모드)에 진입하고, 안면 인식 TA는 안면 인식 TA의 기능을 구현하기 위해 보안 모드에서 실행되기 시작한다.
S102: 호출 요청을 수신한 후, 안면 인식 TA(301)가 하나의 서브-스레드 T1을 생성함. 구체적으로, 안면 인식 TA(301)는 스레드 생성 모듈(302)(예를 들어, libthread)에서의 pthread_create 인터페이스를 통해 서브-스레드 T1을 생성한다.
이러한 실시예에서, 안면 인식 TA는 4개의 서브-스레드들 T1 내지 T4를 최종적으로 생성한다. 이러한 4개의 서브-스레드들은 4개의 서브-기능들: 특징 추출, 특징 비교, 생기 검출, 및 특징 저장을 각각 처리한다. 이러한 실시예에서, 설명을 위한 예로서 하나의 서브-스레드의 생성 및 실행이 사용된다. 다른 3개의 서브-스레드들의 생성 및 실행 프로세스들에 대해서는, 이러한 서브-스레드의 생성 및 실행을 참조한다.
S103: 서브-스레드 T1을 생성한 후, 스레드 생성 모듈(302)이 통지 모듈(303)을 호출하여 소프트웨어 인터럽트를 생성하고, 통지 모듈(303)이 이러한 소프트웨어 인터럽트를 REE 상의 통지 처리 모듈(304)에 전송함.
S103a: TEE 스케줄링 모듈(305)이 서브-스레드 T1에 대한 대응하는 태스크 제어 데이터 구조, 즉, 스레드 제어 블록(thread control block, TCB)을 생성함.
예를 들어, TCB의 구조는 다음과 같이 도시된다:
struct tcb /* struct는 스레드 제어 데이터 구조를 지칭하고, 각각의 TEE 스레드는 하나의 스레드 제어 데이터 구조에 대응함. */
{
......
thread_states state; /* 태스크 실행 상태 */
sched_policy_t sched_policy; /* 태스크 스케줄링 정책 */
...
struct tcb_prop { /* TCB 속성 */
char tcb_name[TCB_NAME_SIZE]; /* TCB 명칭 */
......
uint64_t ca; /* 서브-스레드에 액세스하는 CA의 프로세스 식별자 (PID) */
}
}
"태스크(task)"는 서브-스레드를 지칭하고, 각각의 서브-스레드의 TCB는 실행 상태, 스케줄링 정책, TCB 명칭 등을 포함한다. 각각의 필드 전의 영문 식별자는 필드의 값의 타입을 표시한다. 새롭게 생성된 서브-스레드의 실행 상태는 구체적인 실행 상태로 설정된다. 예를 들어, state=000은 서브-스레드가 실행을 위해 새로운 코어를 대기한다는 점을 표시한다.
이러한 실시예에서 제공되는 TCB는 ca 필드를 포함하고, 이러한 ca 필드는 본 출원에서 제안된 "제1 스레드 식별자(first thread identifier)"의 구현이다. 이러한 ca 필드의 값은 디폴트로 0일 수 있다.
S104: 통지 처리 모듈(304)이 소프트웨어 인터럽트를 수신한 후에 스레드 S1을 생성함- 스레드 S1의 프로세스 식별자(process identification, PID)는 S1이고, 스레드 S1은 SMC 명령어를 전송하는 것에 의해 TEE에 진입함 -.
이러한 스레드는 이러한 실시예에서 다음에 섀도우 스레드라고 지칭되고, 이러한 섀도우 스레드에 의해 구현될 기능이 이러한 실시예에서 특수하다는 점을 제외하고는, 공통 스레드와 본질적으로 동일하다. 안면 인식 TA(301)에 대해, 안면 인식 TA만이 안면 인식 TA(301)에 액세스한다. 그러나, 이러한 실시예에서, 안면 인식 TA(301)는 하나의 스레드 대신에 복수의 스레드들에 의해 완료된다. 따라서, 섀도우 스레드는 서브-스레드에 액세스하는"가상 CA(virtual CA)"로서 이해될 수 있다.
본 명세서에서 "스레드가 TEE에 진입한다(a thread enters a TEE)"는 것은 "스레드가 실행되는 코어가 TEE에 진입한다(a core on which the thread runs enters the TEE)", 또는 "스레드가 실행되는 코어가 TEE 모드(또는 보안 모드)에 진입한다(a core on which the thread runs enters a TEE mode (or the secure mode))"는 것을 의미한다는 점을 이해하기 쉽다. 소프트웨어에 관한 일부 요약 설명들이 존재하며, 이는 TrustZone 기술과 유사하고, 동일한 경우에 설명들이 상이할 수 있다.
본 출원에서의 "코어(core)"는 최소 물리적 처리 유닛이라는 점이 주목되어야 한다.
구체적으로, 섀도우 스레드에 의해 전송되는 SMC 명령어는 파라미터를 포함할 수 있고, 이러한 파라미터는 섀도우 스레드가 처음으로 TEE에 진입한다는 것을 표시하기 위해 사용된다. 예를 들어, 이러한 파라미터는 firstIn일 수 있다. firstIn=true일 때, 이는 섀도우 스레드가 처음으로 TEE에 진입한다는 것을 표시한다. firstIn=false 일 때, 이는 섀도우 스레드가 처음으로 TEE에 진입하는 것은 아니라는 점을 표시한다. 대안적으로, 섀도우 스레드는 SMC 명령어를 처음으로 전송할 때만 파라미터를 포함하고, 다른 경우들에서는 이러한 파라미터를 포함하지 않는다. 이러한 방식으로, 수신기는, 파라미터가 존재하는지 여부의 정보에 기초하여, 섀도우 스레드가 처음으로 TEE에 진입하는지를 결정할 수 있다.
S105: 섀도우 스레드 S1이 TEE에 진입한 후에, 즉, 섀도우 스레드 S1이 실행되는 코어가 TEE에 진입한 후에, TEE 스케줄링 모듈(305)이 글로벌 상태 어레이에서의 코어의 위치에 섀도우 스레드 S1의 PID를 기록함.
예를 들어, 글로벌 상태 어레이 ctx_map_t[CPU_NUM]는 다음과 같이 도시된다:
ctx_map_t [CPU_NUM] /* ctx_map_t [CPU_NUM] 는 REE&TEE 스위칭 상태를 표시하고, CPU_NUM은 코어들의 수량을 표시함. */
{
uint64_t ops; /* REE로부터 TEE에 진입하는 연산의 타입 */
uint64_t ca; /* TEE에 진입하는 CA의 PID */
uint64_t ta; /* TA가 이때에 액세스함 */
uint64_t exit_reason; /* TEE로부터 이탈하는 이유의 타입 */
uint64_t flags; /* 다른 플래그들 */
}
"CPU"는 전술하여 설명된 "코어(core)"를 지칭한다. 이러한 실시예에서, 섀도우 스레드 S1이 실행되는 코어는 1로 넘버링되는 코어(다음에서 코어 1이라고 지칭됨)이고, TEE 스케줄링 모듈(305)은 ctx_map_t [1]의 ca 필드에 섀도우 스레드 S1의 PID를 기록한다. 다시 말해서, ca=S1이면, 이는 TEE에 이때에 진입하는 (가상) CA가 섀도우 스레드 S1이라는 점을 표시한다.
S106: 섀도우 스레드 S1이 처음으로 TEE에 진입한다고 결정할 때, TEE 스케줄링 모듈(305)이 구체적인 실행 상태, 즉, state=000에서 서브-스레드 T1을 검색하고, 실행을 위해, 서브-스레드 T1을 현재 코어, 즉, 섀도우 스레드가 실행되는 코어(1)에 스케줄링함.
S107: 추가로, TEE 스케줄링 모듈 (305)이 ctx_map_t [1]의 ca 필드의 값(즉, S1)을 서브-스레드 T1에 대응하는 TCB의 ca 필드에 배정하여, 섀도우 스레드 S1 및 서브-스레드 T1이 CA 및 TA로서 각각 사용되는 CA-TA 그룹이 수립됨.
전술한 단계들 S101 내지 S107은 섀도우 스레드가 처음으로 생성되는 그리고 TEE에 처음으로 진입하는 프로세스이다. 전술한 단계들 S102 내지 S103, S103a, 및 S104 내지 S107을 반복하는 것에 의해, 다른 3개의 서브-스레드들 및 다른 3개의 대응하는 섀도우 스레드들 각각이 생성될 수 있고, 다른 3개의 CA-TA 그룹들 각각이 구성될 수 있다. 이러한 방식으로, 복수의 코어들이 동시에 TEE 상에서 실행되고, 동시에 안면 인식 TA(301)의 4개의 서브-기능들을 수행하여, 안면 인식 TA를 실행하는 효율이 매우 개선된다.
추가로, 전술한 방법에 따르면, TEE는 TEE 상에 코어를 능동적으로 "풀(pulls)"하여, 수동적 운영 체제로서 사용되는 TEE 상에서 서브-스레드가 능동적으로 실행될 수 있다. 이러한 것은 TEE 상의 멀티프로세싱 유연성을 개선한다.
공통 CA와 유사하게, 섀도우 스레드 S1은 인터럽트되어 실행 동안 REE로 리턴할 수 있고, REE 상의 다른 코어에 스케줄링될 수 있다. 이러한 경우, 도 4b를 참조하면, 서브-스레드 T1 및 섀도우 스레드 S1이 여전히 동일한 코어 상에서 실행되는 것을 보장하기 위해 다음의 연산들이 수행될 필요가 있다.
S108: 섀도우 스레드(즉, 코어 1)가 REE로 리턴한 후에, TEE 스케줄링 모듈(305)이 ctx_map_t [1]의 ca 필드의 값을 0으로 설정함.
S109: 섀도우 스레드 S1이 TEE에 재-진입할 때, TEE 스케줄링 모듈(305)이 글로벌 상태 어레이에서의 대응하는 위치에서의 ca 필드를 S1로 설정함.
구체적으로, TEE에 재-진입하는 섀도우 스레드 S1이 코어 1 상에서 여전히 실행되면, TEE 스케줄링 모듈(305)은 ctx_map_t [1]의 ca 필드를 S1로 여전히 설정한다. REE 상의 섀도우 스레드 S1이 REE 상의 스케줄링 모듈(예를 들어, CFS 스케줄러)에 의해, 실행을 위해 다른 코어, 예를 들어, 코어 2에 스케줄링되면, TEE 스케줄링 모듈(305)은 ctx_map_t [2]의 ca 필드를 S1로 설정한다.
S110: TEE 스케줄링 모듈(305)이 타겟 서브-스레드를 검색하고, 실행을 위해 현재 코어에 타겟 서브-스레드를 스케줄링함.
타겟 서브-스레드는 다음 조건을 충족할 필요가 있다: 타겟 서브-스레드의 TCB에서의 ca 필드는 글로벌 상태 어레이에서의 현재 코어에 대응하는 ca 필드와 동일하다, 즉, 이러한 실시예에서 ca 필드들은 양자 모두 S1이다. 이러한 실시예에서, 타겟 서브-스레드가 서브-스레드 T1이라는 점을 알 수 있다. 따라서, 서브-스레드 T1은 실행을 위해 현재 코어에 스케줄링된다. "현재 코어(current core)"는 단계 S109에서의 설명에 기초하여 코어 1 또는 코어 2일 수 있다.
실행가능 상태에 있는 타겟 서브-스레드만이 이러한 실시예에서 실행을 위해 코어에 스케줄링될 수 있다는 점을 이해하기 쉽다. 타겟 서브-스레드가 비-실행가능 상태에 있으면, TEE 스케줄링 모듈(305)은, 스케줄링 정책에 따라, 코어 1 또는 코어 2가 다른 실행가능 프로세스를 대기하는 것 또는 실행하는 것을 가능하게 할 수 있다. 이러한 것은 본 출원에서 제한되지 않는다.
도 5는 본 출원에서 제공되는 방법이 구현된 후에 구성되는 복수의 CA-TA 스케줄링 그룹들을 도시한다. 안면 인식 TA 메인 스레드 및 안면 인식 CA는 하나의 스케줄링 그룹을 구성하고, 다른 4개의 서브-스레드들은 섀도우 스레드들 S1 내지 S4와 함께 4개의 스케줄링 그룹들을 각각 구성한다는 점을 도면으로부터 알 수 있다. CFS 스케줄러에 의해 수행되는 로드 밸런싱의 스케줄링 프로세스에 5개의 스케줄링 그룹들 및 다른 애플리케이션이 함께 참여한다.
이러한 실시예에서 제공되는 해결책에 따르면, 섀도우 스레드가 실행을 위해 다른 코어에 스케줄링되더라도, TEE 상의 섀도우 스레드에 대응하는 서브-스레드가 실행을 위해 동일한 코어에 스케줄링될 수 있다는 것이 보장될 수 있다는 점을 알 수 있다. 이러한 방식으로, 섀도우 스레드 및 대응하는 서브-스레드는 전체로서 스케줄링되어야 하는 CA-TA 스케줄링 그룹으로서 사용되며, 그렇게 함으로써 CA 로드 계산의 정확성을 보장한다.
다음은 본 출원에서의 다른 시나리오를 설명한다. 이러한 시나리오에서는, 이중 인증: 안면 인식 및 지문 인식이 수행될 필요가 있다. 이러한 시나리오에서, CA 및 TA는 본 출원에서 제공되는 멀티프로세싱 해결책에 따라 전체로서 스케줄링될 수 있다.
도 6은 이중 인증: 실시예에 따른 안면 인증 및 지문 인증을 구현하기 위한 단말 시스템의 개략도이다. 이중 인증을 구현하는 해결책은 다음과 같이 설명된다:
REE 상의 안면 인식 CA(608) 및 지문 인식 CA(607)는 각각 TEE에 대한 요청을 착수한다. 안면 인식 CA(608) 및 지문 인식 CA(607)는 각각 다음과 같은 방식으로 이러한 요청을 착수한다: CPU는 TrustZone 드라이버를 통해 모니터를 호출하는 것에 의해 모니터 모드에 진입하고, 다음으로 CPU는 모니터 모드로부터 TEE 모드에 진입한다. 다음으로, TA 관리기(609)는, 이러한 요청에서 운반되는 정보에 기초하여, 안면 인식 TA(601) 및 지문 인식 TA(604)가 각각 안면 인식 CA로부터의 요청 및 지문 인식 CA로부터의 요청을 처리한다고 결정한다.
안면 인식 CA 및 지문 인식 CA는 본질적으로 2개의 스레드들이고 2개의 코어들 상에서 각각 실행된다는 점을 이해하기 쉽다. 전술한 단계들 후에, 이러한 2개의 코어들은 양자 모두 TEE에 진입한다.
TEE 스케줄링 모듈(610)은 글로벌 상태 어레이에서의 2개의 코어들에 대응하는 각각의 위치들에서 안면 인식 CA의 PID 및 지문 인식 CA의 PID를 기록하고, 안면 인식 CA(608)의 PID를 안면 인식 TA(601)의 TCB의 ca 필드에 기록하고, 지문 인식 CA(607)의 PID를 지문 인식 TA(604)의 TCB의 ca 필드에 기록한다. 이러한 방식으로, 2개의 CA-TA 스케줄링 그룹들이 수립되고, TEE 상의 TA의 로드가 대응하는 CA의 로드에 추가될 수 있다.
또한, TA는 일반적으로 구현을 위해 다른 서비스 프로세스 및/또는 드라이버 프로세스를 추가로 요청한다. 간접적으로 액세스되는 이러한 프로세스들에 대해 CA-TA 스케줄링 그룹이 또한 수립되어야 한다. 안면 인식 TA(601)는 메시지를 전송하는 것에 의해 허가 관리 서비스(602)를 호출하고, 이러한 허가 관리 서비스(602)는 카메라 드라이버(603)를 호출한다. 유사하게, 지문 인식 TA(604)는 허가 관리 서비스(605)를 호출하고, 이러한 허가 관리 서비스(605)는 지문 드라이버를 호출한다. 이러한 실시예에서, 허가 관리 서비스(602) 및 허가 관리 서비스(605)는 동일한 서비스이다. 다른 실시예에서, 이러한 2개의 서비스들은 대안적으로 2개의 독립적인 서비스들일 수 있다.
전술한 "호출(calling)"은 본질적으로 인터프로세스 통신(interprocess communication, IPC)을 지칭한다. TEE에서의 IPC 메커니즘은 메시지에 기초하여 구현된다. 이러한 실시예에서, 메시지 전달 동안, 메시지 착수기의 TCB에서의 ca 필드의 값이 메시지 수신기에 전송된다. 따라서, 대응하는 CA-TA 스케줄링 그룹들에 TA의 호출 체인 상의 모든 서비스 프로세스들이 대응하여 풀된다. 도 5에 도시되는 바와 같이, 이러한 실시예에서는 2개의 스케줄링 그룹들이 구성된다.
서비스 프로세스가, TA로부터의 메시지를 처리한 후에, 다른 TA로부터의 메시지를 수신할 때, 서비스 프로세스는 ca의 값을 새로운 메시지로 업데이트하고 그 값은 다른 CA-TA 그룹에 운반된다. 도면에 도시되는 바와 같이, 허가 관리 서비스(602)는 안면 인식 CA-TA 스케줄링 그룹으로부터 지문 인식 CA-TA 스케줄링 그룹으로 스위칭할 수 있다.
구체적으로, 안면 인식 TA(601)는 허가 관리 서비스(602)에 메시지를 전송하고, 안면 인식 TA(601)의 TCB에서의 ca 필드의 값, 즉, 안면 인식 CA의 PID를 허가 관리 서비스(602)에 전달한다. 허가 관리 서비스(602)의 TCB에서의 ca 필드의 값은 안면 인식 CA(601)의 PID로 또한 설정된다. 다음으로, 허가 관리 서비스(602)는 지문 인식 TA(604)에 의해 호출되고, 허가 관리 서비스(602)(도면에서 허가 관리 서비스(605)와 동등함)의 TCB에서의 ca 필드의 값은 지문 인식 CA의 PID로 재설정된다.
하나의 CA-TA 스케줄링 그룹이 하나의 스케줄링 유닛으로서 사용되고 REE 상의 CFS 스케줄러에 의해 전체로서 스케줄링되며, 이러한 스케줄링은 로드 밸런싱 요건에 의해 트리거될 수 있다. 예를 들어, CA가 CFS 스케줄러에 의해 또 다른 코어에 스케줄링되면, CA가 위치되는 스케줄링 그룹에서의 TA 및 이러한 TA에 의해 호출되는 다른 프로세스가 TEE 스케줄링 모듈(610)에 의해 코어에 또한 스케줄링된다. 따라서, 본 출원에서 제공되는 방법에 따르면, 복수의 TA들이 병렬로 실행될 때 CA 및 대응하는 TA가 전체로서 스케줄링되고, 그렇게 함으로써 CA 로드 계산의 정확성을 보장한다. 예를 들어, 안면 인식 CA(608)가 다른 코어에 스케줄링되지만 안면 인식 TA(601)가 코어에 스케줄링되지 않으면, 코어 상에서 실행되는 다른 스레드의 로드가 안면 인식 CA(608)의 로드에 추가된다. 그러나, 이러한 것은 부정확하다.
추가로, S108과 유사한 경우가 이러한 시나리오에 또한 존재할 수 있다. 예를 들어, 인터럽트 요청(interrupt request, IRQ)이 발생할 때, 안면 인식 TA(601)가 실행되는 코어가 인터럽트되고 REE로 리턴하여 이러한 인터럽트 요청에 응답한다. 코어가 이탈할 때, TEE 스케줄링 모듈(610)은 글로벌 상태 어레이에서의 코어에 대응하는 ca 필드의 값을 0으로 설정한다. 안면 인식 CA(608)가 실행을 위해 새로운 코어에 REE 상의 CFS 스케줄러에 의해 스케줄링되고, 다음으로 TEE에 재-진입하면, TEE 스케줄링 모듈(610)은 글로벌 상태 어레이에서의 새로운 코어에 대응하는 ca 필드를 안면 인식 CA(608)의 PID로 설정한다. TEE 스케줄링 모듈(610)은 안면 인식 CA(608)의 PID에 기초하여 타겟 태스크를 검색하고, 타겟 태스크의 TCB 필드에서의 ca 값 또한 안면 인식 CA(608)의 PID이다. 타겟 태스크는 안면 인식 TA(601), 카메라 드라이버(603)(프로세스), 및 허가 관리 서비스(602)(프로세스) 중 하나 이상을 포함한다는 점을 전술한 실시예에서의 설명으로부터 알 수 있다. 허가 관리 서비스는 타겟 태스크에 속하지 않을 수 있으며 그 이유는 지문 인식 TA(604)의 호출로 인해 허가 관리 서비스의 ca 필드가 수정될 수 있기 때문이다. 다음으로, TEE 스케줄링 모듈(610)은 실행을 위해 새로운 코어에 타겟 태스크를 스케줄링하여, TA 및 TA에 의해 호출되는 서비스가 코어들 사이에서 마이그레이션된다. 이러한 것은 전체 CA-TA 스케줄링 그룹이 마이그레이션되는 것을 구현하고, 그렇게 함으로써 CA-TA 스케줄링 그룹에 포함되는 태스크들이 동일한 코어 상에서 실행되는 것을 보장한다.
도 7은 실시예에 따른 지불 해결책의 개략도이다. 이러한 지불 해결책에서는, 전술한 실시예에서의 TEE 상의 멀티프로세싱을 구현하기 위한 방법 외에도, 신경 처리 유닛 및 다른 방식이 보안 및 성능을 개선시키기 위해 추가로 사용된다.
이러한 지불 해결책은 복수의 서비스 로직들: 지불 애플리케이션(701), 지불 애플리케이션에 의해 트리거되는 안면 인식 CA(702), 안면 인식 TA(708), 및 카메라 서비스(703) 등을 포함한다. 안면 인식 TA(708)는 4개의 서브 서비스 로직들: 특징 추출, 생기 검출, 특징 비교 및 특징 저장을 추가로 포함한다. 이러한 해결책에서 사용되는 하드웨어는 카메라(706), 신경 처리 유닛(neuronal processing unit, NPU)(715), 메모리(714), 중앙 처리 유닛(도시되지 않음) 등을 포함한다. TEE 상에 카메라(706)의 드라이버, NPU(715)의 드라이버, 및 메모리(714)의 드라이버가 배치된다. REE 상의 카메라 서비스(703), 안면 인식 CA(702), 및 NPU 서비스 CA(704)는 서비스를 개시하는 것 및 일부 중요하지 않은 서비스 로직을 처리하는 것만을 담당한다.
카메라(706)의 드라이버는 이러한 실시예에서 TEE 상에 배치되지만, 카메라(706)의 드라이버는 REE 상에 대안적으로 배치될 수 있어서, 이러한 드라이버를 통해 REE 상의 애플리케이션 또는 서비스가 카메라(706)에 액세스한다는 점이 주목되어야 한다.
구체적으로, 지불 애플리케이션(701)이 안면 지불 인증 요청을 착수한 후에, REE에서의 안면 인식 CA(702)는 TEE 상의 안면 인식 TA(708)를 호출하여, 안면 인식 프로시저를 착수한다. 안면 인식 TA(708)는 TEE 상의 카메라 드라이버(705)를 통해 카메라(706)에 액세스한다. 구체적으로, 안면 인식 TA(708)는 카메라(706)에 액세스하기 위해 ISP의 드라이버를 통해 이미지 신호 프로세서(image signal processor, ISP)를 구동할 수 있다.
다음으로, 카메라(706)에 의해 캡처되는 이미지가 이미지 보안 버퍼(buffer)(707)에 저장되고, 이미지 보안 버퍼(707)의 액세스 어드레스가 안면 인식 TA(708)에 리턴된다. 이미지 보안 버퍼(707)는 TEE 상의 소프트웨어로서 이해될 수 있거나, 또는 TEE에 의해서만 액세스될 수 있는 저장 공간(예를 들어, 메모리)으로서 이해될 수 있다. 안면 인식 TA(708)는 이러한 어드레스에 기초하여 이미지 보안 버퍼(707)에 액세스하고, 미리 저장된 안면 템플릿과 같은 정보에 기초하여 캡처된 이미지에 대한 특징 추출, 생기 검출, 특징 비교, 및 특징 저장과 같은 알고리즘들을 실행한다.
종래 기술에서, 카메라 드라이버는 일반적으로 REE 상에만 배치되고; 안면 인식 TA의 일부 기능들, 예를 들어, 특징 추출이 REE 상에 배치되고; 특징 추출 기능이 실행될 때, imageREE를 캡처하기 위해 REE 상에서 카메라 드라이버가 호출된다. 그러나, 이러한 실시예에서 제공되는 전술한 방식에서, 안면 인식 TA(708)는 TEE 상에 배치되는 카메라 드라이버(705)를 통해 카메라(706)에 직접 액세스하고, TEE 상의 이미지 보안 버퍼(707)에서 이미지를 버퍼링할 수 있어, TEE 상에서 카메라의 사용 및 데이터의 저장 양자 모두가 완료되는 것을 보장할 수 있다. 이러한 것은 데이터 보안을 추가로 보장한다.
알고리즘 실행 동안, 안면 인식 TA(708)는 TEE 상의 NPU 서비스 TA(709)를 통해 NPU 드라이버(712)에 액세스하고, 다음으로 NPU 드라이버(712)를 통해 NPU(715)를 호출하여 처리 속도를 증가시킨다. 최종적으로, 지불 애플리케이션(701)은 지불 애플리케이션(701)의 지불 애플리케이션 TA(710)를 통해 최종 안면 인식 결과를 획득한다. 예를 들어, Alipay 애플리케이션은 인터넷 금융 인증 얼라이언스(internet finance authentication alliance, ifaa) TA를 통해 최종 안면 인식 결과를 획득한다.
안면 템플릿이 미리 단말 디바이스 상에 기록된다. 지불 애플리케이션은 지불 동안 캡처되는 안면 이미지가 안면 템플릿에 매칭될 때에만 완료된다. 따라서, 안면 템플릿의 보안이 극히 중요하다. 이러한 실시예에서, 안면 템플릿은 TEE 상의 저장 서비스(713)를 통해 메모리(714)에 저장되어, 안면 템플릿이 변조되는 것을 방지한다. 메모리(714)는 구체적인 보안 특징이 있는 메모리, 예를 들어, 재생 보호된 메모리 블록(replay protected memory block, RPMB)일 수 있다. 이러한 메모리는 TEE-측 서비스에 의해서만 액세스되도록 설정될 수 있어, 메모리의 보안이 추가로 개선되고, 안면 템플릿의 보안이 보장되고, 추가로, 안면 인식 동안의 보안이 보장된다.
본 출원에서 제공되는 방법을 사용하여 구현되는 안면 인식 해결책은 보안 요건 및 높은 성능 요건 양자 모두를 충족시킬 수 있다. 안면 인식 효율을 개선하기 위해 안면 인식에서의 일부 중요한 서비스 로직이 REE 상에 구현되는(예를 들어, 생기 검출이 REE 상에 구현되는) 종래 기술과의 차이는, 본 출원에서 제공되는 해결책에서는, 안면 인식에서의 모든 중요한 서비스 로직이 TEE 상에 구현되고, 안면 인식 효율이 멀티프로세싱을 통해 개선되어, 성능 요건을 충족시킨다는 점에 있다. 또한, 안면 인식 동안 생성되는 또는 사용되는 데이터(예를 들어, 이미지)가 TEE 상에 저장되어, TEE의 보안 보증 메커니즘을 사용하여 안면 인식 보안을 추가로 개선한다.
도 8은 실시예에 따른 컴퓨터 시스템의 개략 구조도이다. 이러한 컴퓨터 시스템은 단말 디바이스일 수 있다. 도면에 도시되는 바와 같이, 이러한 컴퓨터 시스템은 통신 모듈(810), 센서(820), 사용자 입력 모듈(830), 출력 모듈(840), 프로세서(850), 오디오/비디오 입력 모듈(860), 메모리(870), 및 전원(880)을 포함한다. 추가로, 이러한 실시예에서 제공되는 컴퓨터 시스템은 NPU(890)를 추가로 포함할 수 있다.
통신 모듈(810)은 컴퓨터 시스템이 통신 시스템 또는 다른 컴퓨터 시스템과 통신하는 것을 가능하게 할 수 있는 적어도 하나의 모듈을 포함할 수 있다. 예를 들어, 통신 모듈(810)은 유선 네트워크 인터페이스, 브로드캐스트 수신 모듈, 모바일 통신 모듈, 무선 인터넷 모듈, 로컬-영역 통신 모듈, 및 위치(또는 포지셔닝) 정보 모듈 중 하나 이상을 포함할 수 있다. 이러한 복수의 모듈들은 종래 기술에서의 복수의 구현들을 각각 갖고, 상세사항들이 본 출원에서 하나씩 설명되지는 않는다.
센서(820)는 시스템의 현재 상태, 예를 들어, 온/오프 상태, 위치, 시스템이 사용자와 접촉하는지, 배향, 및 가속화/감속화를 감지할 수 있다. 또한, 센서(820)는 시스템의 연산을 제어하기 위해 사용되는 감지 신호를 생성할 수 있다.
사용자 입력 모듈(830)은, 입력 번호 정보, 문자 정보, 또는 접촉 터치 조작/비접촉 제스처를 수신하도록, 그리고 시스템의 사용자 설정들 및 기능 제어 등에 관련된 신호 입력을 수신하도록 구성된다. 사용자 입력 모듈(830)은 터치 패널 및/또는 다른 입력 디바이스를 포함한다.
출력 모듈(840)은, 사용자에 의해 입력되는 정보, 사용자를 위해 제공된 정보, 시스템의 다양한 메뉴 인터페이스들 등을 디스플레이하도록 구성되는, 디스플레이 패널을 포함한다. 선택적으로, 디스플레이 패널은 액정 디스플레이(liquid crystal display, LCD), 유기 발광 다이오드(organic light-emitting diode, OLED) 등의 형태로 구성될 수 있다. 일부 다른 실시예들에서, 터치 패널은, 터치 디스플레이 스크린을 형성하기 위해, 디스플레이 패널을 커버할 수 있다. 또한, 출력 모듈(840)은 오디오 출력 모듈, 알람, 촉각 모듈 등을 추가로 포함할 수 있다.
오디오/비디오 입력 모듈(860)은 오디오 신호 또는 비디오 신호를 입력하도록 구성된다. 오디오/비디오 입력 모듈(860)은 카메라 및 마이크로폰을 포함할 수 있다.
전원(880)은 프로세서(850)의 제어 하에서 외부 전력 및 내부 전력을 수신하고, 시스템의 다양한 컴포넌트들의 연산들에 요구되는 전력을 제공할 수 있다.
프로세서(850)는 하나 이상의 프로세서를 포함한다. 예를 들어, 프로세서(850)는 중앙 처리 유닛 및 그래픽 처리 유닛을 포함할 수 있다. 본 출원에서, 중앙 처리 유닛은 복수의 코어들을 갖고, 멀티-코어 프로세서이다. 복수의 코어들은 하나의 칩에 집적될 수 있거나, 또는 복수의 코어들 각각은 독립적인 칩일 수 있다.
메모리(870)는 컴퓨터 프로그램을 저장하고, 이러한 컴퓨터 프로그램은 운영 체제 프로그램(872), 애플리케이션 프로그램(871) 등을 포함한다. 예를 들어, 통상적인 운영 체제는, Microsoft Corp.의 Windows 또는 Apple Inc.의 MacOS와 같은, 데스크톱 컴퓨터 또는 노트북 컴퓨터에 대해 사용되는 시스템; 또는, Google Inc.에 의해 개발된 Linux® 기반 Android (Android®) 시스템과 같은, 모바일 단말에 대해 사용되는 시스템이다. 전술한 실시예에서 제공되는 방법은 소프트웨어를 사용하여 구현될 수 있고, 운영 체제 프로그램(872)의 구체적인 구현으로서 고려될 수 있다.
메모리(870)는 다음의 타입들의 메모리들: 플래시(flash) 메모리, 하드 디스크 타입 메모리, 마이크로 멀티미디어 카드 타입 메모리, 카드 타입 메모리(예를 들어, SD 또는 XD 메모리), 랜덤 액세스 메모리(random access memory, RAM), 정적 랜덤 액세스 메모리(static RAM, SRAM), 판독 전용 메모리(read only memory, ROM), 전기적으로 소거가능한 프로그램가능 판독 전용 메모리 (electrically erasable programmable read-only memory, EEPROM), 프로그램가능 판독 전용 메모리(programmable ROM, PROM), 재생 보호된 메모리 블록(replay protected memory block, RPMB), 자기 메모리, 자기 디스크, 또는 광 디스크 중 하나 이상일 수 있다. 일부 다른 실시예들에서, 메모리(870)는 인터넷 상의 네트워크 저장 디바이스일 수 있다. 이러한 시스템은 인터넷 상에서 메모리(870)를 업데이트하는 것 또는 판독하는 것과 같은 연산을 수행할 수 있다.
프로세서(850)는, 메모리(870)로부터 컴퓨터 프로그램을 판독하도록, 그리고 다음으로 컴퓨터 프로그램에 의해 정의되는 방법을 수행하도록 구성된다. 예를 들어, 프로세서(850)는 운영 체제 프로그램(872)을 판독하여, 시스템에서의 운영 체제를 실행하고 이러한 운영 체제의 다양한 기능들을 구현하거나; 또는 하나 이상의 애플리케이션 프로그램(871)을 판독하여, 시스템에서의 애플리케이션을 실행한다.
메모리(870)는 컴퓨터 프로그램 외에도 다른 데이터(873)를 저장한다.
NPU(890)는 코프로세서로서 메인 프로세서(850)에 장착되고, NPU(890)에 메인 프로세서(850)에 의해 배정되는 태스크를 실행하도록 구성된다. 이러한 실시예에서, NPU(890)는, 안면 인식에서의 일부 복잡한 알고리즘들을 구현하기 위해, 안면 인식 TA의 하나 이상의 서브-스레드에 의해 호출될 수 있다. 구체적으로, 안면 인식 TA의 서브-스레드는 메인 프로세서(850)의 복수의 코어들 상에서 실행되고, 다음으로 메인 프로세서(850)는 NPU(890)를 호출하고, NPU(890)에 의해 구현되는 결과는 메인 프로세서(850)에 리턴된다.
모듈들 사이의 접속 관계는 단지 예이다. 본 출원의 임의의 실시예에서 제공되는 방법은 다른 접속 방식을 갖는 단말 디바이스에 또한 적용될 수 있다, 예를 들어, 모든 모듈이 버스를 통해 접속된다.
도 9는 실시예에 따른 NPU(900)의 개략 구조도이다. NPU(900)는 메인 프로세서 및 외부 메모리에 접속된다. NPU(900)의 중요한 부분은 연산 회로(903)이고, 제어기(904)는 연산 회로(903)를 제어하여 메모리로부터 데이터를 추출하고 수학적 연산을 수행한다.
일부 구현들에서, 연산 회로(903)는 복수의 처리 엔진들(process engine, PE)을 내부에 포함한다. 일부 구현들에서, 연산 회로(903)는 2차원 시스톨릭 어레이이다. 연산 회로(903)는 대안적으로 1차원 시스톨릭 어레이 또는 승산 및 가산과 같은 수학적 연산들을 수행할 수 있는 다른 전자 회로일 수 있다. 일부 다른 구현들에서, 연산 회로(903)는 범용 행렬 프로세서이다.
예를 들어, 입력 행렬 A, 가중 행렬 B, 및 출력 행렬 C가 있다고 가정된다. 연산 회로(903)는 가중 메모리(902)로부터 행렬 B에 대응하는 데이터를 페치하고 연산 회로(903)의 각각의 PE 상에 데이터를 버퍼링한다. 연산 회로(903)는 행렬 B 및 행렬 A의, 입력 메모리(901)로부터 페치되는, 데이터에 대해 행렬 연산을 수행하고, 행렬의 획득된 부분 결과 또는 획득된 최종 결과를 누산기(accumulator)(908)에 저장한다.
통합형 메모리(906)는 입력 데이터 및 출력 데이터를 저장하도록 구성된다. 가중 데이터는 직접 메모리 액세스 제어기(905)(예를 들어, direct memory access controller, DMAC)를 통해 가중 메모리(902)에 직접 복사된다. 입력 데이터는 또한 직접 메모리 액세스 제어기(905)를 통해 통합형 메모리(906)에 복사된다.
버스 인터페이스 유닛(910)(bus interface unit, BIU)은 AXI(advanced extensible interface) 버스를 통해 직접 메모리 액세스 제어기(905) 및 명령어 페치 버퍼(909)(instruction fetch buffer)와 상호작용하도록 구성된다.
버스 인터페이스 유닛(910)은 외부 메모리로부터 명령어를 획득하기 위해 명령어 페치 버퍼(909)에 의해 사용되고, 외부 메모리로부터 입력 행렬 A 또는 가중 행렬 B의 원래의 데이터를 획득하기 위해 직접 메모리 액세스 제어기(905)에 의해 추가로 사용된다.
직접 메모리 액세스 제어기(905)는 외부 메모리에서의 입력 데이터를 통합형 메모리(906)에 복사하도록, 가중 데이터를 가중 메모리(902)에 복사하도록, 또는 입력 데이터를 입력 메모리(901)에 복사하도록 주로 구성된다.
벡터 계산 유닛(907)은 복수의 연산 처리 유닛들을 일반적으로 포함한다. 필요하다면, 벡터 승산, 벡터 가산, 지수 연산, 로그 연산, 및/또는 값 비교와 같은, 추가 처리가 연산 회로(903)의 출력에 대해 수행된다.
일부 구현들에서, 벡터 계산 유닛(907)은 처리된 벡터를 통합형 메모리(906)에 저장할 수 있다. 예를 들어, 벡터 계산 유닛(907)은 연산 회로(903)의 출력에, 예를 들어, 누산된 값의 벡터에 비-선형 함수를 적용하여, 활성화 값을 생성할 수 있다. 일부 구현들에서, 벡터 계산 유닛(907)은 정규화된 값, 조합된 값, 또는 양자 모두를 생성한다. 일부 구현들에서, 처리된 벡터는 연산 회로(903)의 활성화 입력으로서 사용될 수 있다.
제어기(904)에 접속되는 명령어 페치 버퍼(909)는 제어기(904)에 의해 사용되는 명령어를 저장하도록 구성된다.
통합형 메모리(906), 입력 메모리(901), 가중 메모리(902), 및 명령어 페치 버퍼(909)는 모두 온-칩 메모리들이다. 도면에서의 외부 메모리는 NPU 하드웨어 아키텍처에 독립적이다.
이러한 실시예에서 제공되는 방법은 비-단말 컴퓨터 디바이스, 예를 들어, 클라우드 서버에 대안적으로 적용될 수 있다는 점이 주목되어야 한다.
전술한 실시예들에서, 안면 인식 해결책은 설명을 위한 예로서 주로 사용된다는 점이 주목되어야 한다. 그러나, 본 출원에서 제공되는 방법은 안면 인식 외에도 다른 해결책에 적용될 수 있다는 점이 명확하다. 해당 분야에서의 통상의 기술자는 본 출원에서 제공되는 구현에 기초하여 다른 해결책의 유사한 구현을 용이하게 알아낼 수 있다.
전술한 실시예들에서 제공되는 모듈들 또는 유닛들로의 분할은 단지 예이고, 설명된 모듈들의 기능들은 단지 설명을 위한 예들로서 사용된다는 점이 주목되어야 한다. 본 출원이 이에 제한되는 것은 아니다. 해당 분야에서의 통상의 기술자는 2개 이상의 모듈들의 기능들을 조합하거나 또는 모듈의 기능을 분할하여 더 미세한 세분성으로 그리고 요구되는 바와 같이 다른 변형으로 더 많은 모듈들을 획득할 수 있다.
전술한 실시예들에서의 동일한 또는 유사한 부분들에 대해, 상호 참조가 서로에 대해 이루어질 수 있다. 본 출원에서의 "복수의(a plurality of)"는 달리 명시되지 않는 한 2개 이상 또는 "적어도 2개(at least two)"를 의미한다. 본 출원에서의 "A/B"는 3가지 경우들: "A", "B", 및 "A 및 B"를 포함한다.
설명된 장치 실시예들은 단지 예들이다. 개별 부분들로서 설명되는 모듈들은 물리적으로 개별일 수 있거나 또는 그렇지 않을 수 있고, 모듈들로서 디스플레이되는 부분들은 물리적 모듈들이거나 또는 그렇지 않을 수 있고, 하나의 위치에 위치될 수 있거나, 또는 복수의 네트워크 모듈들에 분산될 수 있다. 일부 또는 모든 모듈들은 실시예들의 해결책들의 목적들을 달성하려는 실제 필요들에 의존하여 선택될 수 있다. 또한, 본 출원에서 제공되는 장치 실시예들의 첨부 도면들에서, 모듈들 사이의 접속 관계들은 이러한 모듈들이 서로 통신 접속들을 갖는다는 점을 표시하고, 이는 하나 이상의 통신 버스 또는 신호 케이블로서 구체적으로 구현될 수 있다. 해당 분야에서의 통상의 기술자는 창의적 노력들 없이 본 발명의 실시예들을 이해하고 구현할 수 있다.
전술한 설명들은 단지 본 출원의 일부 구체적인 구현들이지, 본 출원의 보호 범위를 제한하도록 의도되는 것은 아니다.

Claims (27)

  1. 컴퓨터 시스템으로서, 상기 컴퓨터 시스템에 REE(rich execution environment) 및 TEE(trusted execution environment)이 배치되고, 상기 TEE에 TA가 배치되고, 상기 TA의 기능은 복수의 서브-기능들을 포함하고, 상기 TEE에 스레드 생성 모듈, 통지 모듈, 및 TEE 스케줄링 모듈이 추가로 배치되고,
    상기 스레드 생성 모듈은 상기 TA의 호출 하에서 서브-스레드를 생성하도록 구성되고- 상기 서브-스레드는 상기 복수의 서브-기능들 중 하나를 구현하기 위해 사용됨 -;
    상기 통지 모듈은 상기 REE를 트리거하여 섀도우 스레드를 생성하도록 구성되고- 상기 섀도우 스레드의 실행은 상기 섀도우 스레드가 실행되는 코어로 하여금 상기 TEE에 진입하게 함 -;
    상기 TEE 스케줄링 모듈은 실행을 위해 상기 코어에 상기 서브-스레드를 스케줄링하도록 구성되는 컴퓨터 시스템.
  2. 제1항에 있어서, 통지 처리 모듈이 상기 REE에 추가로 배치되고;
    상기 통지 모듈은 구체적으로, 상기 서브-스레드가 생성된 후에 통지를 생성하도록, 그리고 상기 통지를 상기 통지 처리 모듈에 전송하도록 구성되고;
    상기 통지 처리 모듈은 상기 통지에 기초하여 상기 섀도우 스레드를 생성하도록 구성되는 컴퓨터 시스템.
  3. 제1항 또는 제2항에 있어서,
    상기 TEE 스케줄링 모듈은 구체적으로, 상기 섀도우 스레드가 처음으로 상기 TEE에 진입한다고 결정할 때, 실행을 위해 상기 섀도우 스레드가 실행되는 코어에 새롭게 생성된 서브-스레드를 스케줄링하도록 구성되는 컴퓨터 시스템.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 TEE 스케줄링 모듈은 상기 섀도우 스레드와 상기 서브-스레드 사이의 대응관계를 기록하도록 추가로 구성되는 컴퓨터 시스템.
  5. 제4항에 있어서,
    상기 TEE 스케줄링 모듈은 구체적으로, 상기 서브-스레드에 대한 제1 스레드 식별자를 생성하도록- 상기 제1 스레드 식별자는 상기 서브-스레드에 액세스하는 스레드를 표시하기 위해 사용됨 -; 그리고 실행을 위해 상기 코어에 상기 서브-스레드를 스케줄링한 후에 상기 제1 스레드 식별자의 값을 상기 섀도우 스레드의 식별자로 설정하도록 구성되는 컴퓨터 시스템.
  6. 제4항 또는 제5항에 있어서,
    상기 TEE 스케줄링 모듈은, 상기 섀도우 스레드가 상기 TEE에 재-진입한다고 결정할 때, 상기 섀도우 스레드와 상기 서브-스레드 사이의 기록된 대응관계에 기초하여, 실행을 위해 상기 섀도우 스레드가 실행되는 현재 코어에 상기 서브-스레드를 스케줄링하도록 추가로 구성되는 컴퓨터 시스템.
  7. 제6항에 있어서, 상기 섀도우 스레드는 상기 섀도우 스레드가 실행되는 코어가 상기 TEE에 처음으로 진입하거나 또는 상기 TEE에 재-진입하는 것을 가능하게 하기 위해 SMC(secure monitor call) 명령어를 호출하고, 상기 SMC 명령어는 하나의 파라미터를 포함하고, 상기 파라미터는 상기 코어가 상기 TEE에 처음으로 진입하는지 또는 상기 TEE에 재-진입하는지를 표시하기 위해 사용되고;
    대응하여, 상기 TEE 스케줄링 모듈은, 상기 파라미터에 기초하여, 상기 섀도우 스레드가 TEE에 재-진입한다고 결정하도록 구성되는 컴퓨터 시스템.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 TEE 스케줄링 모듈은 상기 섀도우 스레드와 상기 섀도우 스레드가 실행되는 현재 코어 사이의 대응관계를 기록하도록 추가로 구성되는 컴퓨터 시스템.
  9. 제8항에 있어서,
    상기 TEE 스케줄링 모듈은 구체적으로, 상기 섀도우 스레드가 실행되는 현재 코어가 상기 TEE에 진입한 후에, 글로벌 상태 어레이에서의 상기 현재 코어에 대응하는 엘리먼트에 상기 섀도우 스레드의 식별자를 기록하도록- 상기 글로벌 상태 어레이는 N개의 엘리먼트들을 포함하고, 각각의 엘리먼트는 상기 컴퓨터 시스템의 하나의 코어에 대응함 -; 그리고 상기 섀도우 스레드가 실행되는 현재 코어가 상기 TEE를 이탈한 후에, 상기 글로벌 상태 어레이에서의 상기 현재 코어에 대응하는 엘리먼트의 값을 0으로 설정하도록 구성되는 컴퓨터 시스템.
  10. 제9항에 있어서,
    상기 TEE 스케줄링 모듈은 구체적으로, 상기 섀도우 스레드가 실행되는 현재 코어가 상기 TEE에 진입한 후에, 상기 글로벌 상태 어레이에서의 상기 현재 코어에 대응하는 엘리먼트에 상기 섀도우 스레드의 식별자를 기록하도록, 타겟 서브-스레드를 검색하도록, 그리고 실행을 위해 상기 현재 코어에 상기 타겟 서브-스레드를 스케줄링하도록- 상기 타겟 서브-스레드에 대응하는 제1 스레드 식별자는 상기 글로벌 상태 어레이에서의 상기 현재 코어에 대응하는 엘리먼트에 기록되는 식별자임 - 구성되는 컴퓨터 시스템.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서, 상기 통지는 소프트웨어 인터럽트인 컴퓨터 시스템.
  12. 제1항 내지 제11항 중 어느 한 항에 있어서, 상기 TEE에 NPU(neural processing unit) 드라이버가 추가로 배치되고;
    상기 NPU 드라이버는, 상기 TA의 하나 이상의 서브-스레드의 호출 하에서, 실행할 NPU를 구동하도록 구성되는 컴퓨터 시스템.
  13. 제1항 내지 제12항 중 어느 한 항에 있어서, 상기 TEE에 보안 저장 유닛 및 하드웨어 드라이버 유닛이 추가로 배치되고, 상기 보안 저장 유닛 및 상기 하드웨어 드라이버 유닛은 상기 TEE에 의해서만 액세스될 수 있고;
    상기 하드웨어 드라이버 유닛은 상기 TA의 하나 이상의 서브-스레드의 호출 하에서 대응하는 하드웨어에 액세스하도록 구성되고;
    상기 보안 저장 유닛은 상기 하드웨어에 의해 수집되는 데이터를 저장하도록 구성되는 컴퓨터 시스템.
  14. 제1항 내지 제13항 중 어느 한 항에 있어서, 상기 TA는 안면 인식 기능을 구현하기 위한 TA 또는 지문 인식 기능을 구현하기 위한 TA인 컴퓨터 시스템.
  15. TEE(trusted execution environment) 상의 멀티프로세싱을 구현하기 위한 방법으로서,
    TEE에 의해, 서브-스레드를 생성하는 단계- 상기 서브-스레드는 상기 TEE 상에 배치되는 TA의 서브-기능을 구현하기 위해 사용됨 -;
    상기 TEE에 의해, REE(rich execution environment)을 트리거하여 섀도우 스레드를 생성하는 단계- 상기 섀도우 스레드의 실행은 상기 섀도우 스레드가 실행되는 코어로 하여금 상기 TEE에 진입하게 함 -; 및
    상기 TEE에 의해, 실행을 위해 상기 코어에 상기 생성된 서브-스레드를 스케줄링하는 단계를 포함하는 방법.
  16. 제15항에 있어서,
    상기 TEE에 의해, 상기 서브-스레드가 생성된 후에 통지를 생성하는 단계, 및 상기 통지를 상기 REE에 전송하는 단계- 상기 REE가 상기 통지에 기초하여 상기 섀도우 스레드를 생성함 -를 추가로 포함하는 방법.
  17. 제15항 또는 제16항에 있어서,
    상기 TEE에 의해, 상기 섀도우 스레드와 상기 서브-스레드 사이의 대응관계를 기록하는 단계를 추가로 포함하는 방법.
  18. 제17항에 있어서, 상기 TEE에 의해, 상기 섀도우 스레드와 상기 서브-스레드 사이의 대응관계를 기록하는 단계는,
    상기 TEE에 의해, 상기 섀도우 스레드의 식별자를 상기 서브-스레드의 TCB(thread control block)에서의 제1 스레드 식별자에 기록하는 단계- 상기 제1 스레드 식별자는 상기 서브-스레드에 액세스하는 스레드를 표시하기 위해 사용됨 -를 포함하는 방법.
  19. 제17항 또는 제18항에 있어서,
    상기 섀도우 스레드가 상기 TEE에 재-진입한다고 결정될 때, 상기 섀도우 스레드와 상기 서브-스레드 사이의 기록된 대응관계에 기초하여 상기 TEE에 의해, 실행을 위해 상기 섀도우 스레드가 실행되는 현재 코어에 상기 서브-스레드를 스케줄링하는 단계를 추가로 포함하는 방법.
  20. 제15항 내지 제19항 중 어느 한 항에 있어서,
    상기 TEE에 의해, 상기 섀도우 스레드와 상기 섀도우 스레드가 실행되는 현재 코어 사이의 대응관계를 기록하는 단계를 추가로 포함하는 방법.
  21. 제20항에 있어서, 상기 TEE에 의해, 상기 섀도우 스레드와 상기 섀도우 스레드가 실행되는 현재 코어 사이의 대응관계를 기록하는 단계는,
    상기 섀도우 스레드가 실행되는 현재 코어가 상기 TEE에 진입한 후에, 글로벌 상태 어레이에서의 상기 현재 코어에 대응하는 엘리먼트에 상기 섀도우 스레드의 식별자를 기록하는 단계- 상기 글로벌 상태 어레이는 N개의 엘리먼트들을 포함하고, 각각의 엘리먼트는 상기 컴퓨터 시스템의 하나의 코어에 대응함 -; 및
    상기 섀도우 스레드가 실행되는 현재 코어가 상기 TEE를 이탈한 후에, 상기 글로벌 상태 어레이에서의 상기 현재 코어에 대응하는 엘리먼트의 값을 0으로 설정하는 단계를 포함하는 방법.
  22. 제15항 내지 제21항 중 어느 한 항에 있어서, 상기 통지는 소프트웨어 인터럽트인 방법.
  23. 제15항 내지 제22항 중 어느 한 항에 있어서,
    상기 TEE에 의해, 상기 TEE에 배치되는 NPU 드라이버를 호출하는 것에 의해 NPU(neural processing unit)를 호출하는 단계를 추가로 포함하는 방법.
  24. 제15항 내지 제23항 중 어느 한 항에 있어서,
    상기 TEE에 의해, 상기 TEE 상에 배치되는 하드웨어 드라이버 유닛을 통해 대응하는 하드웨어에 액세스하는 단계, 및, 상기 TEE 상에 배치되는 보안 저장 유닛에, 상기 하드웨어에 의해 수집되는 데이터를 저장하는 단계를 추가로 포함하는 방법.
  25. 제15항 내지 제24항 중 어느 한 항에 있어서, 상기 TA는 안면 인식 기능을 구현하기 위한 TA 또는 지문 인식 기능을 구현하기 위한 TA인 방법.
  26. 컴퓨터 시스템으로서, 메모리 및 프로세서를 포함하고,
    상기 메모리는 컴퓨터-판독가능 명령어를 저장하도록 구성되고; 상기 프로세서는 상기 컴퓨터-판독가능 명령어를 판독하도록 그리고 제15항 내지 제25항 중 어느 한 항에 따른 방법을 구현하도록 구성되는 컴퓨터 시스템.
  27. 컴퓨터 저장 매체로서, 상기 컴퓨터 저장 매체는 컴퓨터-판독가능 명령어를 저장하고, 상기 컴퓨터-판독가능 명령어가 프로세서에 의해 실행될 때, 제15항 내지 제25항 중 어느 한 항에 따른 방법이 구현되는 컴퓨터 저장 매체.
KR1020207037763A 2018-06-19 2019-05-09 Tee 측에 대해 병렬인 멀티-코어를 구현하기 위한 방법, 장치 및 시스템 KR102509384B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201810632168.2 2018-06-19
CN201810632168.2A CN109960582B (zh) 2018-06-19 2018-06-19 在tee侧实现多核并行的方法、装置及系统
PCT/CN2019/086133 WO2019242423A1 (zh) 2018-06-19 2019-05-09 在tee侧实现多核并行的方法、装置及系统

Publications (2)

Publication Number Publication Date
KR20210014686A true KR20210014686A (ko) 2021-02-09
KR102509384B1 KR102509384B1 (ko) 2023-03-14

Family

ID=67023118

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207037763A KR102509384B1 (ko) 2018-06-19 2019-05-09 Tee 측에 대해 병렬인 멀티-코어를 구현하기 위한 방법, 장치 및 시스템

Country Status (7)

Country Link
US (1) US11461146B2 (ko)
EP (1) EP3812903A4 (ko)
KR (1) KR102509384B1 (ko)
CN (1) CN109960582B (ko)
AU (1) AU2019291421A1 (ko)
CA (1) CA3103584C (ko)
WO (1) WO2019242423A1 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109040088B (zh) * 2018-08-16 2022-02-25 腾讯科技(深圳)有限公司 认证信息传输方法、密钥管理客户端及计算机设备
GB2579682B (en) * 2019-03-25 2021-03-24 Trustonic Ltd Trusted execution environment migration method
GB2586640B (en) 2019-08-30 2021-12-08 Trustonic Ltd Trusted execution environment scheduling method
CN110795385B (zh) * 2019-10-29 2023-11-03 飞腾信息技术有限公司 片上系统的可信核与计算核核资源分配方法及装置
CN113192237B (zh) * 2020-01-10 2023-04-18 阿里巴巴集团控股有限公司 支持tee和ree的物联网设备以及实现tee和ree间通信的方法
CN111353162B (zh) * 2020-03-26 2022-06-07 中国人民解放军国防科技大学 基于TrustZone分核异步执行的主动可信计算方法及系统
CN113626818B (zh) * 2020-05-08 2023-10-20 华为技术有限公司 计算机系统、服务处理方法、可读存储介质及芯片
CN112817713B (zh) * 2021-01-27 2023-10-13 广州虎牙科技有限公司 作业调度方法、装置和电子设备
CN112818327A (zh) * 2021-02-26 2021-05-18 中国人民解放军国防科技大学 基于TrustZone的用户级代码和数据安全可信保护方法及装置
US20220374513A1 (en) * 2021-05-21 2022-11-24 Samsung Electronics Co., Ltd. Apparatus and method for providing secure execution environment for npu
CN113760090B (zh) * 2021-06-18 2022-09-13 荣耀终端有限公司 一种基于可信执行环境的业务流程执行方法及电子设备
CN115509677A (zh) * 2021-06-23 2022-12-23 华为技术有限公司 一种虚拟机与安全隔离区间的通信方法及相关装置
CN113419919A (zh) * 2021-06-24 2021-09-21 亿览在线网络技术(北京)有限公司 一种对第三方sdk进行线程监控的方法
CN113486355B (zh) * 2021-06-29 2023-03-14 北京紫光展锐通信技术有限公司 一种信息保存装置、方法、通信装置、芯片及其模组设备
CN113627328A (zh) * 2021-08-10 2021-11-09 安谋科技(中国)有限公司 电子设备及其图像识别方法、片上系统和介质
CN115016666B (zh) * 2021-11-18 2023-08-25 荣耀终端有限公司 触控处理方法、终端设备以及存储介质
CN114372261B (zh) * 2022-03-22 2022-07-22 荣耀终端有限公司 一种多线程处理方法及电子设备
CN114372260B (zh) * 2022-03-22 2022-07-22 荣耀终端有限公司 一种多线程处理方法及电子设备
CN115391066B (zh) * 2022-08-31 2023-06-30 瀚博半导体(上海)有限公司 用于芯片的数据交互方法、装置和人工智能芯片
CN116566744B (zh) * 2023-07-07 2023-09-22 北京瑞莱智慧科技有限公司 数据处理方法和安全校验系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040230794A1 (en) * 2003-05-02 2004-11-18 Paul England Techniques to support hosting of a first execution environment by a second execution environment with protection for the first execution environment
CN103064742A (zh) * 2012-12-25 2013-04-24 中国科学院深圳先进技术研究院 一种hadoop集群的自动部署系统及方法
CN106548077A (zh) * 2016-10-19 2017-03-29 沈阳微可信科技有限公司 通信系统和电子设备
US20180101688A1 (en) * 2016-10-11 2018-04-12 Intel Corporation Trust-enhanced attribute-based encryption
KR20180044173A (ko) * 2016-10-21 2018-05-02 삼성전자주식회사 시큐어 엘리먼트, 시큐어 엘리먼트의 동작 방법 및 시큐어 엘리먼트를 포함하는 전자 장치

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7197745B2 (en) * 2003-05-02 2007-03-27 Microsoft Corporation User debugger for use on processes running in a high assurance kernel in an operating system
US9292712B2 (en) * 2012-09-28 2016-03-22 St-Ericsson Sa Method and apparatus for maintaining secure time
US9742559B2 (en) * 2013-01-22 2017-08-22 Qualcomm Incorporated Inter-module authentication for securing application execution integrity within a computing device
EP2759955A1 (en) * 2013-01-28 2014-07-30 ST-Ericsson SA Secure backup and restore of protected storage
US8935746B2 (en) * 2013-04-22 2015-01-13 Oracle International Corporation System with a trusted execution environment component executed on a secure element
CN104216777B (zh) * 2014-08-29 2017-09-08 宇龙计算机通信科技(深圳)有限公司 双系统电子装置及终端
CN109416800B (zh) * 2016-06-30 2022-06-14 华为技术有限公司 一种移动终端的认证方法及移动终端
US10402566B2 (en) * 2016-08-01 2019-09-03 The Aerospace Corporation High assurance configuration security processor (HACSP) for computing devices
CN106547618B (zh) 2016-10-19 2019-10-29 沈阳微可信科技有限公司 通信系统和电子设备
CN106844082A (zh) * 2017-01-18 2017-06-13 联想(北京)有限公司 处理器预测故障分析方法及装置
CN109670312A (zh) * 2017-10-13 2019-04-23 华为技术有限公司 安全控制方法及计算机系统
CN109729523B (zh) * 2017-10-31 2021-02-23 华为技术有限公司 一种终端联网认证的方法和装置
CN108399329B (zh) * 2018-01-23 2022-01-21 晶晨半导体(上海)股份有限公司 一种提高可信应用程序安全的方法
WO2019148397A1 (zh) * 2018-01-31 2019-08-08 华为技术有限公司 分解敏感数据存储在不同应用环境中
EP3633546A4 (en) * 2018-04-12 2020-10-21 Guangdong Oppo Mobile Telecommunications Corp., Ltd. IMAGE PROCESSING METHOD AND DEVICE, ELECTRONIC DEVICE AND COMPUTER READABLE STORAGE MEDIUM
CN109766152B (zh) * 2018-11-01 2022-07-12 华为终端有限公司 一种交互方法及装置
CN111723383B (zh) * 2019-03-22 2024-03-19 阿里巴巴集团控股有限公司 数据存储、验证方法及装置
GB2586640B (en) * 2019-08-30 2021-12-08 Trustonic Ltd Trusted execution environment scheduling method
KR20220006890A (ko) * 2020-07-09 2022-01-18 삼성전자주식회사 모바일 결제를 지원하는 전자 장치, 그 동작 방법 및 저장 매체
CN112101949B (zh) * 2020-09-18 2022-12-16 支付宝(杭州)信息技术有限公司 安全的服务请求处理方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040230794A1 (en) * 2003-05-02 2004-11-18 Paul England Techniques to support hosting of a first execution environment by a second execution environment with protection for the first execution environment
CN103064742A (zh) * 2012-12-25 2013-04-24 中国科学院深圳先进技术研究院 一种hadoop集群的自动部署系统及方法
US20180101688A1 (en) * 2016-10-11 2018-04-12 Intel Corporation Trust-enhanced attribute-based encryption
CN106548077A (zh) * 2016-10-19 2017-03-29 沈阳微可信科技有限公司 通信系统和电子设备
KR20180044173A (ko) * 2016-10-21 2018-05-02 삼성전자주식회사 시큐어 엘리먼트, 시큐어 엘리먼트의 동작 방법 및 시큐어 엘리먼트를 포함하는 전자 장치

Also Published As

Publication number Publication date
CN109960582A (zh) 2019-07-02
WO2019242423A1 (zh) 2019-12-26
EP3812903A1 (en) 2021-04-28
US20210103470A1 (en) 2021-04-08
CA3103584C (en) 2022-10-04
CN109960582B (zh) 2020-04-28
US11461146B2 (en) 2022-10-04
AU2019291421A1 (en) 2021-01-07
EP3812903A4 (en) 2021-07-07
KR102509384B1 (ko) 2023-03-14
CA3103584A1 (en) 2019-12-26

Similar Documents

Publication Publication Date Title
KR102509384B1 (ko) Tee 측에 대해 병렬인 멀티-코어를 구현하기 위한 방법, 장치 및 시스템
LiKamWa et al. Starfish: Efficient concurrency support for computer vision applications
Kato et al. RGEM: A responsive GPGPU execution model for runtime engines
US10353831B2 (en) Trusted launch of secure enclaves in virtualized environments
CN109416651B (zh) 多租户云计算环境中的更新协调
US11687645B2 (en) Security control method and computer system
US20220091911A1 (en) Method and apparatus for inter-process communication, and computer device
US11042398B2 (en) System and method for guest operating system using containers
US11847225B2 (en) Blocking access to firmware by units of system on chip
US20110219373A1 (en) Virtual machine management apparatus and virtualization method for virtualization-supporting terminal platform
EP3876095A1 (en) Framework-agnostic agile container launches through lateral reuse of capabilities in standard runtimes
CN114035842A (zh) 固件配置方法、计算系统配置方法、计算装置以及设备
WO2023123850A1 (zh) 一种固件可信根的实现方法、装置、设备和可读存储介质
CN111831434A (zh) 资源分配方法、装置、存储介质及电子设备
US11106481B2 (en) Safe hyper-threading for virtual machines
US11061730B2 (en) Efficient scheduling for hyper-threaded CPUs using memory monitoring
US20230281135A1 (en) Method for configuring address translation relationship, and computer system
WO2021088744A1 (zh) 能力的管理方法和计算机设备
US20220114023A1 (en) Infrastructure as code deployment mechanism
Li et al. Teep: Supporting secure parallel processing in arm trustzone
US10127064B2 (en) Read-only VM function chaining for secure hypervisor access
WO2024040508A1 (en) Memory preserved warm reset mechanism
EP2972848B1 (en) Completing asynchronous operations during program execution
US20230409365A1 (en) Direct Mode for Virtualization
Dibble et al. Programming embedded systems: interacting with the embedded platform

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