Google malfermis la kodon por la sekura operaciumo KataOS

Google anoncis la malkovron de evoluoj rilataj al la projekto KataOS, celanta krei sekuran operaciumon por enigita aparataro. KataOS-sistemkomponentoj estas skribitaj en Rust kaj funkcias sur la seL4-mikrokerno, por kiu matematika pruvo de fidindeco estis disponigita sur RISC-V-sistemoj, indikante ke la kodo plene konformas kun la specifoj specifitaj en la formala lingvo. La projektkodo estas malfermita sub la permesilo Apache 2.0.

La sistemo disponigas subtenon por platformoj bazitaj sur RISC-V kaj ARM64-arkitekturoj. Por simuli la funkciadon de seL4 kaj la medion KataOS aldone al la aparataro, la kadro Renode estas uzata dum la disvolva procezo. Kiel referenca efektivigo, la Sparrow programaro kaj aparataro estas proponita, kombinante KataOS kun sekuraj blatoj bazitaj sur la OpenTitan platformo. La proponita solvo permesas vin kombini logike kontrolitan operaciuman kernon kun fidindaj aparataj komponantoj (RoT, Root of Trust), konstruitaj uzante la OpenTitan-platformon kaj RISC-V-arkitekturon. Krom la KataOS-kodo, estas planite malfermi ĉiujn aliajn Sparrow-komponentojn, inkluzive de la aparataro, estonte.

La platformo estas evoluigita kun okulo al apliko en specialigitaj blatoj desegnitaj por ruli aplikojn por maŝinlernado kaj prilaborado de konfidencaj informoj, kiuj postulas specialan nivelon de protekto kaj konfirmon de la foresto de fiaskoj. Ekzemploj de tiaj aplikoj inkludas sistemojn kiuj manipulas bildojn de homoj kaj voĉregistraĵojn. La uzo de fidindeco de KataOS certigas, ke se unu parto de la sistemo malsukcesas, la fiasko ne disvastiĝos al la resto de la sistemo kaj, precipe, al la kerno kaj kritikaj partoj.

La seL4-arkitekturo estas rimarkinda pro movado de partoj por administrado de kernresursoj en uzantspacon kaj aplikado de la samaj alirkontroliloj por tiaj resursoj kiel por uzantresursoj. La mikrokerno ne disponigas pretajn altnivelajn abstraktaĵojn por administrado de dosieroj, procezoj, retkonektoj, kaj similaĵo; anstataŭe, ĝi disponigas nur minimumajn mekanismojn por kontrolado de aliro al fizika adresspaco, interrompoj, kaj procesorresursoj. Altnivelaj abstraktaĵoj kaj ŝoforoj por interagado kun aparataro estas efektivigitaj aparte aldone al la mikrokerno en la formo de uzant-nivelaj taskoj. Aliro de tiaj taskoj al la rimedoj disponeblaj al la mikrokerno estas organizita per la difino de reguloj.

Por kroma protekto, ĉiuj komponentoj krom la mikrokerno estas indiĝene evoluigitaj en Rust uzanta sekurajn programajn teknikojn kiuj minimumigas memorerarojn kiuj kondukas al problemoj kiel ekzemple memoraliro post liberiĝo, nulmontriloj dereferences, kaj bufrotropasoj. Aplikaĵoŝargilo en la seL4-medio, sistemservoj, kadro por aplikaĵevoluo, API por aliro al sistemvokoj, procezmanaĝero, mekanismo por dinamika memorasigno, ktp. estis skribitaj en Rust. La kontrolita asembleo uzas la ilaron CAmkES, evoluigitan de la projekto seL4. Komponantoj por CAmkES ankaŭ povas esti kreitaj en Rust.

Rusto devigas memorsekurecon ĉe kompiltempo per referenckontrolado, objektoproprieto kaj objekta vivdaŭra spurado (kampoj), kaj taksante la ĝustecon de memoraliroj ĉe rultempo. Rusto ankaŭ provizas protekton kontraŭ entjeraj superfluoj, postulas ŝanĝiĝemajn valorojn antaŭ uzo, uzas la koncepton de neŝanĝeblaj referencoj kaj variabloj defaŭlte, kaj ofertas fortan senmovan tajpadon por minimumigi logikajn erarojn.

fonto: opennet.ru

Aldoni komenton