Zephyr Kernel Security Discussion Jan 11, 2017
Security Levels 5 4 3 2b 2a 1 Application Libraries RNG Secure Storage … … 3 2b Secure OS Subsystems (Logging/FS/) 2a Secure Infrastructure (Security Objects: Key Objects, TEE) Kernel + Thread Separation 1 Not Secure: Kernel without thread separation
Threads “Stack area” Control block (struct k_thread) Stack CRC protection? “Stack area” Control block (struct k_thread) Execution flags Thread state Init data Abort function … Stack Stack pointer (?) Data CRC protection? MMU/MPU
Interrupts ???
Scheduler (struct _kernel) CRC protection? CPU registers Store/load List of threads Current thread Priorities States Locking + Extra Protection for special threads Idle Thread Main Thread, e.g. against DOS (thread starvation) Flow protection CRC protection? Flow protection
Memory Allocation Types Global/per thread? Memory Slabs Memory Pools Heap Memory Pool Global/per thread? MMU/MPU Protected sections
Data Passing Key points for consideration: Key goal(s): Integrity protection Access control (MPU) Key goal(s): Limit accessibility to communicating parties only Add “protected” counter-parts that sacrifice code size/performance for e.g. integrity protection