Google-ը հայտարարել է KataOS նախագծի բաց կոդով մշակման մասին, որի նպատակն է ստեղծել ներկառուցված սարքավորումների համար անվտանգ օպերացիոն համակարգ: KataOS համակարգի բաղադրիչները գրված են Rust լեզվով և աշխատում են seL4 միկրոմիջուկի վրա, որի հուսալիության մաթեմատիկական ապացույց է տրամադրվել RISC-V համակարգերի վրա, որը ցույց է տալիս կոդի լիակատար համապատասխանությունը պաշտոնական լեզվով տրված պահանջներին: Նախագծի կոդը բաց կոդով է՝ Apache 2.0 լիցենզիայի ներքո:
Համակարգը ապահովում է RISC-V և ARM64 ճարտարապետությունների վրա հիմնված հարթակների աջակցություն: Renode շրջանակը օգտագործվում է մշակման ընթացքում՝ seL4-ի և KataOS միջավայրի աշխատանքը սարքավորման վրա մոդելավորելու համար: Sparrow ապարատային և ծրագրային համալիրը առաջարկվում է որպես հղման իրականացում, որը համատեղում է KataOS-ը OpenTitan հարթակի վրա հիմնված անվտանգ չիպերի հետ: Առաջարկվող լուծումը թույլ է տալիս համատեղել տրամաբանորեն ստուգված օպերացիոն համակարգի միջուկը վստահելի ապարատային բաղադրիչների (RoT, Root of Trust) հետ, որոնք կառուցված են OpenTitan հարթակի և RISC-V ճարտարապետության միջոցով: KataOS կոդից բացի, ապագայում նախատեսվում է բացել Sparrow-ի մյուս բոլոր բաղադրիչները, ներառյալ ապարատային բաղադրիչը:
Հարթակը մշակվում է՝ հաշվի առնելով մասնագիտացված չիպերում օգտագործումը, որոնք նախատեսված են մեքենայական ուսուցման և զգայուն տվյալների մշակման ծրագրեր գործարկելու համար, որոնք պահանջում են պաշտպանության և խափանումներից պաշտպանվածության հատուկ մակարդակ: Նման ծրագրերի օրինակներ են համակարգերը, որոնք մանիպուլացնում են մարդկանց պատկերները և ձայնային ձայնագրությունները: KataOS-ի կողմից հուսալիության ստուգման կիրառումը ապահովում է, որ եթե համակարգի մեկ մասը խափանվի, այդ խափանումը չի տարածվի համակարգի մնացած մասի, մասնավորապես՝ միջուկի և կարևոր մասերի վրա:
seL4-ի ճարտարապետությունը աչքի է ընկնում օգտատիրոջ տարածքում միջուկի ռեսուրսները կառավարելու համար նախատեսված մասերի հեռացմամբ և նման ռեսուրսների համար մուտքի վերահսկման նույն միջոցների օգտագործմամբ, ինչ օգտատիրոջ ռեսուրսների համար։ Միկրոկիրը չի տրամադրում պատրաստի բարձր մակարդակի աբստրակցիաներ ֆայլերի, գործընթացների, ցանցային կապերի և այլնի կառավարման համար, փոխարենը այն տրամադրում է միայն նվազագույն մեխանիզմներ ֆիզիկական հասցեների տարածքին, ընդհատումներին և պրոցեսորի ռեսուրսներին մուտքը կառավարելու համար։ Բարձր մակարդակի աբստրակցիաները և սարքավորումների հետ փոխազդեցության դրայվերները իրականացվում են առանձին՝ միկրոկորնի վերևում՝ օգտատիրոջ մակարդակով կատարված առաջադրանքների տեսքով։ Նման առաջադրանքների մուտքը միկրոկորնիլին հասանելի ռեսուրսներ կազմակերպվում է կանոններ սահմանելով։
Լրացուցիչ պաշտպանության համար, միկրոմիջուկից բացի բոլոր բաղադրիչները սկզբնապես մշակվում են Rust-ում՝ օգտագործելով անվտանգ ծրագրավորման տեխնիկաներ, որոնք նվազագույնի են հասցնում հիշողության հետ աշխատելիս սխալները, որոնք հանգեցնում են այնպիսի խնդիրների, ինչպիսիք են հիշողության տարածք մուտք գործելը դրա ազատումից հետո, զրոյական ցուցիչների հղումների վերացումը և բուֆերի սահմաններից դուրս գալը: seL4 միջավայրում ծրագրերի բեռնիչը, համակարգային ծառայությունները, ծրագրերի մշակման շրջանակը, համակարգային զանգերին մուտք գործելու API-ը, գործընթացների կառավարիչը, դինամիկ հիշողության բաշխման մեխանիզմը և այլն նույնպես գրված են Rust-ում: seL4 նախագծի կողմից մշակված CAmkES գործիքակազմը օգտագործվում է ստուգված ասեմբլերի համար: CAmkES-ի բաղադրիչները նույնպես կարող են ստեղծվել Rust-ում:
Հիշողության անվտանգությունը Rust-ում ապահովվում է կոմպիլյացիայի ժամանակ՝ հղումների ստուգման, օբյեկտի սեփականության հետևման և օբյեկտի կյանքի տևողության (շրջանակի) հաշվառման, ինչպես նաև կատարման ժամանակի հիշողությանը մուտք գործելու վավերացման միջոցով: Rust-ը նաև ապահովում է ամբողջ թվերի գերլցումներից պաշտպանվելու միջոցներ, պահանջում է փոփոխականների արժեքների պարտադիր նախնականացում օգտագործելուց առաջ, կիրառում է անփոփոխ հղումների և փոփոխականների հայեցակարգը լռելյայնորեն և առաջարկում է ուժեղ ստատիկ տիպավորում՝ տրամաբանական սխալները նվազագույնի հասցնելու համար:
Source: opennet.ru
