Den slutliga versionen av specifikationen för den programvara-hÄrdvaruplattform som CHERIoT 1.0 (Capability Hardware Extension to RISC-V för Internet of Things) har presenterats, vilket definierar en utvidgning av instruktionsuppsÀttningen (ISA) för att skapa sÀkra enheter. CHERIoT erbjuder hÄrdvarufunktioner för att spÄra minnesÄtkomst, verifiera korrektheten i pekarhantering och sÀkerstÀlla isolering av kodblock. Samtidigt publicerades en stabil version av den referensformella modellen för CHERIoT ISA, definierad i Sail-sprÄket. Projektets resultat sprids under BSD-licens.
Projektet CHERIoT skapades av Microsoft för att lösa sÀkerhetsproblem i befintlig kod skriven i C och C++ och skydda sÄdan kod utan att behöva omarbeta den. Skyddet implementeras genom en modifierad kompilator som anvÀnder en utvidgad uppsÀttning processorinstruktioner (ISA) för att sÀkerstÀlla pekarens integritet, övervaka grÀnser vid minnesanvÀndning och förhindra Ätkomst till frigjort minne. à r 2023 blev resultaten frÄn CHERIoT öppna och omvandlades till ett gemensamt projekt dÀr Àven andra företag deltog.
HÄrdvarukomponenterna i CHERIoT Àr utformade som en mikroprocessor baserad pÄ RISC-V-arkitekturen, som implementerar den sÀkra processorarkitekturen CHERI (Capability Hardware Extension to RISC-V) med en minnesÄtkomstmodell baserad pÄ "capability" (varje lÀs- och skrivoperation i minnet Àr auktoriserad). Den programvarumodell som bygger pÄ CHERIoT:s instruktionsuppsÀttning (ISA) garanterar sÀkerheten vid minneshantering pÄ nivÄer av individuella objekt, medan den erbjuder skydd mot Ätkomst till redan frigjort minne och implementerar ett lÀttviktsisolationssystem för minnesÄtkomst.
Den angivna programvarumodellen för skydd Äterspeglas direkt i sprÄkmodellen för C/C++, vilket gör det möjligt att tillÀmpa den för befintliga applikationer vars skydd endast krÀver omkompilering och körning pÄ utrustning som stöder CHERIoT ISA. Till exempel möjliggör anvÀndningen av CHERIoT att automatisk grÀnskontroll kan genomföras utan Àndringar i koden, spÄra livslÀngden hos minnesomrÄden och sÀkerstÀlla pekarens integritet i komponenter som hanterar opÄlitliga data.
Bland de problem som blockeras med hjÀlp av CHERIoT:
- Ăverskridande av objektets grĂ€nser i minnet;
- ErsÀttning av pekare (vid anvÀndning av CHERIoT mÄste alla pekare hÀrstamma frÄn redan existerande pekare);
- à tkomst till minnet efter att det har frigjorts (all Ätkomst till minnet via en ogiltig pekare eller en pekare som refererar till ett frigjort objekt leder under CHERIoT till att ett undantag genereras).
Utöver specifikationen och den formella modellen utvecklas en referensimplementation av en 32-bitars RISC-V CPU Ibex med stöd för ISA CHERIoT och ett modifierat LLVM-verktyg. Kretsarna för CPU-prototypen och beskrivningarna av hÄrdvarublocken pÄ Verilog-sprÄket sprids under Apache 2.0-licensen. Ibex-kÀrnan frÄn lowRISC-projektet anvÀnds som bas för CPU:n. Chipen ICENI, baserade pÄ CHERIoT Ibex-kÀrnan, förbereds för massproduktion, med försÀljning planerad till nÀsta Är. Separat utvecklar Microsoft en mikrokontroller Kudu med stöd för ISA CHERIoT. BÄde Ibex och Kudu stöder redan fullstÀndigt CHERIoT-specifikationen 1.0. Arbetet med att standardisera CHERI-förlÀngningar för RISC-V-processorer pÄgÄr inom RISC-V International.
Dessutom utvecklas en emulator för plattformen baserad pÄ FPGA och en Docker-container för utvecklare med förinstallerade verktyg och simulator för CPU Ibex, implementerad med Verilator. Dessutom har en prototyp av realtidsoperativsystemet CHERIoT RTOS förberetts, vilket möjliggör isolering av compartment Àven pÄ inbÀddade system med 256 MB RAM. Koden för CHERIoT RTOS Àr skriven i C++ och distribueras under MIT-licensen. De grundlÀggande komponenterna i OS, sÄsom bootloader, schemalÀggare och minneshanteringssystem, Àr strukturerade som compartments.
Ett kompartments i CHERIoT RTOS Àr en isolerad kombination av kod och globala variabler som liknar ett delat bibliotek, men till skillnad frÄn det kan den Àndra sitt tillstÄnd (mutable) och köras i en separat sÀkerhetskontext. Ingen extern kod kan överföra kontroll till koden i kompartments eller fÄ tillgÄng till objekt, förutom genom specifikt definierade ingÄngspunkter och anvÀndning av pekare till objekt som uttryckligen överförts vid anrop av ett annat kompartments. Integritet och konfidentialitet garanteras för kod och globala objekt i kompartments.
KĂ€lla: opennet.ru
