Trusted Execution Thread in Multithreaded Embedded Systems
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing solutions for trusted execution environments are either costly due to dedicated cores or lack hardware-based security, and they often require context switches and additional security measures, which can lead to inefficiencies and security vulnerabilities.
Innovation Solution
A multithreaded system design where one or more hardware threads are dedicated to execute trusted code, sharing resources with untrusted threads, providing a flexible and cost-effective approach that eliminates the need for context switches and reduces security risks by using interconnect-based access control and secure boot processes.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If a separate core is allocated to realize a trusted execution environment, then security isolation is improved, but cost and resource usage increase
Solution Approach 1:
The system segments hardware threads into trusted and untrusted categories, with dedicated trusted hardware threads executing only authenticated code while untrusted threads run unverified code. This segmentation provides security isolation without requiring a separate physical core, resolving the contradiction between security and cost.
Solution Approach 2:
The trusted hardware threads can dynamically execute different trusted applications through secure boot processes and code authentication, making the same hardware thread serve multiple security-critical functions. This multi-functionality reduces the need for dedicated cores for each trusted application, lowering cost while maintaining security.
2Reliability
If a complete dedicated core is used for trusted execution environment, then security is improved, but flexibility and resource utilization deteriorate
Solution Approach 1:
The system dynamically assigns trusted applications to trusted hardware threads through secure boot processes and runtime code authentication. The configuration can be changed without hardware reconfiguration, providing flexibility while maintaining security isolation through hardware-enforced thread dedication.
3Productivity
If the core executes trusted and untrusted code in the same hardware thread, then resource utilization is improved, but security risks and context switch overhead increase
Solution Approach 1:
The system segments execution contexts by dedicating specific hardware threads to trusted code only, preventing untrusted code from accessing trusted execution resources. This segmentation eliminates security risks associated with mixed execution while maintaining efficient resource utilization through shared physical core resources.
Solution Approach 2:
The trusted hardware thread configuration acts as an intermediary layer between the physical core and the code being executed. This configuration, protected from untrusted bus masters, ensures that only authenticated code can execute on trusted threads, providing security without requiring separate physical cores.
4Adaptability or versatility
If context switches are used to manage trusted and untrusted code, then flexibility is improved, but performance and security deteriorate due to register dumps and switch overhead
Solution Approach 1:
The system segments execution contexts into separate hardware threads, eliminating the need for context switches between trusted and untrusted code. Each thread maintains its own execution state, allowing flexible task switching without the performance overhead of register dumps and context switch operations.
Data Source
AI summary
A multithreaded system includes a processor core having a plurality of hardware threads. One or more of the hardware threads is dedicated to execute only trusted code and the remaining hardware threads are configured to execute untrusted code. The multithreaded system further includes a DLNA (Digital Living Network Alliance) server configured to communicate secure requests to one or more of the hardware threads dedicated to execute only trusted code and communicate other requests to one or more of the remaining hardware threads configured to execute untrusted code.


