Google atvērtā koda drošā operētājsistēma KataOS

Google ir paziņojusi par atklājumiem saistībā ar KataOS projektu, kura mērķis ir izveidot drošu operētājsistēmu iegultai aparatūrai. KataOS sistēmas komponenti ir rakstīti Rust un darbojas virs seL4 mikrokodola, par kuru RISC-V sistēmās ir sniegts matemātisks uzticamības pierādījums, kas norāda, ka kods pilnībā atbilst oficiālajā valodā norādītajām specifikācijām. Projekta kods ir atvērts saskaņā ar Apache 2.0 licenci.

Sistēma nodrošina atbalstu platformām, kuru pamatā ir RISC-V un ARM64 arhitektūra. Lai simulētu seL4 un KataOS vides darbību virs aparatūras, izstrādes procesā tiek izmantots Renode ietvars. Kā atsauces ieviešana tiek piedāvāts Sparrow programmatūras un aparatūras komplekss, kas apvieno KataOS ar drošām mikroshēmām, kuru pamatā ir OpenTitan platforma. Piedāvātais risinājums ļauj apvienot loģiski pārbaudītu operētājsistēmas kodolu ar uzticamiem aparatūras komponentiem (RoT, Root of Trust), kas veidoti, izmantojot OpenTitan platformu un RISC-V arhitektūru. Papildus KataOS kodam nākotnē plānots atvērt arī visus citus Sparrow komponentus, tostarp aparatūras komponentu.

Platforma tiek izstrādāta, pievēršoties pielietojumam specializētās mikroshēmās, kas paredzētas mašīnmācības un konfidenciālas informācijas apstrādes lietojumprogrammām, kurām nepieciešams īpašs aizsardzības līmenis un apstiprinājums, ka nav kļūdu. Šādu lietojumprogrammu piemēri ietver sistēmas, kas manipulē ar cilvēku attēliem un balss ierakstiem. KataOS izmantotā uzticamības pārbaude nodrošina, ka, ja viena sistēmas daļa neizdodas, kļūme netiks izplatīta pārējā sistēmā un jo īpaši kodolā un kritiskajās daļās.

SeL4 arhitektūra ir ievērojama ar kodola resursu pārvaldības daļu pārvietošanu lietotāja telpā un tādu pašu piekļuves kontroles rīku izmantošanu šādiem resursiem kā lietotāju resursiem. Mikrokodolis nenodrošina gatavas augsta līmeņa abstrakcijas failu, procesu, tīkla savienojumu un tamlīdzīgu pārvaldīšanai; tā vietā tas nodrošina tikai minimālus mehānismus, lai kontrolētu piekļuvi fiziskajai adrešu telpai, pārtraukumiem un procesora resursiem. Augsta līmeņa abstrakcijas un draiveri mijiedarbībai ar aparatūru tiek ieviesti atsevišķi virs mikrokodola lietotāja līmeņa uzdevumu veidā. Šādu uzdevumu piekļuve mikrokodola rīcībā esošajiem resursiem tiek organizēta, definējot noteikumus.

Papildu aizsardzībai visi komponenti, izņemot mikrokodolu, ir sākotnēji izstrādāti Rust, izmantojot drošas programmēšanas metodes, kas samazina atmiņas kļūdas, kas izraisa tādas problēmas kā piekļuve atmiņai pēc atbrīvošanas, nulles rādītāja atsauču atcelšana un bufera pārtēriņš. Rustā tika uzrakstīts lietojumprogrammu ielādētājs seL4 vidē, sistēmas pakalpojumi, ietvars aplikāciju izstrādei, API piekļuvei sistēmas izsaukumiem, procesu pārvaldnieks, dinamiskās atmiņas piešķiršanas mehānisms utt. Verificētajai montāžai tiek izmantots CAmkES rīku komplekts, ko izstrādājis projekts seL4. CamkES komponentus var izveidot arī Rust.

Rust nodrošina atmiņas drošību kompilēšanas laikā, pārbaudot atsauces, objektu īpašumtiesības un objekta mūža izsekošanu (tvērumus), kā arī novērtējot atmiņas piekļuves pareizību izpildes laikā. Rūsa arī nodrošina aizsardzību pret veselu skaitļu pārpildīšanu, prasa pirms lietošanas inicializēt mainīgās vērtības, pēc noklusējuma izmanto nemainīgu atsauces un mainīgo jēdzienu un piedāvā spēcīgu statisko rakstīšanu, lai samazinātu loģiskās kļūdas.

Avots: opennet.ru

Pievieno komentāru