Henrik Karlsson

OpenMZ: en C implementation av MultiZone API:et

Vi implementerade, benchmarkade och analyserade OpenMZ, en separationskärna för RISC-V som riktar sig till säkra hjälpprocessorer och inbyggda system. OpenMZ är en öppen implementation av MultiZone API:et vilket delar upp ett system i ett fixt antal zoner som kan kommunicera med varandra och hantera avbrott.

OpenMZ har en liten kodbas på cirka 800 rader vilket gör kärnan formellt verifierbar, och med en open-source RISC-V-processor, kan den vara grunden till ett fullständigt verifierat datorsystem. OpenMZ har dessutom vissa realtidsegenskaper och ett processorbyte på cirka 500 cykler, vilket gör den lämpligt för vissa realtidsapplikationer.

Vår säkerhetsanalys visar att OpenMZ skyddar zonernas minne från direkt åtkomst med hjälp av RISC-Vs PMP-mekanism, men inte indirekt åtkomst, t.ex. genom DMA:et. Dessutom har MultiZone API:et sårbarheter som utsätter zonerna för både DoS-attacker och timing-attacker. För att åtgärda dessa säkerhetsproblem föreslår vi därför några ändringar av API:et och schemaläggaren.