Ленарт Потэрынг (Lennart Poettering) апублікаваў прапанову па мадэрнізацыі працэсу загрузкі Linux-дыстрыбутываў, накіраванае на рашэнне наяўных праблем і спрашчэнне арганізацыі паўнавартаснай верыфікаванай загрузкі, якая пацвярджае дакладнасць ядра і базавага сістэмнага асяроддзя. Неабходныя для ўжывання новай архітэктуры змены ўжо ўключаны ў кодавую базу systemd і закранаюць такія кампаненты, як systemd-stub, systemd-measure, systemd-cryptenroll, systemd-cryptsetup, systemd-pcrphase і systemd-creds.
Прапанаваныя змены зводзяцца да стварэння адзінай універсальнай выявы UKI (Unified Kernel Image), які аб'ядноўвае выява ядра Linux, апрацоўшчык для загрузкі ядра з UEFI (UEFI boot stub) і загружанае ў памяць сістэмнае асяроддзе initrd, ужывальнае для пачатковай ініцыялізацыі на стадыі дамантавання. Замест выявы RAM-дыска initrd у UKI можа быць запакаваная і ўся сістэма, што дазваляе ствараць цалкам верыфікаваныя сістэмныя асяроддзі, загружаныя ў аператыўную памяць. UKI-выява афармляецца ў выглядзе выкананага файла ў фармаце PE, які можа быць загружаны не толькі пры дапамозе традыцыйных загрузнікаў, і напроста выкліканы з прашыўкі UEFI.
Магчымасць выкліку з UEFI дазваляе выкарыстоўваць праверку цэласнасці і дакладнасці па лічбавым подпісе, якая ахоплівае не толькі ядро, але і змесціва initrd. Пры гэтым падтрымка выкліку з традыцыйных загрузнікаў дазваляе захаваць такія магчымасці, як пастаўка некалькіх версій ядра і аўтаматычны адкат на працоўнае ядро ў выпадку выяўлення праблем з новым ядром пасля ўсталёўкі абнаўлення.
У цяперашні час у большасці дыстрыбутываў Linux падчас ініцыялізацыі выкарыстоўваецца ланцужок «прашыўка → завераная лічбавым подпісам Microsoft shim-праслойка → завераны лічбавым подпісам дыстрыбутыва загрузнік GRUB → заверанае лічбавым подпісам дыстрыбутыва ядро Linux → не заверанае асяроддзе initrd → каранёвая ФС». Адсутнасць верыфікацыі initrd у традыцыйных дыстрыбутывах стварае праблемы з бяспекай, бо сярод іншага ў дадзеным асяроддзі ажыццяўляецца выманне ключоў для расшыфроўкі каранёвай ФС.
Верыфікацыя выявы initrd не падтрымліваецца бо дадзены файл фармуецца на лакальнай сістэме карыстача і не можа быць завераны лічбавым подпісам дыстрыбутыва, што моцна ўскладняе арганізацыю праверкі пры выкарыстанні рэжыму SecureBoot (для запэўнення initrd карыстачу неабходна згенераваць свае ключы і загрузіць іх у прашыўку UEFI). Акрамя таго, існуючая арганізацыя загрузкі не дазваляе ўжываць інфармацыю з рэгістраў TPM PCR (Platform Configuration Register) для кантролю цэласнасці кампанентаў прасторы карыстача, акрамя shim, grub і ядры. З наяўных праблем таксама згадваецца ўскладненне абнаўлення загрузніка і адсутнасць магчымасці абмежавання доступу да ключоў у TPM для старых версій АС, сталых неактуальнымі пасля ўсталёўкі абнаўлення.
Асноўныя мэты ўкаранення новай архітэктуры загрузкі:
- Прадастаўленне цалкам верыфікаванага працэсу загрузкі, які ахоплівае ўсе этапы ад прашыўкі да прасторы карыстальніка, і пацвярджае дакладнасць і цэласнасць загружаных кампанентаў.
- Прывязка кантраляваных рэсурсаў да рэгістраў TPM PCR з падзелам па ўладальніках.
- Магчымасць папярэдняга разліку значэнняў PCR на аснове выкарыстоўваных пры загрузцы ядра, initrd, канфігурацыі і лакальнага ідэнтыфікатара сістэмы.
- Абарона ад Rollback-нападаў, звязаных з адкатам на мінулую ўразлівую версію сістэмы.
- Спрашчэнне і павышэнне надзейнасці абнаўленняў.
- Падтрымка абнаўленняў АС, якія не патрабуюць паўторнага прымянення або лакальнай падрыхтоўкі рэсурсаў, абароненых TPM.
- Гатоўнасць сістэмы для правядзення выдаленай атэстацыі для пацверджання карэктнасці загружанай АС і налад.
- Магчымасць прымацавання канфідэнцыйных дадзеных да вызначаных стадый загрузкі, напрыклад, выманне з TPM ключоў шыфравання для каранёвай ФС.
- Прадастаўленне бяспечнага, аўтаматычнага і працавальнага без удзелу карыстальніка працэсу разблакіроўкі ключоў для расшыфроўкі дыска з каранёвай часткай.
- Выкарыстанне чыпаў, якія падтрымліваюць спецыфікацыю TPM 2.0, з магчымасцю адкату на сістэмы без TPM.
Крыніца: opennet.ru