Гоогле развија делове Андроид-а у Русту да би побољшао безбедност

Гоогле пише и преписује делове Андроид-а у Русту да би побољшао безбедност оперативног система у целини, у односу на Ц и Ц++. Читајте даље да бисте сазнали више!

Андроид као комплетно ОС решење укључује много покретних делова. Уопштено говорећи, ови делови су екосистем апликације, а затим и сам ОС. Као програмер, ваш програмски језик по избору варира у зависности од тога на ком делу Андроид-а радите. За програмере апликација, Јава и Котлин су популарне опције. За програмере који раде на ОС-у и нижим нивоима унутар њега, Ц и Ц++ су до сада били популарни избори. Данас Гоогле додаје трећу опцију за програмере ОС-а, пошто Андроид Опен Соурце Пројецт сада подржава програмски језик Руст за развој самог ОС-а.

Ограничења Ц и Ц++

Нижи нивои Андроид ОС захтевају системске програмске језике као што су Ц и Ц++. Ови језици пружају програмерима контролу и предвидљивост, што је важно када приступају системским ресурсима и хардверу ниског нивоа.

Нажалост, Ц и Ц++ не успевају да обезбеде гаранције за безбедност меморије, што их чини склоним грешкама и безбедносним рањивостима. Програмер је одговоран за управљање животним веком меморије на овим језицима, али у сложеним и вишенитним базама кода, то је лакше рећи него урадити.

Ц и Ц++ заједно чине десетине милиона линија кода на Андроид платформи. Ове безбедносне грешке у меморији постају извор нетачности кода који је најтеже адресирати, што представља ~70% Андроид-ових безбедносних рањивости високе озбиљности. Само исправљање ових грешака постаје недовољно за решавање проблема, а бољи приступ би био да их спречимо на првом месту.

Недостатак сигурности меморије гарантује приморава програмере да покрећу Андроид процесе у строго ограниченим и непривилегованим сандбоковима. Али сандбокови су скупи по ресурсима, троше додатне трошкове и уводе кашњење. Сандбокинг такође не елиминише у потпуности рањивости кода, а његова ефикасност је смањена због велике густине грешака, што даље омогућава нападачима да повежу вишеструке рањивости.

Друго ограничење, иако није јединствено за Ц и Ц++, али је применљиво на сва питања безбедности меморије, јесте да се погрешно стање заправо мора покренути у инструментираном коду да би се открило. Дакле, чак и ако ваш код има одлично тестирање, стварна грешка може остати неоткривена. А када се пронађу грешке, њихово отклањање је још један задатак, који укључује дуг и скуп процес који не мора увек довести до исправне исправке. Дакле, откривање грешака постаје непоуздано, а превенција грешака је бољи приступ који треба предузети у светлу ових ограничења.

Овде се појављује прелазак на језик који је сигуран за меморију као што је Руст.

Рђа и њене предности

Руст пружа гаранције за безбедност меморије коришћењем комбинације провера времена компајлирања да би се применио животни век/власништво објекта и провера времена извођења како би се осигурало да су приступи меморији валидни. Ова безбедност је постигнута уз обезбеђивање еквивалентних перформанси као Ц и Ц++. Руст такође смањује потребу за сандбокингом, омогућавајући програмерима више простора за увођење нових функција које су безбедније и мање ресурсе.

Иако Руст заиста има своје предности, није изводљиво пребацити цео Андроид ОС на Руст преко ноћи. А то можда није ни потребно, пошто се већина Андроид-ових грешака у меморији јавља у новом или недавно модификованом коду, при чему је око 50% мање од годину дана. Гугл верује да су његови напори у вези са безбедним језиком најбоље фокусирани на нови развој, а не на поновно писање зрелог Ц и Ц++ кода.

Руст се такође фокусира на спречавање грешака уместо да се у великој мери ослања на откривање грешака, што доводи до побољшане исправности кода. Има неколико кључних карактеристика, као што су безбедност меморије, истовременост података, експресивнији системи типа, непроменљиви референце и променљиве подразумевано, сигурније руковање целим бројевима, боље руковање грешкама у стандардним библиотекама и много тога више.

Шта прелазак на Руст значи за Андроид?

Гоогле каже да је додао подршку за Руст у Андроид Опен Соурце Пројецт у последњих 18 месеци. Али додавање новог језика Андроид платформи је огроман подухват. Неки ланци алата и зависности морају да се одржавају, инфраструктура за тестирање и алати морају бити ажурирани, а програмери морају бити обучени.

Гоогле има неколико пројеката за рано усвајање које ће делити у наредним месецима. Али чак и тако, јасно је стављено до знања да је скалирање Руст подршке на већи део ОС-а вишегодишњи пројекат.

Из онога што видимо, Гоогле већ користи Руст на неколико места. Андроид-ов нови Блуетоотх стек преписује кодни назив "Габелдорсцхе“ пише се на Русту. Радови на Габелдорсцхеу су почели отприлике у време Андроида 11, али се још увек не користе. Андроид-ове Кеисторе 2.0 модул је написан у Русту, као и део корисничког простора повезивача, Андроид-овог ИПЦ драјвера. Иако није повезан са Андроидом, Фуксија'с нев нетстацк се такође пише у Русту.

За програмере апликација, прекидач не мења ништа о томе како ви, као програмер апликација, пишете апликације или како функционишу АПИ-ји оквира. Овај прекидач утиче само на начин на који је ОС написан. Према члану тима за односе са програмерима за Андроид, Гоогле такође не планира да објави Руст НДК у овом тренутку. Подржани језици за развој апликација ће и даље бити Котлин, Јава, Ц и Ц++.