Google kuulutas välja avatud arendustööd, mis on seotud KataOS-i projektiga, mille eesmärk on luua turvaline operatsioonisüsteem sisseehitatud seadmetele. KataOS-i süsteemikomponendid on kirjutatud Rusti keeles ja töötavad seL4 mikratuumel, mille jaoks on RISC-V süsteemides esitatud usaldusväärsuse matemaatiline tõend, mis kinnitab koodi täielikku vastavust formaalse keeles määratletud spetsifikatsioonidele. Projekti kood on avatud Apache 2.0 litsentsi all.
Süsteem toetab RISC-V ja ARM64 arhitektuuride põhjal loodud platvorme. seL4 töö simuleerimiseks ja KataOS keskkonna arendamiseks kasutatakse Renode raamistikku. Näidisrakendusena pakutakse välja Sparrow, mis kombineerib KataOS-i OpenTitani platvormil põhinevate turvatud kiipidega. Ettepanek võimaldab ühendada loogiliselt tõendatud operatsioonisüsteemi tuuma usaldusväärsete riistvarakomponentidega (RoT, Root of Trust), mis on välja töötatud OpenTitani platvormi ja RISC-V arhitektuuri abil. Lisaks KataOS-i koodile plaanitakse tulevikus avada kõik ülejäänud Sparrow komponente, sealhulgas riistvaralist komponenti.
Platvorm areneb, arvestades spetsialiseeritud kiipide kasutamist, mis on mõeldud masinõppe ja konfidentsiaalse teabe töötlemise rakenduste täitmiseks, mille puhul on vajalik eriline kaitse- ja tõendamisviis, et vältida tõrkeid. Selliste rakenduste näiteks on süsteemid, mis manipuleerivad inimeste piltide ja häältega. KataOS-i kasutamine usaldusväärsuse kontrollimiseks tagab, et kui ühe süsteemi osa ebaõnnestub, ei levita see ebaõnnestumine ülejäänud süsteemi, sealhulgas tuuma ja kriitiliste osade peale.
seL4 arhitektuur on tähelepanuväärne, kuna see eraldab tuuma ressursside haldamise osad kasutaja ruumi ja rakendab nende ressursside permissions sama tööriistadega, mis on kasutaja ressursside puhul. Mikrotuum ei paku valmis kõrgetasemelisi abstraktsioone failide, protsesside, võrguühenduste jne haldamiseks; selle asemel pakub see ainult minimaalseid mehhanisme füüsilise aadressiruumi, katkestuste ja protsessori ressursside haldamiseks. Kõrgetasemelised abstraktsioonid ja riistvaraga suhtlemise draiverid rakendatakse eraldi mikrotuuma kohal ülesannete vormis, mis toimivad kasutaja tasemel. Nende ülesannete juurdepääs mikrotuumas saadaolevatele ressurssidele korraldatakse reeglite määratlemise kaudu.
Kaitseks arendatakse kõik komponendid, välja arvatud mikrotuum, algselt Rusti keeles, kasutades turvalisi programmeerimismeetodeid, mis vähendavad mäluga töötamise ajal vigu, mis võivad põhjustada selliseid probleeme nagu mäluala kasutamine pärast selle vabastamist, nullnäidikute tühistamine ja puhvri piirest väljumine. Rustis on kirjutatud ka rakenduste laadija seL4 keskkonnas, süsteemiteenused, rakenduste arendamise raamistik, API süsteemikõnedele, protsessihaldur, dünaamilise mäluhalduse mehhanism jne. Kinnituskooste jaoks kasutatakse seL4 projekti kaudu arendatav CAmkES tööriistakomplekti. CAmkESi komponente saab luua ka Rusti keeles.
Rust tagab mälutõrgete ennetamiseks kompileerimise ajal, kontrollides viiteid, jälgides objektide omandiõigust ja eluiga (vahemikud) ning hindades mälule juurdepääsu korrektsust koodijooksu ajal. Rust pakub samuti vahendeid arvuliste ülevoolude kaitsmiseks, nõuab muutuja väärtuste eelnevat initsialiseerimist enne kasutamist, rakendab vaikimisi muutumatute (immutable) viidete ja muutujate kontseptsiooni ning pakub tugevat staatilist tüüpimist loogiliste vigade minimeerimiseks.
Allikas: opennet.ru
