KR20210112923A - 시스템 온 칩 및 이의 동작 방법 - Google Patents

시스템 온 칩 및 이의 동작 방법 Download PDF

Info

Publication number
KR20210112923A
KR20210112923A KR1020200028586A KR20200028586A KR20210112923A KR 20210112923 A KR20210112923 A KR 20210112923A KR 1020200028586 A KR1020200028586 A KR 1020200028586A KR 20200028586 A KR20200028586 A KR 20200028586A KR 20210112923 A KR20210112923 A KR 20210112923A
Authority
KR
South Korea
Prior art keywords
firmware
main processor
hypervisor
target
memory
Prior art date
Application number
KR1020200028586A
Other languages
English (en)
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 삼성전자주식회사
Priority to KR1020200028586A priority Critical patent/KR20210112923A/ko
Priority to US17/077,817 priority patent/US11847225B2/en
Priority to DE102020127800.4A priority patent/DE102020127800A1/de
Priority to CN202110047120.7A priority patent/CN113434453A/zh
Priority to TW110107684A priority patent/TW202203012A/zh
Publication of KR20210112923A publication Critical patent/KR20210112923A/ko
Priority to US18/489,686 priority patent/US20240045969A1/en

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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7864Architectures of general purpose stored program computers comprising a single central processing unit with memory on more than one IC chip
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/604Tools and structures for managing or administering access control systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/35Indirect addressing
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44589Program code verification, e.g. Java bytecode verification, proof-carrying code
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Abstract

본 개시의 일 실시 예에 따른 시스템 온 칩은 메인 프로세서 및 복수의 제1 IP(Intellectual Property)들을 구비하고, 시스템 온 칩의 동작 방법은 상기 메인 프로세서가 펌웨어 로더(loader)를 통해 메모리에 제1 대상 펌웨어를 복사하는 단계, 상기 메인 프로세서가 하이퍼바이저(hypervisor)를 통해 상기 메인 프로세서 및 상기 복수의 제1 IP들에 대한 상기 제1 대상 펌웨어로의 접근을 차단하는 단계, 상기 메인 프로세서가 펌웨어 검증기(verifier)를 통해 상기 제1 대상 펌웨어를 검증하는 단계 및 상기 메인 프로세서가 상기 하이퍼바이저를 통해 상기 검증 결과를 기반으로 상기 복수의 제1 IP들 중 대상 IP에 대한 상기 제1 대상 펌웨어로의 접근을 허여하는 단계를 포함한다.

Description

시스템 온 칩 및 이의 동작 방법{A system-on chip and operation method thereof}
본 개시의 기술적 사상은 시스템 온 칩에 관한 것으로, 더욱 상세하게는 안전하게 펌웨어를 로딩하기 위한 시스템 온 칩 및 이의 동작 방법에 관한 것이다.
모바일 기술이 발달하고, 다양한 기능이 요구됨에 따라 시스템 온 칩에서 처리해야 할 기능은 늘어가는 추세이며, 이에 따라 모바일 장치의 성능을 개선하고, 최적화된 기능을 수행하기 위해 메인 프로세서 외에 다양한 목적을 지니는 DSP(Digital Signal Processor)와 같은 IP(Intellectual Property)가 개발되고 있다. 예를 들어, 최근 시스템 온 칩들은 인공 지능 관련 병렬 연산에 최적화된 NPU(Neural Processing Unit), TPU(Tensor Processing Unit)를 탑재하여 메인 프로세서를 대신할 수 있으며, 복잡한 연산이 필요한 카메라 기능에서도 DSP로 연산을 분산하여 처리 속도를 높이고 있다.
한편, DSP는 복수의 코어들을 포함하는 메인 프로세서와 유사한 동작을 수행할 수 있다. 즉, DSP는 메모리에 있는 소프트웨어 코드를 리드하여 소정의 동작을 수행하고, 동작을 수행하면서도 수시로 메모리에 접근하여 알고리즘 또는 소프트웨어 데이터를 리드하거나 연산 결과를 라이트할 수 있다.
또한, 안전한 데이터 처리를 위하여 보안 영역(예를 들면, TEE(Trusted Execution Environment) 영역)에서 DSP를 사용하는 경우가 늘어나고 있다. 예를 들면, 얼굴 인식 또는 보안을 요하는 인공 지능 처리 동작을 DSP에서 메인 프로세서 대신 수행할 수 있다. 보안 영역에서 DSP를 제어하려면 DSP를 제어하는 펌웨어, 알고리즘, 데이터 등이 모두 보호된(Protected) 메모리 상에서 동작해야하며 펌웨어 등에 대한 검증도 우선하여 수행되어야 한다. 다만, 펌웨어 등에 대한 검증 동작시에 보안 영역에 대응하는 메모리 영역에 데이터를 복사하고, DSP가 복사된 데이터를 이용하여 검증을 수행하는 때에, 데이터 이동이 복수회 발생하며, 이에 따라 연산 시간이 늘어나는 문제가 있었다.
본 개시의 기술적 사상이 해결하려는 과제는 보안 영역에서 소정의 IP가 메인 프로세서를 대신하여 소정의 데이터 처리 동작을 수행하거나, 메인 프로세서가 직접 소정의 데이터 처리 동작을 수행할 때에, 데이터를 효율적으로 이동하고, 보호하는 시스템 온 칩 및 이의 동작 방법을 제공하는 데에 있다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따라 시스템 온 칩은, 메인 프로세서 및 복수의 제1 IP(Intellectual Property)들을 구비하고, 시스템 온 칩의 동작 방법은 상기 메인 프로세서가 펌웨어 로더(loader)를 통해 메모리에 제1 대상 펌웨어를 복사하는 단계, 상기 메인 프로세서가 하이퍼바이저(hypervisor)를 통해 상기 메인 프로세서 및 상기 복수의 제1 IP들에 대한 상기 제1 대상 펌웨어로의 접근을 차단하는 단계, 상기 메인 프로세서가 펌웨어 검증기(verifier)를 통해 상기 제1 대상 펌웨어를 검증하는 단계 및 상기 메인 프로세서가 상기 하이퍼바이저를 통해 상기 검증 결과를 기반으로 상기 복수의 제1 IP들 중 대상 IP에 대한 상기 제1 대상 펌웨어로의 접근을 허여하는 단계를 포함한다.
본 개시의 기술적 사상의 일측면에 따른 시스템 온 칩은 메모리, 운영 체제를 구동하는 메인 프로세서 및 각각 목적에 부합하는 프로세싱 동작을 수행하는 복수의 제1 IP들을 포함하며, 상기 메인 프로세서는, 펌웨어 로더를 통해 상기 메모리에 대상 펌웨어를 복사하고, 상기 대상 펌웨어에 대한 검증 전에 하이퍼바이저를 통해 상기 메인 프로세서 및 상기 복수의 제1 IP들에 대한 상기 대상 펌웨어로의 접근을 차단하고, 상기 대상 펌웨어에 대한 검증 후에 상기 하이퍼바이저를 통해 상기 복수의 제1 IP들 중 상기 대상 펌웨어를 실행하도록 선택된 대상 IP에 대한 상기 대상 펌웨어로의 접근을 허여하도록 구성된 것을 특징으로 한다.
본 개시의 기술적 사상의 일측면에 따른 시스템 온 칩은 메인 프로세서, 복수의 IP들 및 보안 시스템을 구비하고, 시스템 온 칩의 동작 방법은 상기 메인 프로세서에 의해 실행되는 커널은 상기 메인 프로세서에 의해 실행되는 하이퍼바이저에 대상 펌웨어의 로딩을 위한 관리를 요청하는 단계, 상기 하이퍼바이저는 상기 대상 펌웨어가 로딩될 메모리 영역에 대하여 상기 메인 프로세서 및 상기 복수의 IP들 중 적어도 하나에 대한 접근 권한을 제1 변경하는 단계, 상기 커널은 상기 대상 펌웨어를 상기 메모리에 로드하는 단계, 상기 커널은 상기 하이퍼바이저에 로딩된 상기 대상 펌웨어에 대한 검증을 요청하는 단계, 상기 하이퍼바이저는 상기 메모리 영역에 대하여 상기 메인 프로세서 및 상기 복수의 IP들 중 적어도 하나에 대한 접근 권한을 제2 변경하는 단계, 상기 하이퍼바이저는 상기 서브 보안 시스템에 로딩된 상기 대상 펌웨어에 대한 검증을 요청하는 단계, 상기 서브 보안 시스템은 로딩된 상기 대상 펌웨어에 대한 검증을 수행하는 단계, 상기 서브 보안 시스템은 상기 하이퍼바이저에 상기 검증 결과를 제공하는 단계, 상기 하이퍼바이저는 상기 검증 결과를 기반으로 상기 메모리 영역에 대하여 상기 메인 프로세서 및 상기 복수의 IP들 중 적어도 하나에 대한 접근 권한을 제3 변경하는 단계 및 상기 커널은 로딩된 상기 대상 펌웨어를 실행하는 단계를 포함한다.
본 개시의 예시적 실시 예에 따른 모바일 장치는 시스템 온 칩의 메인 프로세서인 멀티-코어 프로세서 또는 멀티-코어 프로세서 이외의 IP들이 TEE에서 펌웨어를 실행할 때에 메모리 내에 TEE 영역과 REE 영역 간의 불필요한 데이터 교환없이 효율적이고, 안전하게 펌웨어 이미지를 메모리에 로드하고, 이를 검증할 수 있다.
도 1은 본 개시의 일 실시예에 따른 모바일 장치를 개략적으로 나타낸 블록도이다.
도 2는 본 개시의 예시적 실시 예에 따른 노멀 월드 및 시큐어 월드에서 동작하는 방법에 대한 소프트웨어 아키텍쳐를 설명하기 위한 블록도이다.
도 3은 본 개시의 예시적 실시 예에 따른 모바일 장치의 동작을 설명하기 위한 블록도이다.
도 4a 및 도 4b는 도 3의 메인 프로세서의 대상 펌웨어로의 접근을 제어하기 위한 하이퍼바이저의 동작을 설명하기 위한 도면이다.
도 5a 및 도 5b는 도 3의 메인 프로세서의 제1 DSP의 대상 펌웨어로의 접근을 제어하기 위한 하이퍼바이저의 동작을 설명하기 위한 도면이다.
도 6은 도 3의 대상 펌웨어가 메모리에 로드되고, 검증되기까지의 하이퍼바이저의 동작을 설명하기 위한 도면이다.
도 7은 본 개시의 예시적 실시 예에 따른 시스템 온 칩의 동작 방법을 나타내는 순서도이다.
도 8 내지 도 10은 본 개시의 예시적 실시 예에 따른 시스템 온 칩의 동작 방법을 나타내는 순서도이다.
도 11은 본 개시의 예시적 실시 예에 따른 도 1의 메모리 또는 저장 장치에 저장된 소프트웨어 아키텍쳐 구조를 나타내는 블록도이다.
도 12는 본 개시의 예시적 실시 예에 따른 시스템 온 칩를 포함한 전자 장치를 나타내는 블록도이다.
도 13은 본 개시의 예시적 실시 예에 따른 시스템 온 칩를 포함한 전자 장치(1200)를 나타내는 블록도이다.
도 14는 본 개시의 예시적 실시 예에 따른 복수의 IoT 장치가 서버에 연결되어 구현된 스마트 홈을 나타내는 도면이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시예에 대해 상세히 설명한다.
도 1은 본 개시의 일 실시예에 따른 모바일 장치를 개략적으로 나타낸 블록도이다. 이하에서 서술될 도 1에 도시된 모바일 장치(100)의 구성 및 동작은 다른 전자 장치에도 적용될 수 있음은 충분히 이해될 것이다.
도 1을 참조하면, 모바일 장치(100)는 시스템 온 칩(SoC), 메모리(또는, 워킹 메모리)(130), 저장 장치(170)을 포함할 수 있다. 도 1에는 도시되지 않았으나, 모바일 장치(100)는 액정 표시 장치, 터치 패널, 음향 장치 등을 더 포함할 수 도 있다. 시스템 온 칩(SoC)은 멀티-코어 프로세서(또는, 메인 프로세서)(110), 메모리 컨트롤러(120), NPU(Neural Processing Unit)(140), DSP(Digital Signal Processor)(150), 메모리 인터페이스(160), 보안 시스템(180) 및 가속기(190)를 포함할 수 있다. 이하에서, 멀티-코어 프로세서(110), NPU(140), DSP(150)는 IP(Intellectua Property)로 지칭될 수 있으며, 도 1의 시스템 온 칩(SoC)에는 도시되지는 않았으나, 사용자에 다양한 서비스들을 제공하기 위한 데이터 처리를 수행하는 IP들(예를 들면, ISP(Image Signal Processor), TPU(Tensor Processing Unit) 등)이 더 포함될 수 있다.
멀티-코어 프로세서(110)는 모바일 장치(100)의 전반적인 동작을 제어할 수 있다. 이 때, 멀티-코어 프로세서(110)는 노멀 월드(normal world) 및 시큐어 월드(secure world) 중 어느 하나로 선택적 동작을 수행할 수 있다.
시큐어 월드란 보안성을 확보한 데이터 처리 아키텍처(architecture)를 의미하고, 노멀 월드란 일반적인 데이터 처리 아키텍처를 의미할 수 있다. 예시적 실시 예로, 멀티-코어 프로세서(110)는 "ARM 트러스트존 아키텍처(ARM Trustzone Architecture)"를 기반으로 동작할 수 있다. 위와 같은 아키텍쳐는 두 가지의 런타임 환경들을 포함할 수 있으며, 그 중 하나인 비보안 런타임 환경(예를 들면, REE(Rich Execution Environment))은, 노멀 존(Normal Zone) 또는 노멀 월드(Normal World)로 지칭될 수 있고, 정상 운영 체제에 의해서 제어될 수 있다. 다른 하나의 런타임 환경인 보안 런타임 환경(예를 들면, TEE(Trusted Execution Enviroment))은 트러스트 존(Trustzone) 또는 트러스티드 월드(TrustedWorld) 또는 시큐어 월드로 지칭될 수 있으며, 보안 런타임 환경은 보안 운영 체제에 의해 제어될 수 있다.
노멀 운영 체제는 예를 들어, 안드로이드, 윈도우 폰, iOS(iPhone OS) 등과 같은 통상적인 운영 체제일 수 있으며, 보안 운영 체제는 기존 운영 체제 내에 보안 기능이 통합된 보안 커널(security kernel)을 삽입한 운영 체제일 수 있다. 전술한 ARM 트러스트 존에 따르면, 상술한 비보안 런타임 환경 및 보안 런타임 환경은 가상 실행 환경으로 정의될 수 있다.
멀티-코어 프로세서(110)는 모바일 장치(100)에서 수행될 소프트웨어(응용 프로그램, 운영 체제, 장치 드라이버들)를 실행할 수 있다. 멀티-코어 프로세서(110)는 메모리(130)에 로드되는 운영 체제를 실행할 수 있다. 멀티-코어 프로세서(110)는 운영 체제 기반에서 구동될 다양한 응용 프로그램들을 실행할 수 있다.
이하에서는, 멀티-코어 프로세서(110)를 대신하여 DSP(150)가 TEE에서 펌웨어(134)를 기반으로 동작해야 하는 경우를 중심으로 서술한다. 예시적 실시 예로, 펌웨어(134)는 시큐어 월드에서 동작해야하는 것으로서 예를 들면, 얼굴 인식, 지문 인식, 홍채 인식, 보안을 요하는 AI 처리 동작, 모바일 거래 동작 등을 수행하기 위한 프로그램을 포함할 수 있다. 한편, 본 개시의 기술적 사상은 DSP(150) 이외의 NPU(140), 가속기(190) 등의 다른 IP들이 멀티-코어 프로세서(110)를 대신하여 펌웨어(134)를 기반으로 동작해야 하는 경우에도 적용될 수 있음은 분명하다.
예시적 실시 예로, 멀티-코어 프로세서(110)는 저장 장치(170)에 저장된 보안 메모리 관리 소프트웨어(172)를 실행함으로써 DSP(150)가 TEE에서 안정적으로 메모리(130)에 로딩된 펌웨어(134)를 수행할 수 있도록 저장 장치(170)에 저장된 펌웨어 이미지(174)를 메모리(130)에 복사하고, 보안 시스템(180)을 이용하여 펌웨어(134)에 대한 검증을 수행할 수 있다.
구체적으로, 멀티-코어 프로세서(110)는 운영 체제의 커널(Kernel)에서의 펌웨어 로더(loader)를 통해 메모리(130)에 저장 장치(170)의 펌웨어 이미지(174)를 복사할 수 있다.
멀티-코어 프로세서(110)는 하이퍼바이저(hypervisor)를 통해 멀티-코어 프로세서(110), NPU(140), DSP(150), 보안 시스템(180), 가속기(190) 등과 같은 IP들의 펌웨어(134)(이하, 대상 펌웨어로 지칭)로의 접근을 제어할 수 있다. 하이퍼바이저는 다수의 운영 체제들을 동시에 실행하기 위한 논리적 플래폼으로서 가상화 머신 모니터 또는 가상화 머신 매니저로 지칭될 수 있다. 하이퍼바이저는 타입에 따라 멀티-코어 프로세서(110) 상에서 직접 실행되거나, 멀티-코어 프로세서(110)의 호스트 운영 체제를 통해 실행될 수 있다. 하이퍼바이저는 대상 펌웨어(134)에 대한 검증 전에 해커의 공격 등이 발생하더라도 대상 펌웨어(134)에 대한 변경 또는 손상을 방지하도록 IP들의 대상 펌웨어(134)에 대한 비보안 접근을 차단할 수 있다. 예시적 실시 예로, 하이퍼바이저는 IP들의 비보안 접근을 차단하기 위하여 메모리(130)의 대상 펌웨어(134)가 저장된 영역에 대한 리드 또는 라이트 권한을 조정할 수 있다. 멀티-코어 프로세서(110)의 커널 및 하이퍼바이저는 REE에서 동작할 수 있다.
멀티-코어 프로세서(110)는 펌웨어 검증기를 통해 대상 펌웨어(134)를 검증할 수 있다. 펌웨어 검증기는 TEE에서 동작할 수 있으며, 대상 펌웨어(134)의 무결성(integrity)을 검증할 수 있다. 예시적 실시 예로, 펌웨어 검증기는 보안 시스템(180)이 대상 펌웨어(134)의 무결성을 검증하도록 제어할 수 있다. 보안 시스템(180)은 무결성 검증 동작을 처리할 수 있는 보안 IP를 포함할 수 있으며, 보안 IP는 대상 펌웨어(134)에 대한 디지털 서명을 다양한 방식의 암호화 알고리즘을 적용하여 생성하고, 디지털 서명을 공개키(public key)를 이용하여 복호화할 수 있다. 보안 IP는 디지털 서명 및 공개키를 이용하여 대상 펌웨어(134)가 변경되었는지 여부를 확인함으로써 대상 펌웨어(134)의 무결성을 검증할 수 있다.
멀티-코어 프로세서(110)는 하이퍼바이저를 통해 대상 펌웨어(134)의 무결성 검증이 통과된 때에, DSP(150)가 TEE에서 대상 펌웨어(134)를 실행할 수 있도록 DSP(150)의 대상 펌웨어(134)로의 접근을 허여할 수 있다. 예시적 실시 예로, 하이퍼바이저는 DSP(150)의 접근을 허여하기 위하여 메모리(130)의 대상 펌웨어(134)가 저장된 영역에 대한 리드 또는 라이트 권한을 조정할 수 있다. 그 결과, DSP(150)는 멀티-코어 프로세서(110) 대신 대상 펌웨어(134)를 실행하여 대상 펌웨어(134)에 기반된 동작을 수행할 수 있다. 일부 실시 예에서, 하이퍼바이저는 멀티-코어 프로세서(110)의 대상 펌웨어(134)로의 접근을 제어할 수 있으며, 멀티-코어 프로세서(110)는 대상 펌웨어(134)를 실행하여 대상 펌웨어(134)에 기반된 동작을 수행할 수 있다.
메모리 컨트롤러(120)는 메모리(130)와 시스템 온 칩(SoC) 사이에서 인터페이싱을 제공할 수 있다. 메모리 컨트롤러(120)는 멀티-코어 프로세서(110)나 다른 IP(예를 들면, NPU(140), DSP(150), 보안 시스템(180), 가속기(190))의 요청에 응답하여 메모리(130)에 접근할 수 있다. 예를 들면, 메모리 컨트롤러(120)는 멀티-코어 프로세서(110)의 라이트 요청에 따라 데이터를 메모리(130)에 라이트하고, 멀티-코어 프로세서(110)의 리드 요청에 응답하여 메모리(130)로부터 데이터를 리드하여 시스템 인터커넥터(192)를 통해 멀티-코어 프로세서(110)나 메모리 인터페이스(160)에 전달할 수 있다.
메모리(130)에는 모바일 장치(100)의 부팅시에 운영 체제나 응용 프로그램들이 로드될 수 있다. 운영 체제에 의해서 모바일 장치(100)의 제반 입출력 동작들이 지원될 수 있다. 또한, 사용자의 의해 선택되거나 기본적인 서비스 제공을 위해서 복수의 펌웨어들(또는, 응용 프로그램들)이 메모리(130)에 로드될 수 있다. 메모리(130)는 이뿐 아니라, 카메라와 같은 이미지 센서로부터 제공되는 영상 데이터를 저장하는 버퍼 메모리로 사용될 수도 있다. 메모리(130)는 SRAM(Static Random Access Memory)나 DRAM(Dynamic Random Access Memory)과 같은 휘발성 메모리이거나, PRAM(Phase RAM), MRAM(Magnetic RAM), ReRAM(Resistive RAM), FRAM(Ferroelectrics RAM), 플래시 메모리 등의 비휘발성 메모리일 수 있다.
메모리 인터페이스(160)는 멀티-코어 프로세서(110)나 다른 IP(예를 들면, NPU(140), DSP(150), 보안 시스템(180), 가속기(190))의 요청에 따라 저장 장치(170)에 액세스할 수 있다. 즉, 메모리 인터페이스(160)는 시스템 온 칩(SoC)과 저장 장치(170) 사이의 인터페이스를 제공할 수 있다. 예를 들면, 멀티-코어 프로세서(110)에 의해서 처리된 데이터가 메모리 인터페이스(160)를 통해 저장 장치(170)에 저장될 수 있으며, 저장 장치(170)에 저장된 데이터는 메모리 인터페이스(160)를 통해 멀티-코어 프로세서(110)에 제공될 수 있다.
저장 장치(170)는 모바일 장치(100)의 저장 매체(Storage Medium)로서 제공될 수 있다. 저장 장치(170)는 본 개시의 기술적 사상에 따른 동작에 기반이 되는 보안 메모리 관리 소프트웨어(172) 및 펌웨어 이미지(174)를 저장할 수 있으며, 더 나아가, 복수의 응용 프로그램들, 운영 체제 이미지 및 각종 데이터를 더 저장할 수도 있다. 저장 장치(170)는 메모리 카드(예를 들면, MMC(Multi-Media Card, eMMC(Embedded MMC), SD(Secure Digital) 메모리 카드, Micro SD 메모리 카드 등)로 제공될 수 있다. 저장 장치(170)는 대용량의 저장 능력을 갖는 플래시 메모리를 포함할 수 있다. 또는, 저장 장치(170)는 PRAM, MRAM, ReRAM, FRAM 등의 차세대 비휘발성 메모리를 포함할 수도 있다. 일부 실시 예에서 저장 장치(170)는 시스템 온 칩(SoC)의 내부에 구비되는 내장 메모리일 수 있다.
NPU(140), DSP(150) 및 가속기(180)는 멀티-코어 프로세서(110)를 대신하거나, 지원(support)하여 보안 데이터 또는 멀티미디어 데이터 등의 처리 동작을 수행하기 위한 별도의 IP로 제공될 수 있다. 예를 들면, 가속기(180)는 텍스트(Text), 오디오(Audio), 정지 영상들(Still images), 애니메이션(Animation), 비디오(Video), 2차원 데이터, 또는 3차원 데이터의 처리 성능을 향상시키기 위한 IP로 제공될 수 있다.
본 개시의 예시적 실시 예에 따른 모바일 장치(100)는 시스템 온 칩(SoC)의 메인 프로세서인 멀티-코어 프로세서(110) 또는 멀티-코어 프로세서(110) 이외의 IP들이 TEE에서 펌웨어를 실행할 때에 메모리(130) 내에 TEE 영역, REE 영역 간의 불필요한 데이터 교환을 생략하여 효율적이고, 안전하게 펌웨어 이미지(174)를 메모리(130)에 로드하고, 이를 검증할 수 있다.
도 2는 본 개시의 예시적 실시 예에 따른 노멀 월드(210) 및 시큐어 월드(220)에서 동작하는 방법에 대한 소프트웨어 아키텍쳐를 설명하기 위한 블록도이다.
도 2를 참조하면, 트러스트존 아키텍처는 노멀 월드(210) 및 시큐어 월드(220)의 두가지 런타임 환경을 제공할 수 있다. 이 때, 노멀 월드(210)는 노멀 월드 사용자 모드(212) 및 노멀 월드 커널 모드(214)를 포함하며, 시큐어 월드(220)는 시큐어 월드 사용자 모드(222), 시큐어 월드 커널 모드(224) 및 모니터 모드(230)를 포함할 수 있다. 이 때, 각각의 월드(210, 220)는 캐시, TLB(Translation Look a side Buffer), MMU(Memory Management Unit), 레지스터(Register) 등의 하드웨어 자원을 가상으로 분리하여 관리할 수 있다.
상술한 바와 같이, 노멀 월드(210)와 시큐어 월드(220)는 선택적으로 동작할 수 있으므로, 트러스트존 아키텍쳐는 노멀 월드(210)와 시큐어 월드(220)의 변경을 관리하기 위하여 모니터 모드(230)를 제공할 수 있다. 이 때, 모니터 모드(230)의 소프트웨어는 시큐어 월드(220)에서 동작할 수 있다.
한편, 노멀 월드(210) 및 시큐어 월드(220)는 모니터 모드(230)에 의해 제어되므로, 멀티-코어 프로세서(110, 도 1)에 의해 생성되는 다양한 명령어 또는 인터럽트는 모니터 모드를 통해 각각의 월드(210, 220)로 전달될 수 있다. 예를 들어, 노멀 월드 커널 모드(214) 또는 시큐어 월드 커널 모드(224)는 시큐어 모니터 콜 명령어(SMC)를 이용하여 연결될 수 있다. 즉, 멀티-코어 프로세서(110, 도 1)는 시큐어 모니터 콜 명령어를 이용하여 현재 실행되는 모드(노멀 월드 커널 모드(214) 또는 시큐어 월드 커널 모드(224))를 모니터 모드(230)로 변경할 수 있다. 다만, 시큐어 모니터 콜 명령어(SMC)를 사용하는 경우 외에도 멀티-코어 프로세서(110, 도 1)는 IRQ(Interrupt Request) 또는 FIQ(Fast Interrupt Request)를 이용하여 현재 실행되는 모드를 모니터 모드(230)로 변경할 수 있다. 일반적으로 IRQ는 노멀 월드(210)의 인터럽트로 사용되며, FIQ는 시큐어 월드(220)의 인터럽트로 사용될 수 있다.
전술한 바와 같이, 노멀 월드(210)에서 동작하는 것은 REE에서 동작하는 것에 대응할 수 있으며, 시큐어 월드(220)에서 동작하는 것은 TEE에서 동작하는 것에 대응할 수 있다.
본 개시의 예시적 실시 예에 따른 멀티-코어 프로세서(110, 도 1)는 대상 펌웨어(134, 도 1)가 메모리(130)에 로드되고, 검증되어 향후 멀티-코어 프로세서(110, 도 1) 또는 다른 IP(예를 들면, NPU(140, 도 1), DSP(150, 도 1))을 통해 실행될 수 있도록 노멀 월드 커널 모드(214)에서 시큐어 월드 커널 모드(224)로, 시큐어 월드 커널 모드(224)에서 노멀 월드 커널 모드(214)로 전환되어 동작할 수 있다.
도 3은 본 개시의 예시적 실시 예에 따른 모바일 장치(300)의 동작을 설명하기 위한 블록도이다.
도 3을 참조하면, 모바일 장치(300)는 하드웨어(HW)로서 메인 프로세서(352), 제1 MMU(354), 제2 MMU(356), 제1 DSP(352), 제1 시스템 MMU(364), 제1 MPU(Memory Protection Unit)(366), 제2 DSP(382), 제2 시스템 MMU(384), 제2 MPU(386), IP(372), 시스템 MMU(374), MPU(376) 및 메모리(390)를 포함할 수 있다. 한편, 도 3에 도시된 것에 국한되지 않고, 하드웨어(HW)는 더 많고, 다양한 IP들과 각각에 연결된 메모리 관리 유닛들을 더 포함할 수 있다.
메인 프로세서(352)는 제1 MMU(354)와 직접 연결되고, 제2 MMU(356)와는 제1 MMU(354)를 통해 연결될 수 있으며, 메인 프로세서(352)는 제1 스테이지의 제1 MMU(354)와 제2 스테이지의 제2 MMU(356)를 단계적으로 이용하여 메모리(390)에 접근할 수 있다. 제1 DSP(352)는 제1 시스템 MMU(364)와 직접 연결되고, 제1 MPU(366)와는 제1 시스템 MMU(364)를 통해 연결될 수 있으며, 제1 DSP(352)는 제1 시스템 MMU(364)와 제1 MPU(366)를 단계적으로 이용하여 메모리(390)에 접근할 수 있다. 제2 DSP(382)는 제2 시스템 MMU(384)와 직접 연결되고, 제2 MPU(386)와는 제2 시스템 MMU(384)를 통해 연결될 수 있으며, 제2 DSP(382)는 제2 시스템 MMU(384)와 제2 MPU(386)를 단계적으로 이용하여 메모리(390)에 접근할 수 있다. IP(372)는 시스템 MMU(374), MPU(376)를 통해 연결될 수 있으며, IP(372)는 시스템 MMU(374)와 MPU(386)를 단계적으로 이용하여 메모리(390)에 접근할 수 있다.
제1 MMU(354)는 메인 프로세서(352)가 메모리(390)에 대한 접근을 위해 제1 논리 주소를 제2 논리 주소로 변환하는 L2L(Logical To Logical) 맵핑 테이블을 관리하고, 제2 MMU(356)는 제2 논리 주소를 물리 주소로 변환하는 P2P(Physical To Physical) 맵핑 테이블을 관리할 수 있다. 상기 물리 주소는 메모리(390)의 실제 주소에 대응할 수 있다.
MPU(366, 376, 386)는 메모리(390)의 일부 영역을 각각에 연결된 IP(362, 372, 382)의 비보안 접근으로부터 보호할 수 있다. 구체적으로, MPU는 메모리(390)의 영역을 복수의 윈도우 영역으로 구분하고, 복수의 윈도우 영역을 IP(362, 372, 382)의 비보안 접근으로부터 보호할 수 있다. MPU(366, 376, 386)는 메모리(390)의 주소 정보, 각각의 주소 정보에 대응하는 속성 정보가 포함된 페이지 테이블을 관리할 수 있다.
한편, 커널(310), 펌웨어 검증기(320) 및 하이퍼바이저(330)는 메인 프로세서(352)에 의해 실행되는 프로그램일 수 있으며, 이하의 커널(310), 펌웨어 검증기(320) 및 하이퍼바이저(330)의 동작은 메인 프로세서(352)에서 수행되는 것으로 이해될 수 있다.
예시적 실시 예로, 제1 레이어(L1) 상에서 커널(310) 및 펌웨어 검증기(320)가 동작하고, 제2 레이어(L2) 상에서 하이퍼바이저(330)가 동작하며, 제3 레이어(L3)에서는 신뢰된 펌웨어(340)가 동작할 수 있다. 신뢰된 펌웨어(340)는 REE에서의 하이퍼바이저(330)와 TEE에서의 펌웨어 검증기(320) 간의 신호 송수신을 위해 보안이 검증된 펌웨어에 해당한다. 한편, TEE에서의 펌웨어 검증기(320)는 제2 및 제3 레이어(L2, L3) 상에서 동작할 수 있으며, 신뢰된 펌웨어(340)에 포함되도록 구현될 수 있다.
예시적 실시 예로, 커널(310)은 제1 제어 영역(CSR1)에 포함된 구성들을 제어할 수 있으며, 하이퍼바이저(330)는 제2 제어 영역(CSR2)에 포함된 구성들을 제어할 수 있다. 커널(310)은 제2 제어 영역(CSR2)에 포함된 구성들에 접근이 불가능하며, 이에 따라, 제2 제어 영역(CSR2)에 포함된 구성들을 제어할 수 없다. 제1 제어 영역(CSR1)은 메인 프로세서(352), 제1 MMU(354), 제1 DSP(362), 제1 시스템 MMU(364), 제2 DSP(362), 제2 시스템 MMU(384), IP(372) 및 시스템 MMU(374)를 포함할 수 있다. 제2 제어 영역(CSR2)은 제2 MMU(356), 제1 MPU(366), 제2 MPU(386) 및 MPU(376)을 포함할 수 있다.
커널(310)의 펌웨어 로더(312)는 메모리(390)의 일부 영역에 대상 펌웨어(392)를 복사(또는, 로드)할 수 있다. 이후, 하이퍼바이저(330)는 대상 펌웨어(392)에 대한 검증을 수행하기 전에 대상 펌웨어(392)에 대한 해킹을 방지하기 위하여 제2 제어 영역(CSR2)을 제어함으로써 프로세서(352), 제1 DSP(362), IP(372) 및 제2 DSP(382)의 메모리(390)에 대한 접근을 차단할 수 있다. 예를 들어, 하이퍼바이저(330)는 제2 MMU(356)의 L2P 맵핑 테이블에서 대상 펌웨어(392)에 관한 어드레스 정보를 변경하여 메인 프로세서(352)의 대상 펌웨어(392)에 대한 접근을 차단할 수 있다. 이하에서, 어드레스 정보를 변경하는 것은, 어드레스에 대응하는 소정의 메모리 영역에 대한 접근 속성을 변경하는 것 또는 어드레스 정보를 삭제하는 것을 포함할 수 있다. 또한, 하이퍼바이저(330)는 제1 MPU(366)에서의 페이지 테이블의 대상 펌웨어(392)에 대응하는 주소에 대한 속성 정보를 변경하여 제1 DSP(362)의 대상 펌웨어(392)에 대한 접근을 차단할 수 있다. 이와 같은, 방식은 IP(372) 및 제2 DSP(382)에도 적용될 수 있다.
하이퍼바이저(330)는 신뢰된 펌웨어(340)를 통해 펌웨어 검증기(320)에 대상 펌웨어(392)에 대한 검증을 요청할 수 있으며, 펌웨어 검증기(320)는 요청에 응답하여 제2 DSP(382)가 대상 펌웨어(392)에 대한 검증을 수행할 수 있도록 제어할 수 있다. 제2 DSP(382)는 대상 펌웨어(392)를 검증하기 위해 미리 설정될 수 있으며, 도 1의 보안 시스템(180)에 대응할 수 있다. 하이퍼바이저(330)는 제2 DSP(382)가 대상 펌웨어(392)에 접근할 수 있도록 제2 MPU(386)의 페이지 테이블을 변경할 수 있다.
제2 DSP(382)는 대상 펌웨어(392)에 대한 무결성 검증을 수행할 수 있으며, 무결성 검증이 완료된 때에, 펌웨어 검증기(320)는 무결성 검증 결과를 하이퍼바이저(330)에 신뢰된 펌웨어(340)를 통해 제공할 수 있다.
대상 펌웨어(392)에 대한 무결성 검증 결과가 패스된 때에, 하이퍼바이저(330)는 제1 DSP(362)가 TEE에서 대상 펌웨어(392)에 접근하여 대상 펌웨어(392)를 실행할 수 있도록 제1 MPU(366)의 페이지 테이블을 변경할 수 있다.
이와 같이, 본 개시의 예시적 실시 예에 따른 모바일 장치(300)에서 제1 DSP(362)가 TEE에서 메인 프로세서(352)를 대신하여 대상 펌웨어(392)를 실행하기 위한 환경을 마련하기 위해 하이퍼바이저(330)는 제2 제어 영역(CSR2)의 구성만을 제어하여 비보안 접근을 효율적으로 차단하고, 메모리(390) 내의 데이터 이동을 최소화할 수 있는 효과가 있다.
다만, 도 3에 도시된 구성은 예시적 실시 예에 불과한 바, 이에 국한되지 않으며, 본 개시의 기술적 사상은 메인 프로세서(352) 이외의 적어도 하나의 IP가 TEE에서 대상 펌웨어(392)를 실행하기 위한 환경을 마련하기 위한 때에 모두 적용 가능할 수 있다.
도 4a 및 도 4b는 도 3의 메인 프로세서(352)의 대상 펌웨어(392)로의 접근을 제어하기 위한 하이퍼바이저(330)의 동작을 설명하기 위한 도면이다.
도 3 및 도 4a를 참조하면, 제1 MMU(354)는 L2L 맵핑 테이블(L2L_TB)을 관리할 수 있다. L2L 맵핑 테이블(L2L_TB)은 제1 논리 주소(L_ADDa)와 이에 맵핑되는 제2 논리 주소(L_ADDb)에 대한 정보를 포함할 수 있다. 예를 들어, 메인 프로세서(352)가 소정의 동작 관련 요청과 함께 'L_ADD1a'의 주소를 제1 MMU(354)에 제공하면, 제1 MMU(354)는 L2L 맵핑 테이블(L2L_TB)을 기반으로 'L_ADD1a'를 'L_ADD1b'로 변환하고, 변환된 주소를 제2 MMU(356)에 제공할 수 있다.
제2 MMU(356)는 L2P 맵핑 테이블(L2P_TB)을 관리할 수 있다. L2P 맵핑 테이블(L2P_TB)은 제2 논리 주소(L_ADDb)와 이에 맵핑되는 물리 주소(P_ADD)에 대한 정보를 포함할 수 있다. 물리 주소(P_ADD)는 메모리(390)의 실제 주소에 해당할 수 있다. 예를 들어, 제2 MMU(356)는 수신된 'L_ADD1b'를 L2P 맵핑 테이블(L2P_TB)을 기반으로 'P_ADD1'으로 변환하고, 'P_ADD1'를 이용하여 메모리(390)의 해당 주소에 접근할 수 있다.
이하에서는, 대상 펌웨어(392)가 저장된 메모리(390)의 물리 주소는 'P_ADD1' 및 'P_ADD2'인 것을 가정한다. 메인 프로세서(352)로부터 대상 펌웨어(392)에 대한 비보안 접근을 막기 위해 하이퍼바이저(330)는 대상 펌웨어(392)에 대응하는 물리 주소(P_ADD) 또는 이에 맵핑되는 제2 논리 주소(L_ADDb)를 변경하는 동작을 수행할 수 있다.
도 4b를 더 참조하면, 하이퍼바이저(330)는 대상 펌웨어(392)를 가르키는 물리 주소(P_ADD)인 'P_ADD1' 및 'P_ADD2'를 L2P 맵핑 테이블(L2P_TB)에서 삭제할 수 있다. 일부 실시 예들에 있어서, 하이퍼바이저(330)는 대상 펌웨어(392)를 가르키는 물리 주소(P_ADD)인 'P_ADD1' 및 'P_ADD2'에 각각 맵핑된 'L_ADD1b' 및 'L_ADD2b'를 L2P 맵핑 테이블(L2P_TB)에서 삭제할 수 있다. 또한, 더 나아가, 하이퍼바이저(330)는 대상 펌웨어(392)를 가르키는 물리 주소(P_ADD)인 'P_ADD1' 및 'P_ADD2'와 'P_ADD1' 및 'P_ADD2' 각각에 맵핑된 'L_ADD1b' 및 'L_ADD2b'를 L2P 맵핑 테이블(L2P_TB)에서 삭제할 수 있다.
한편, 하이퍼바이저(330)는 L2P 맵핑 테이블(L2P_TB)에서 메인 프로세서(352)의 비보안 접근을 차단하기 위해 삭제한 주소 정보는 메모리(390)의 임의의 영역에 백업할 수 있으며, 향후 백업된 주소 정보는 L2P 맵핑 테이블(L2P_TB)에 복구하여 메인 프로세서(352)의 접근을 허여할 수 있다.
일부 실시 예들에 있어서, 제2 MMU(356)는 L2P 맵핑 테이블(L2P_TB)의 물리 주소(P_ADD)에 대응하는 메모리(390)의 영역의 리드 권한 또는 라이트 권한을 나타내는 정보를 더 관리할 수 있으며, 하이퍼바이저(330)는 상기 정보를 변경함으로써 메인 프로세서(352)의 메모리(390)로의 접근을 제어할 수 있다.
도 5a 및 도 5b는 도 3의 메인 프로세서(352)의 제1 DSP(362)의 대상 펌웨어(392)로의 접근을 제어하기 위한 하이퍼바이저(330)의 동작을 설명하기 위한 도면이다. 이하, 서술되는 기술적 사상은 IP(372) 및 제2 DSP(382)에도 적용 가능함은 분명하다.
도 3 및 도 5a를 참조하면, 제1 시스템 MMU(364)는 L2P 맵핑 테이블(L2P_TB)을 관리할 수 있다. L2P 맵핑 테이블(L2P_TB)은 논리 주소(L_ADD)와 이에 맵핑되는 물리 주소(P_ADD)에 대한 정보를 포함할 수 있다. 예를 들어, 제1 DSP(362)가 소정의 동작 관련 요청과 함께 'L_ADD1'의 주소를 제1 시스템 MMU(364)에 제공하면, 제1 시스템 MMU(364)는 L2P 맵핑 테이블(L2P_TB)을 기반으로 'L_ADD1'를 'P_ADD1'로 변환하고, 변환된 주소를 제1 MPU(366)에 제공할 수 있다.
제1 MPU(366)는 페이지 테이블(P_TB)을 관리할 수 있다. 페이지 테이블(P_TB)은 메모리(390)의 물리 주소(P_ADD) 및 상기 주소에 대한 속성 정보(Property Information; PI)를 포함할 수 있다. 예시적 실시 예로, 속성 정보(PI)는 리드 권한 플래그(Read Permission Flag; RPF) 및 라이트 권한 플래그(Write Permission Flag; WF)를 포함할 수 있다. 예를 들어, 리드 권한 플래그(RPF)는 해당 물리 주소(P_ADD)에 저장된 데이터를 리드 가능한지 여부를 나타내는 정보이고, 라이트 권한 플래그(WPF)는 해당 물리 주소(P_ADD)에 데이터 라이트가 가능한지 여부를 나타내는 정보일 수 있다.
제1 DSP(362)로부터 대상 펌웨어(392)에 대한 비보안 접근을 막기 위해 하이퍼바이저(330)는 대상 펌웨어(392)가 저장된 메모리(390)의 물리 주소(P_ADD)에 대응하는 속성 정보(PI)를 변경할 수 있다. 예를 들어, 도 4a에서 전술한 바와 같이, 대상 펌웨어(392)가 저장된 메모리(390)의 물리 주소는 'P_ADD1' 및 'P_ADD2'인 바, 하이퍼바이저(330)는 'P_ADD1' 및 'P_ADD2'에 각각 대응하는 'F1a', 'F1b', 'F2a' 및 'F2b' 중 적어도 하나를 변경함으로써 제1 DSP(362)의 대상 펌웨어(392)의 접근을 제어할 수 있다. 이에 대한 구체적인 내용은 도 5c에서 서술한다.
도 5b를 더 참조하면, 페이지 테이블(P_TB)은 도 5a와 비교하여 메모리(390)의 물리 주소(P_ADD)에 대응하는 보안 플래그(Secure Flag; SF)를 더 포함할 수 있다. 보안 플래그(SF)는 해당 물리 주소(P_ADD)에 대한 비보안 접근 또는 보안 접근이 가능한지 여부를 나타내는 정보일 수 있다. 하이퍼바이저(330)는 보안 플래그(SF)를 변경함으로써 제1 DSP(362)로부터의 비보안 접근, 보안 접근을 제어할 수 있다. 예를 들어, 하이퍼바이저(330)는 'P_ADD1' 및 'P_ADD2'에 각각 대응하는 'F1a', 'F1b', 'F1c', 'F2a', 'F2b' 및 'F2c' 중 적어도 하나를 변경함으로써 제1 DSP(362)의 대상 펌웨어(392)의 접근을 제어할 수 있다.
도 6은 도 3의 대상 펌웨어(392)가 메모리(390)에 로드되고, 검증되기까지의 하이퍼바이저(330)의 동작을 설명하기 위한 도면이다.
도 3 및 도 6을 참조하면, 그림(a)에서 메모리(390)의 대상 펌웨어(392)가 저장될 메모리 영역(MA_FW)은 메인 프로세서(352), 제1 DSP(362), IP(372), 제2 DSP(382)에 대하여 리드만을 할 수 있도록 권한 설정되어 있는 상태일 수 있다. 그림(b)에서 하이퍼바이저(330)는 펌웨어 로더(312)가 대상 펌웨어(392)를 메모리 영역(MA_FW)에 로드할 수 있도록 메인 프로세서(352)에 메모리 영역(MA_FW)에 대한 쓰기 권한을 부여할 수 있다. 이후, 그림(c)에서 대상 펌웨어(392)에 대한 검증 동작이 수행되기 전에 하이퍼바이저(330)는 메인 프로세서(352)가 메모리 영역(MA_FW)에 대하여 리드 권한만 가지도록 변경할 수 있다. 그림이 도시되지는 않았으나, 하이퍼바이저(330)는 대상 펌웨어(392)를 검증하는 제2 DSP(362)에 메모리 영역(MA_FW)에 대한 쓰기 권한을 더 부여할 수 있다. 대상 펌웨어(392)에 대한 검증이 완료된 때에, 그림(d)에서 하이퍼바이저(330)는 제1 DSP(362)에 대상 펌웨어(392)의 코드(Code)가 저장된 영역에 대한 처리 권한 및 대상 펌웨어(392)의 데이터가 저장된 영역에 대한 라이트 권한을 더 부여할 수 있다. 이를 통해, 제1 DSP(362)는 대상 펌웨어(392)를 실행할 수 있다.
다만, 도 6에 도시된 내용은 예시적 실시 예에 불과한 바, 이에 국한되지 않고, 하이퍼바이저(330)는 대상 펌웨어(392)에 대한 해킹을 방지하기 위하여 제2 제어 영역(CSR2)을 동적으로 제어함으로써 메인 프로세서(352), 제1 DSP(362), IP(372) 및 제2 DSP(382)의 대상 펌웨어(392)로의 접근을 각각 차단 또는 허여할 수 있는 다양한 실시 예 적용이 가능하다.
도 7은 본 개시의 예시적 실시 예에 따른 시스템 온 칩의 동작 방법을 나타내는 순서도이다.
도 7을 참조하면, 단계 S100에서 시스템 온 칩은 커널의 펌웨어 업로더를 통해 대상 펌웨어를 메모리에 복사(또는, 로드)할 수 있다. 대상 펌웨어는 해킹으로부터 보호되어야 하는 보안 관련 동작에 기반이 되는 것으로 메인 프로세서 또는 메인 프로세서 이외의 다른 DSP(또는, IP)에서 실행될 수 있다. 단계 S110에서 시스템 온 칩은 하이퍼바이저를 통해 펌웨어 검증기에 대상 펌웨어에 대한 검증을 요청할 수 있다. 단계 S120에서 시스템 온 칩은 대상 펌웨어에 대한 검증을 시작하기 전에 하이퍼바이저를 통하여 대상 펌웨어에 대한 해킹을 방지하기 위해 검증을 수행하는 주체인 보안 DSP(또는, 보안 IP) 이외의 구성들(예를 들면, 메인 프로세서, 다른 DSP 등)의 대상 펌웨어에 대한 접근 권한을 제한할 수 있다. 단계 S130에서 시스템 온 칩은 펌웨어 검증기를 통해 보안 DSP를 이용하여 대상 펌웨어를 검증할 수 있다. 한편, 시스템 온 칩은 보안 DSP를 대신하여 TEE에서의 메인 프로세서를 이용하여 대상 펌웨어를 검증할 수 있으며, 더 나아가, 메인 프로세서가 TEE 관련 코드를 실행중일 때에는 하이퍼바이저를 이용하여 대상 펌웨어를 검증할 수 있다. 단계 S140에서 검증 결과를 기반으로 시스템 온 칩은 하이퍼바이저를 통해 대상 펌웨어를 실행하는 주체의 대상 펌웨어에 대한 접근 권한을 부여할 수 있다. 예를 들어, 대상 펌웨어를 실행하는 주체가 DSP인 때에, 시스템 온 칩은 하이퍼바이저를 통해 DSP가 대상 펌웨어를 실행할 수 있도록 DSP에 대한 접근 권한을 부여할 수 있다. 단계 S150에서 시스템 온 칩은 DSP를 통해 대상 펌웨어를 실행할 수 있다.
도 8은 본 개시의 예시적 실시 예에 따른 시스템 온 칩의 동작 방법을 나타내는 순서도이다.
도 8을 참조하면, 단계 S200에서 새로운 대상 펌웨어에 대한 실행이 요구되는 때, 시스템 온 칩은 커널의 펌웨어 업로더를 통해 새로운 대상 펌웨어를 메모리에 복사(또는, 로드)할 수 있다. 새로운 대상 펌웨어는 도 7에서 서술된 대상 펌웨어와는 상이한 메모리의 영역에 복사될 수 있다. 새로운 대상 펌웨어는 해킹으로부터 보호되어야 하는 보안 관련 동작에 기반이 되는 것으로 메인 프로세서 또는 메인 프로세서 이외의 다른 DSP(또는, IP)에서 실행될 수 있다. 단계 S210에서 시스템 온 칩은 하이퍼바이저를 통해 펌웨어 검증기에 새로운 대상 펌웨어에 대한 검증을 요청할 수 있다. 단계 S220에서 시스템 온 칩은 하이퍼바이저를 통해 새로운 대상 펌웨어에 대한 검증을 요청할 수 있다. 단계 S230에서 시스템 온 칩은 새로운 대상 펌웨어에 대한 검증을 시작하기 전에 하이퍼바이저를 통하여 새로운 대상 펌웨어에 대한 해킹을 방지하기 위해 검증을 수행하는 주체인 보안 DSP(또는, 보안 IP) 이외의 구성들(예를 들면, 메인 프로세서, 다른 DSP 등)의 대상 펌웨어에 대한 접근 권한을 제한할 수 있다. 단계 S230에서 시스템 온 칩은 펌웨어 검증기를 통해 보안 DSP를 이용하여 새로운 대상 펌웨어를 검증할 수 있다. 단계 S240에서 검증 결과를 기반으로 시스템 온 칩은 하이퍼바이저를 통해 새로운 대상 펌웨어를 실행하는 주체의 대상 펌웨어에 대한 접근 권한을 부여할 수 있다. 한편, 도 7의 대상 펌웨어를 실행하는 주체와 새로운 대상 펌웨어를 실행하는 주체는 상호 동일하거나, 상이할 수 있다. 단계 S250에서 시스템 온 칩은 DSP를 통해 새로운 대상 펌웨어를 실행하고, 펌웨어 업로더가 이전 대상 펌웨어에 대하여 필요할때마다 접근할 수 있도록 하이퍼바이저를 통해 메인 프로세서의 이전 대상 펌웨어로의 접근을 관리할 수 있다.
도 9는 본 개시의 예시적 실시 예에 따른 시스템 온 칩의 동작 방법을 나타내는 순서도이다.
도 9를 참조하면, 단계 S300에서 시스템 온 칩의 DSP는 대상 펌웨어에 대한 동작이 완료되어 더 이상 대상 펌웨어를 실행하지 않을 때에, 하이퍼바이저에 대상 펌웨어에 대한 릴리즈를 요청할 수 있다. 단계 S310에서 시스템 온 칩은 하이퍼바이저를 통해 메인 프로세서에 대상 펌웨어에 대한 접근 권한을 허여할 수 있다. 단계 S320에서 시스템 온 칩은 DSP의 대상 펌웨어에 대한 접근 권한을 차단하기 위해 DSP에 대응하는 MPU의 페이지 테이블을 하이퍼바이저를 통해 변경할 수 있다. 단계 S330에서 시스템 온 칩은 DSP로부터 대상 펌웨어를 릴리즈할 수 있다.
도 10은 본 개시의 예시적 실시 예에 따른 시스템 온 칩의 동작 방법을 설명하기 위한 순서도이다. 이하, 시스템 온 칩은 메인 프로세서, 복수의 IP들 및 보안 시스템을 포함하며, 커널 및 하이퍼바이저는 메인 프로세서에 의해 구동될 수 있다.
도 10을 참조하면, 단계 S400에서 커널은 펌웨어 로딩을 위한 관리를 하이퍼바이저에 요청할 수 있다. 단계 S402에서 하이퍼바이저는 커널이 소정의 저장 장치에 저장된 펌웨어를 메모리에 로딩할 수 있도록 메모리의 펌웨어 메모리 영역에 대한 접근 권한을 변경할 수 있다. 구체적으로, 하이퍼바이저는 커널이 펌웨어 메모리 영역에 접근하여 펌웨어 메모리 영역에 펌웨어를 복사할 수 있도록 도 3의 제2 MMU(356)의 L2P 맵핑 테이블 또는 소정의 정보를 변경할 수 있다. 단계 S404에서 하이퍼바이저는 펌웨어 메모리 영역에 대한 접근 권한 변경이 완료되었음을 커널에 알릴 수 있다. 단계 S406에서 커널은 메모리에 펌웨어를 로드할 수 있다. 단계 S408에서 커널은 로드된 펌웨어에 대한 검증을 하이퍼바이저에 요청할 수 있다. 단계 S410에서 하이퍼바이저는 펌웨어 검증을 시작하기 전에 펌웨어 메모리 영역에 대한 접근 권한을 변경할 수 있다. 구체적으로, 하이퍼바이저는 펌웨어 검증을 수행하는 보안 시스템에 대하여 펌웨어 메모리 영역에 대한 접근 권한을 허여할 수 있으며, 그 이외의 메인 프로세서, 복수의 IP들에 대하여 펌웨어 메모리 영역에 대한 접근 권한을 차단할 수 있다. 단계 S412에서 하이퍼바이저는 보안 시스템에 로드된 펌웨어 검증을 요청할 수 있다. 단계 S414에서 보안 시스템은 하이퍼바이저의 요청에 응답하여 로드된 펌웨어에 대한 검증을 수행할 수 있다. 예를 들어, 보안 시스템은 다양한 방식들 및 알고리즘을 기반으로 로드된 펌웨어에 대한 서명 검증 동작을 수행할 수 있다. 단계 S416에서 보안 시스템은 하이퍼바이저에 펌웨어에 대한 검증 결과를 제공할 수 있다. 단계 S418에서 하이퍼바이저는 검증 결과를 기반으로 펌웨어 메모리 영역에 대한 접근 권한을 변경할 수 있다. 구체적으로, 하이퍼바이저는 복수의 IP들 또는 메인 프로세서 중 펌웨어를 실행할 것으로 선택된 것에 대하여 펌웨어 메모리 영역에 대한 접근 권한을 허여할 수 있다. 예를 들어, 메인 프로세서가 펌웨어를 실행할 것으로 선택된 때에는, 복수의 IP들 및 보안 시스템에 대하여 펌웨어 메모리 영역에 대한 접근 권한을 차단할 수 있다. 단계 S420에서 하이퍼바이저는 커널에 펌웨어 메모리 영역에 대한 접근 권한 변경이 완료되었음을 알릴 수 있다. 단계 S422에서 커널은 펌웨어 메모리 영역에 접근하여 펌웨어를 실행할 수 있다.
도 11은 본 개시의 예시적 실시 예에 따른 도 1의 메모리(130) 또는 저장 장치(170)에 저장된 소프트웨어 아키텍쳐 구조를 나타내는 블록도이다.
도 11을 참조하면, 메모리(130, 도 1) 또는 저장 장치(170, 도 1)는 운영 체제(1010), 커널(1020), 미들웨어(1030) 및 어플리케이션(1040) 등을 포함할 수 있다.
운영 체제(1010)는 하드웨어의 전반적인 동작을 제어하고, 관리하는 기능을 수행한다. 운영 체제(1010)는 하드웨어 관리와 메모리, 보안 등의 기본적인 기능을 담당하는 계층이다.
커널(1020)은 입력 장치 등을 통해 입력된 터치 신호등을 비롯한 각종 신호들을 미들웨어(1030)로 전달하는 통로 역할을 할 수 있다.
미들웨어(1030)는 모바일 장치 또는 전자 장치의 동작을 제어하는 각종 소프트웨어 모듈을 포함할 수 있다. 미들 웨어(1030)는 보안 모듈(1031), 메인 프레임 워크(1033), 서브 프레임 워크(1034), 윈도우 매니저(1035), 시스템 매니저(1036), 멀티미디어 프레임워크(1037), APP 매니저(1038) 및 연결 매니저(1039)를 포함할 수 있다.
보안 모듈(1031)은 하드웨어에 대한 인증(Certification), 보안 저장(Secure Storage) 등을 지원하는 모듈로서 본 개시의 예시적 실시 예들에 따른 펌웨어 로딩 모듈(1032)을 포함할 수 있다. 펌웨어 로딩 모듈(1032)은 도 1의 보안 메모리 관리 소프트웨어(130)와 대응될 수 있다. 펌웨어 로딩 모듈(1032)을 기반으로 본 개시의 예시적 실시 예들에 따른 하이퍼바이저가 동작할 수 있다. 즉, 커널(1020)의 펌웨어 로더를 통해 펌웨어를 소정의 메모리에 로드하고, 펌웨어에 대한 검증 수행, 펌웨어에 대한 실행의 일련의 동작에서 하이퍼바이저는 각 동작의 실행 주체가 되는 IP의 펌웨어에 대한 접근 권한을 빠르고, 쉽게 변경할 수 있다. 예를 들어, 메인 프로세서의 펌웨어로의 접근 권한을 제어할 때에는 메인 프로세서에 연결된 MMU의 정보를 변경하고, 소정의 IP의 펌웨어로의 접근 권한을 제어할 때에는 IP에 연결된 MPU의 정보를 변경할 수 있다.
메인 프레임 워크(1033)는 디스플레이의 메인 영역에 표시할 각종 유저 인터페이스를 제공하기 위한 모듈이다. 서브 프레임 워크(1034)는 서브 영역에 표시할 각종 유저 인터페이스를 제공하기 위한 모듈이다.
윈도우 매니저(1035)는 사용자의 신체나 펜을 이용한 터치 이벤트나 기타 입력 이벤트를 감지할 수 있다. 윈도우 매니저(1035)는 이러한 이벤트가 감지되면 메인 프레임 워크(1033) 또는 서브 프레임 워크(1034)로 이벤트 신호를 전달하여, 이벤트에 대응되는 동작을 수행하도록 한다.
시스템 매니저(1036)는 모바일 장치 또는 전자 장치 내의 각 구성 요소들의 상태를 모니터링하고, 그 모니터링 결과를 타 모듈들에게 제공할 수 있다. 가령, 배터리 잔량이 부족하거나, 에러가 발생하는 경우, 통신 연결 상태가 끊어지는 경우 등이 발생하면 시스템 매니저(1036)는 그 모니터링 결과를 메인 프레임 워크(1033)나 서브 프레임 워크(1034)에 제공하여 알림 메시지나 알림 음을 출력할 수 있다.
멀티미디어 프레임워크(1037)는 모바일 장치 또는 전자 장치에 저장되어 있거나, 외부 소스로부터 제공되는 멀티미디어 컨텐츠를 재생하기 위한 모듈이다. APP 매니저(1038)는 메모리에 설치된 각종 어플리케이션(1040)의 실행 상태를 관리하는 모듈이다. 연결 매니저(1039)는 유선 또는 무선 네트워크 연결을 지원하기 위한 모듈이다.
다만, 도 11에 도시된 구조는 일 예에 불과하므로, 반드시 이에 한정되는 것은 아니다. 따라서, 모바일 장치 또는 전자 장치의 종류 또는 목적에 따라 일부가 생략 또는 변형되거나, 추가될 수도 있음은 분명하다.
도 12는 본 개시의 예시적 실시 예에 따른 시스템 온 칩(1150)를 포함한 전자 장치(1100)를 나타내는 블록도이다. 이하에서, 전자 장치(1100)는 이동 전화기, 스마트폰, 태블릿 PC 등의 무선 통신 장치로 구현될 수 있다.
도 12를 참조하면, 전자 장치(1100)는 무선 송수신기(1120), 입력 장치(1130), 디스플레이 장치(1140), 시스템 온 칩(1150) 및 메모리 장치(1160)를 포함할 수 있다.
무선 송수신기(1120)는 안테나(1122)를 통하여 무선 신호를 송수신할 수 있으며, 무선 신호를 시스템 온 칩(1150)에서 처리될 수 있는 신호로 변경할 수 있다.
시스템 온 칩(1150)은 무선 송수신기(1120)로부터 출력된 신호를 처리하고, 처리된 신호를 메모리 장치(1160) 또는 디스플레이 장치(1140)에 전송할 수 있다. 또한, 시스템 온 칩(1150)은 펌웨어 로딩 모듈(1152)을 기반으로 동작하여 본 개시의 예시적 실시 예들에 따른 하이퍼바이저를 통해 효율적이고, 안전한 메모리 장치(1160)로의 펌웨어 로딩, 펌웨어 검증 및 펌웨어 실행을 수행할 수 있다.
입력 장치(1130)는 시스템 온 칩(1150)의 동작을 제어하기 위한 제어 신호 또는 시스템 온 칩(1150)에 의하여 처리될 데이터를 입력할 수 있는 장치로서, 터치 패드와 컴퓨터 마우스와 같은 포인팅 장치, 키패드, 또는 키보드로 구현될 수 있다.
시스템 온 칩(1150)은 메모리 장치(1160)로부터 출력된 데이터가 디스플레이 장치(1140)를 통하여 디스플레이될 수 있도록 디스플레이 장치(1140)의 동작을 제어할 수 있다.
도 13은 본 개시의 예시적 실시 예에 따른 시스템 온 칩(1220)를 포함한 전자 장치(1200)를 나타내는 블록도이다. 이하에서, 전자 장치(1200)는 이미지 처리 장치, 예컨대, 디지털 카메라, 디지털 카메라가 부착된 이동 전화기, 디지털 카메라가 부착된 스마트폰, 또는 디지털 카메라가 부착된 태블릿 PC로 구현될 수 있다.
도 13을 참조하면, 전자 장치(1200)는 이미지 센서(1210), 시스템 온 칩(1220), 메모리 장치(1230) 및 디스플레이 장치(1240)를 포함할 수 있다.
이미지 센서(1210)는 광학 이미지를 디지털 이미지로 변환하고, 변환된 디지털 이미지는 시스템 온 칩(1220) 또는 메모리 장치(1230)로 전송될 수 있다. 시스템 온 칩(1220)의 제어에 따라 변환된 디지털 이미지는 디스플레이 장치(1240)를 통하여 디스플레이되거나 메모리 장치(1230)에 저장될 수 있다. 메모리 장치(1230)에 저장된 데이터는 시스템 온 칩(1220)의 제어에 따라 디스플레이 장치(1240)를 통해 디스플레이될 수 있다.
시스템 온 칩(1220)은 펌웨어 로딩 모듈(1222)을 기반으로 동작하여 본 개시의 예시적 실시 예들에 따른 하이퍼바이저를 통해 효율적이고, 안전한 메모리 장치(1230)로의 펌웨어 로딩, 펌웨어 검증 및 펌웨어 실행을 수행할 수 있다.
도 14는 본 개시의 예시적 실시 예에 따른 복수의 IoT 장치가 서버에 연결되어 구현된 스마트 홈(2000)을 나타내는 도면이다.
도 14를 참조하면, 스마트 홈(2000)은 복수의 IoT 장치들(2010), 허브(2020), 서버(2030) 및 전자 장치(2040)를 포함할 수 있다.
복수의 IoT 장치들(2010)은 TV(2011), 냉장고(2012), 태블릿(2013), 노트북(2014), 및/또는 에어컨(2015)fmf 포함할 수 있다. 다만, 이는 예시적 실시 예로서, 복수의 IoT 장치들(2010)은 도 14에 도시된 바에 한정되지 않는다.
복수의 IoT 장치들(2010)은 허브(2020)를 통해 서버(2030)와 연결될 수 있다. 복수의 IoT 장치들(2010) 각각에 대한 복수의 장치 식별 정보는 전자 장치(2040)에 의해 서버(2030)로 전송될 수 있다. 복수의 IoT 장치들(2010) 각각은 서버(2030)에 등록된 허브 식별 정보에 대응하는 허브(2020)와 페어링되어 연결될 수 있다. 복수의 IoT 장치들(2010)은 상기 허브(2020)와의 연결을 통해 서버(2030)와 통신할 수 있다.
허브(2020)는 복수의 IoT 장치들(2010) 및 서버(2030) 사이의 연결을 중계할 수 있다. 다양한 실시 예에 따르면, 허브(2020)는 라우터(router), 브릿지(bridge), 또는 액세스 포인트(access point, AP)의 기능을 수행할 수 있다. 서버(2030)는 프로세서 및 무선 통신 회로를 포함할 수 있다. 프로세서는 서버(2030)의 전반적인 동작을 제어할 수 있다. 서버(2030)는 상기 무선 통신 회로를 이용하여 허브(2020)와 통신하거나 허브(2020)를 통해 복수의 IoT 장치들(2010)과 통신할 수 있다.
전자 장치(2040)는 프로세서 및 무선 통신 회로를 포함할 수 있다. 상기 프로세서는 전자 장치(2040)의 전반적인 동작을 제어할 수 있다. 전자 장치(2040)는 상기 무선 통신 회로를 이용하여 서버(2030)와 통신할 수 있다. 다양한 실시 예에 따르면, 전자 장치(2040)는 디스플레이, 카메라, 또는 입/출력 모듈을 더 포함할 수도 있다.
전자 장치(2040)는 복수의 IoT 장치들(2010)과의 통신을 시작할 때에, 소정의 보안 또는 인증과 관련된 펌웨어를 실행할 수 있으며, 이 때, 전자 장치(2040)는 본 개시의 예시적 실시 예에 따른 펌웨어 로딩 모듈을 기반으로 동작할 수 있다.

Claims (20)

  1. 메인 프로세서 및 복수의 제1 IP(Intellectual Property)들을 구비하는 시스템 온 칩의 동작 방법에 있어서,
    상기 메인 프로세서가 펌웨어 로더(loader)를 통해 메모리에 제1 대상 펌웨어를 복사하는 단계;
    상기 메인 프로세서가 하이퍼바이저(hypervisor)를 통해 상기 메인 프로세서 및 상기 복수의 제1 IP들에 대한 상기 제1 대상 펌웨어로의 접근을 차단하는 단계;
    상기 메인 프로세서가 펌웨어 검증기(verifier)를 통해 상기 제1 대상 펌웨어를 검증하는 단계; 및
    상기 메인 프로세서가 상기 하이퍼바이저를 통해 상기 검증 결과를 기반으로 상기 복수의 제1 IP들 중 대상 IP에 대한 상기 제1 대상 펌웨어로의 접근을 허여하는 단계를 포함하는 시스템 온 칩의 동작 방법.
  2. 제1항에 있어서,
    상기 펌웨어 로더, 상기 하이퍼바이저는 REE(Rich Execution Environment) 에서 동작하고, 상기 펌웨어 검증기는 TEE(Trusted Execution Environment)에서 동작하는 것을 특징으로 하는 시스템 온 칩의 동작 방법.
  3. 제1항에 있어서,
    상기 제1 IP들은,
    DSP(Digital Signal Processor), NPU(Neural Processing Unit), TPU(Tensor Processing Unit) 및 ISP(Image Signal Processor) 중 적어도 하나를 포함하는 것을 특징으로 하는 시스템 온 칩의 동작 방법.
  4. 제1항에 있어서,
    상기 펌웨어 검증 전 상기 제1 대상 펌웨어로의 접근을 차단하는 단계는,
    상기 메인 프로세서가 상기 하이퍼바이저를 통해 상기 메인 프로세서와 연결된 MMU(Memory Management Unit) 및 상기 복수의 제1 IP들 각각에 연결된 MPU(Memory Protection Unit)들의 상기 메모리에 관한 정보를 변경하는 단계를 더 포함하는 것을 특징으로 하는 시스템 온 칩의 동작 방법.
  5. 제4항에 있어서,
    상기 메모리에 관한 정보를 변경하는 단계는,
    상기 메인 프로세서로부터 상기 제1 대상 펌웨어로의 접근을 차단하기 위하여 상기 메인 프로세서가 상기 하이퍼바이저를 통해 상기 MMU의 L2P(Logical To Physical) 맵핑 테이블을 변경하는 것을 특징으로 하는 시스템 온 칩의 동작 방법.
  6. 제4항에 있어서,
    상기 메모리에 관한 정보를 변경하는 단계는,
    상기 복수의 IP들로부터 상기 제1 대상 펌웨어로의 접근을 차단하기 위하여 상기 메인 프로세서가 상기 하이퍼바이저를 통해 상기 MPU들의 페이지 테이블을 변경하는 것을 특징으로 하는 시스템 온 칩의 동작 방법.
  7. 제6항에 있어서,
    상기 페이지 테이블은,
    상기 제1 대상 펌웨어가 복사된 상기 메모리의 주소 정보 및 상기 주소 정보에 대응하는 속성 정보를 포함하는 것을 특징으로 하는 시스템 온 칩의 동작 방법.
  8. 제1항에 있어서,
    상기 시스템 온 칩은 보안을 위한 제2 IP를 더 구비하고,
    상기 제1 대상 펌웨어를 검증하는 단계는,
    상기 메인 프로세서는 상기 펌웨어 검증기를 통해 상기 제2 IP가 상기 제1 대상 펌웨어에 대한 서명 검증 동작을 수행하도록 제어하는 단계를 더 포함하는 것을 특징으로 하는 시스템 온 칩의 동작 방법.
  9. 제1항에 있어서,
    상기 대상 IP에 대한 상기 제1 대상 펌웨어로의 접근을 허여하는 단계는,
    상기 검증 결과가 패스인 때에, 상기 메인 프로세서가 상기 하이퍼바이저를 통해 상기 대상 IP에 연결된 MPU의 상기 메모리에 관한 정보를 변경하는 단계를 더 포함하는 것을 특징으로 하는 시스템 온 칩의 동작 방법.
  10. 제1항에 있어서,
    상기 대상 IP의 상기 제1 대상 펌웨어에 대한 실행이 완료된 때에,
    상기 메인 프로세서가 상기 펌웨어 로더를 통해 상기 제1 대상 펌웨어에 접근 가능하도록 상기 하이퍼바이저를 통해 상기 메인 프로세서에 대한 상기 제1 대상 펌웨어로의 접근을 허여하는 단계; 및
    상기 메인 프로세서가 상기 하이퍼바이저를 통해 상기 대상 IP에 대한 상기 제1 대상 펌웨어로의 접근을 차단하는 단계를 더 포함하는 것을 특징으로 하는 시스템 온 칩의 동작 방법.
  11. 제1항에 있어서,
    상기 대상 IP에 의해 새로운 제2 대상 펌웨어에 대한 실행이 요구되는 때에,
    상기 메인 프로세서가 펌웨어 로더를 통해 상기 메모리에 상기 제2 대상 펌웨어를 복사하는 단계;
    상기 메인 프로세서가 상기 하이퍼바이저를 통해 상기 메인 프로세서 및 상기 복수의 제1 IP들에 대한 상기 제2 대상 펌웨어로의 접근을 차단하는 단계;
    상기 메인 프로세서가 상기 펌웨어 검증기(verifier)를 통해 상기 제2 대상 펌웨어를 검증하는 단계;
    상기 메인 프로세서가 상기 하이퍼바이저를 통해 상기 검증 결과를 기반으로 상기 대상 IP에 대한 상기 제2 대상 펌웨어로의 접근을 허여하는 단계; 및
    상기 메인 프로세서가 상기 펌웨어 로더를 통해 상기 제1 대상 펌웨어에 접근 가능하도록 상기 하이퍼바이저를 통해 상기 메인 프로세서에 대한 상기 제1 대상 펌웨어로의 접근을 허여하는 단계를 더 포함하는 것을 특징으로 하는 시스템 온 칩의 동작 방법.
  12. 메모리;
    운영 체제를 구동하는 메인 프로세서; 및
    각각 목적에 부합하는 프로세싱 동작을 수행하는 복수의 제1 IP들을 포함하며,
    상기 메인 프로세서는, 펌웨어 로더를 통해 상기 메모리에 대상 펌웨어를 복사하고, 상기 대상 펌웨어에 대한 검증 전에 하이퍼바이저를 통해 상기 메인 프로세서 및 상기 복수의 제1 IP들에 대한 상기 대상 펌웨어로의 접근을 차단하고, 상기 대상 펌웨어에 대한 검증 후에 상기 하이퍼바이저를 통해 상기 복수의 제1 IP들 중 상기 대상 펌웨어를 실행하도록 선택된 대상 IP에 대한 상기 대상 펌웨어로의 접근을 허여하도록 구성된 것을 특징으로 하는 전자 장치.
  13. 제12항에 있어서,
    상기 메인 프로세서는, 상기 메모리에 단계적으로 접근하도록 L2L 맵핑 테이블을 관리하는 제1 MMU와 L2P 맵핑 테이블을 관리하는 제2 MMU에 연결되고,
    상기 복수의 제1 IP들은, 각각 상기 메모리에 단계적으로 접근하도록 L2P 맵핑 테이블을 관리하는 시스템 MMU들과 페이지 테이블을 관리하는 MPU들에 연결된 것을 특징으로 하는 전자 장치.
  14. 제13항에 있어서,
    상기 메인 프로세서는, 상기 하이퍼바이저를 통해 상기 제2 MMU 및 상기 MPU들의 상기 메모리에 관한 정보를 변경함으로써 상기 대상 펌웨어로의 접근 권한을 조정하는 것을 특징으로 하는 전자 장치.
  15. 제14항에 있어서,
    상기 메모리에 관한 정보는, 상기 대상 펌웨어가 복사된 상기 메모리의 물리 주소 정보와 이에 맵핑된 논리 주소 정보가 포함된 상기 MMU의 상기 L2P 맵핑 테이블 및 상기 물리 주소 정보와 이에 대응하는 속성 정보이 포함된 상기 MPU들의 상기 페이지 테이블을 포함하는 것을 특징으로 하는 전자 장치.
  16. 제13항에 있어서,
    상기 메인 프로세서는, 커널(kernel)을 통해 상기 제1 MMU 및 상기 시스템 MMU들을 제어 가능한 것을 특징으로 하는 전자 장치.
  17. 제12항에 있어서,
    상기 제1 IP들은,
    DSP, NPU, TPU 및 ISP 중 적어도 하나를 포함하는 것을 특징으로 하는 전자 장치.
  18. 제12항에 있어서,
    상기 전자 장치는,
    상기 대상 펌웨어에 대한 검증을 수행하는 제2 IP를 더 포함하고,
    상기 메인 프로세서는, 펌웨어 검증기를 통해 상기 제2 IP가 상기 대상 펌웨어에 대한 서명 검증 동작을 수행하도록 제어하는 것을 특징으로 하는 전자 장치.
  19. 제18항에 있어서,
    상기 전자 장치는,
    상기 메인 프로세서에 의해 실행 가능한 코드 형태의 상기 대상 펌웨어, 상기 펌웨어 로더, 상기 하이퍼바이저 및 상기 펌웨어 검증기가 저장된 저장 장치를 더 포함하는 것을 특징으로 하는 전자 장치.
  20. 메인 프로세서, 복수의 IP들 및 보안 시스템을 구비하는 시스템 온 칩의 동작 방법에 있어서,
    상기 메인 프로세서에 의해 실행되는 커널은 상기 메인 프로세서에 의해 실행되는 하이퍼바이저에 대상 펌웨어의 로딩을 위한 관리를 요청하는 단계;
    상기 하이퍼바이저는 상기 대상 펌웨어가 로딩될 메모리 영역에 대하여 상기 메인 프로세서 및 상기 복수의 IP들 중 적어도 하나에 대한 접근 권한을 제1 변경하는 단계;
    상기 커널은 상기 대상 펌웨어를 상기 메모리에 로드하는 단계;
    상기 커널은 상기 하이퍼바이저에 로딩된 상기 대상 펌웨어에 대한 검증을 요청하는 단계;
    상기 하이퍼바이저는 상기 메모리 영역에 대하여 상기 메인 프로세서 및 상기 복수의 IP들 중 적어도 하나에 대한 접근 권한을 제2 변경하는 단계;
    상기 하이퍼바이저는 상기 서브 보안 시스템에 로딩된 상기 대상 펌웨어에 대한 검증을 요청하는 단계;
    상기 서브 보안 시스템은 로딩된 상기 대상 펌웨어에 대한 검증을 수행하는 단계;
    상기 서브 보안 시스템은 상기 하이퍼바이저에 상기 검증 결과를 제공하는 단계;
    상기 하이퍼바이저는 상기 검증 결과를 기반으로 상기 메모리 영역에 대하여 상기 메인 프로세서 및 상기 복수의 IP들 중 적어도 하나에 대한 접근 권한을 제3 변경하는 단계; 및
    상기 커널은 로딩된 상기 대상 펌웨어를 실행하는 단계을 포함하는 시스템 온 칩의 동작 방법.
KR1020200028586A 2020-03-06 2020-03-06 시스템 온 칩 및 이의 동작 방법 KR20210112923A (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1020200028586A KR20210112923A (ko) 2020-03-06 2020-03-06 시스템 온 칩 및 이의 동작 방법
US17/077,817 US11847225B2 (en) 2020-03-06 2020-10-22 Blocking access to firmware by units of system on chip
DE102020127800.4A DE102020127800A1 (de) 2020-03-06 2020-10-22 Ein-chip-system und verfahren zu dessen betrieb
CN202110047120.7A CN113434453A (zh) 2020-03-06 2021-01-14 片上系统及其操作方法
TW110107684A TW202203012A (zh) 2020-03-06 2021-03-04 系統晶片以及操作系統晶片的方法
US18/489,686 US20240045969A1 (en) 2020-03-06 2023-10-18 System on chip and operation method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200028586A KR20210112923A (ko) 2020-03-06 2020-03-06 시스템 온 칩 및 이의 동작 방법

Publications (1)

Publication Number Publication Date
KR20210112923A true KR20210112923A (ko) 2021-09-15

Family

ID=77388751

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200028586A KR20210112923A (ko) 2020-03-06 2020-03-06 시스템 온 칩 및 이의 동작 방법

Country Status (5)

Country Link
US (2) US11847225B2 (ko)
KR (1) KR20210112923A (ko)
CN (1) CN113434453A (ko)
DE (1) DE102020127800A1 (ko)
TW (1) TW202203012A (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102126931B1 (ko) * 2018-11-07 2020-06-25 시큐리티플랫폼 주식회사 시큐어 부팅 장치 및 방법
US20230035610A1 (en) * 2021-07-29 2023-02-02 Saratoga Milkyway Inc. Hybrid system fabric for enabling host operating system and real-time operating system within chiplet system-on-chip
CN114218153B (zh) * 2021-12-06 2023-11-14 海飞科(南京)信息技术有限公司 用于存储管理的方法、介质、程序产品、系统和装置
CN114647453B (zh) * 2022-03-01 2023-06-09 芯原微电子(成都)有限公司 多处理器的可信动态启动方法、系统、存储介质及终端
CN114880251B (zh) * 2022-07-12 2023-08-29 荣耀终端有限公司 存储单元的访问方法、访问装置和终端设备
CN117521054A (zh) * 2022-07-30 2024-02-06 华为技术有限公司 电子装置和安全访问软件的方法
TWI830443B (zh) * 2022-10-18 2024-01-21 新唐科技股份有限公司 針對攻擊進行處置的安全處理裝置、方法與電子設備
CN117453318B (zh) * 2023-12-25 2024-03-15 上海励驰半导体有限公司 基于iommu的dsp固件使用方法、系统芯片及车机

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7103529B2 (en) 2001-09-27 2006-09-05 Intel Corporation Method for providing system integrity and legacy environment emulation
US20060294355A1 (en) 2005-06-24 2006-12-28 Zimmer Vincent J Secure variable/image storage and access
US8554686B2 (en) 2005-06-30 2013-10-08 Advanced Micro Devices, Inc. Anti-hack protection to restrict installation of operating systems and other software
US8201161B2 (en) * 2008-01-07 2012-06-12 Lenovo (Singapore) Pte. Ltd. System and method to update device driver or firmware using a hypervisor environment without system shutdown
CN102598017B (zh) 2009-11-13 2016-03-09 爱迪德技术有限公司 提高Java字节码的防窜改能力的系统和方法
KR20120014673A (ko) 2010-08-10 2012-02-20 주식회사 잉카인터넷 위장 동적연결라이브러리 삽입에 의한 프로세스 변조 검출방법
KR101064164B1 (ko) 2011-03-02 2011-09-15 (주)아이넷캅 리눅스 커널 기반 스마트 플랫폼 내에서의 커널 무결성 검사 및 변조된 커널 데이터 복구 방법
JP5655677B2 (ja) 2011-04-04 2015-01-21 富士通株式会社 ハイパーバイザ置き換え方法および情報処理装置
US8775784B2 (en) * 2011-11-11 2014-07-08 International Business Machines Corporation Secure boot up of a computer based on a hardware based root of trust
US9141802B2 (en) 2012-09-25 2015-09-22 Intel Corporation Computing device boot software authentication
US10063380B2 (en) 2013-01-22 2018-08-28 Amazon Technologies, Inc. Secure interface for invoking privileged operations
US20140250290A1 (en) 2013-03-01 2014-09-04 St-Ericsson Sa Method for Software Anti-Rollback Recovery
JP2016534479A (ja) 2013-09-12 2016-11-04 ヴァーセック・システムズ・インコーポレーテッドVirsec Systems,Inc. マルウェアのランタイム中の自動検出
JP6895666B2 (ja) 2015-04-07 2021-06-30 ランセーフ セキュリティー,インク. バイナリ及びメモリ多様性による難読化システム及び方法関連出願の相互参照
KR20170089352A (ko) 2016-01-26 2017-08-03 한국전자통신연구원 가상화 시스템에서 수행하는 무결성 검증 방법
US10057069B2 (en) 2016-02-29 2018-08-21 Red Hat Israel, Ltd. Securing code loading by a guest in a virtual environment
US20170255775A1 (en) 2016-03-02 2017-09-07 Apple Inc Software verification systems with multiple verification paths
EP3220262B1 (en) 2016-03-15 2018-06-13 Axis AB Device which is operable during firmware upgrade
US10110624B2 (en) 2016-04-19 2018-10-23 Red Hat Israel, Ltd. Discovering and provisioning computing devices in a security enhanced environment
US10097563B2 (en) * 2016-05-04 2018-10-09 Gbs Laboratories, Llc Reliable and secure firmware update with a dynamic validation for internet of things (IoT) devices
US10482257B2 (en) 2017-03-16 2019-11-19 Dell Products, L.P. System and method to enforce the secure boot policy of a platform on a virtual machine
US10747883B2 (en) * 2017-05-11 2020-08-18 Qualcomm Incorporated Collated multi-image check in system-on-chips
US10409585B2 (en) * 2018-02-14 2019-09-10 Micron Technology, Inc. Over-the-air (OTA) update for firmware of a vehicle component
US10802875B2 (en) * 2018-04-30 2020-10-13 Qualcomm Incorporated Multithread framework for use in pre-boot environment of a system-on-chip
KR102250419B1 (ko) 2018-09-07 2021-05-12 두산중공업 주식회사 고농도 유기물, 질소 및 인을 제거하는 수처리 장치 및 이를 이용하는 수처리 방법

Also Published As

Publication number Publication date
TW202203012A (zh) 2022-01-16
US20240045969A1 (en) 2024-02-08
US11847225B2 (en) 2023-12-19
US20210279334A1 (en) 2021-09-09
CN113434453A (zh) 2021-09-24
DE102020127800A1 (de) 2021-09-09

Similar Documents

Publication Publication Date Title
US11847225B2 (en) Blocking access to firmware by units of system on chip
EP3311268B1 (en) Secure initialisation
KR102517506B1 (ko) 공유 페이지
TWI714582B (zh) 受保護異常處置
TWI710898B (zh) 具有所有權表的資料處理設備及方法
JP6738354B2 (ja) アドレス変換
US20170277903A1 (en) Data Protection Using Virtual Resource Views
US9021476B1 (en) Ensuring the privacy and integrity of a hypervisor
US20190065236A1 (en) Ensuring the privacy and integrity of a hypervisor
US10395028B2 (en) Virtualization based intra-block workload isolation
US9135046B1 (en) Preventing host operating system from inspecting or modifying data received by hardware controller by moving host operating system into a virtual machine after boot up
US20230098991A1 (en) Systems, methods, and media for protecting applications from untrusted operating systems