Încărcare sigură

Secure Boot (din  engleză  -  „secure boot”) este un protocol care face parte din specificația UEFI [1] . Constă în verificarea semnăturii digitale electronice a aplicațiilor EFI care rulează folosind criptografia asimetrică în raport cu cheile stocate în depozitul de chei al sistemului.

Istorie

În 2011, Microsoft a inclus în cerințele de certificare a computerelor care rulează Windows 8 condiția de livrare a unor astfel de sisteme cu Secure Boot activat folosind o cheie Microsoft. Mai mult, sistemele ARM (smartphone-uri și unele laptopuri) au necesitat imposibilitatea de a dezactiva Secure Boot. Acest lucru a provocat o mare protestă publică și critici la adresa Microsoft, deoarece astfel de cerințe au făcut mult mai dificilă, și în cazul sistemelor ARM, instalarea altor sisteme de operare decât Microsoft Windows [2] [3] [4] .

Descriere

Variabile autentificate

Variabilă autentificată - Variabile care necesită autentificare pentru a se modifica. Secure Boot implică stocarea cheilor publice, semnăturilor și hash-urilor aplicației în variabile autentificate stocate în memoria nevolatilă. Astfel de variabile pot fi suprascrise în două moduri [5] [6] [7] :

Variabile utilizate
  • Platform Key (PK) - cheia publică a proprietarului platformei. Semnăturile cu cheia privată corespunzătoare sunt necesare pentru a schimba PK sau pentru a schimba KEK, db și dbx (descris mai jos). Magazinul PK trebuie protejat de falsificare și ștergere [8] .
  • Key Exchange Key (KEK) - cheile publice ale sistemelor de operare. Semnăturile cu cheile private corespunzătoare sunt necesare pentru a modifica bazele de date de semnături (db, dbx, descrise mai jos). Magazinul KEK trebuie protejat de manipulare [8] .
  • Baze de date de semnături (db, dbx) - Baze de date de semnături și hash-uri ale aplicațiilor de încredere (db) și aplicațiilor nesigure (dbx).
  • Cheie de proprietar al mașinii (MOK) - Implementarea cheii Secure Boot specifică familiei de sisteme de operare Linux. Multe variante de Linux acceptă Secure Boot, dar creează probleme atunci când se utilizează nuclee și module ale sistemului de operare non-standard. Pentru a evita această problemă, a fost dezvoltat conceptul de CIO. IOC poate fi utilizat cu un bootloader Shim semnat pentru a oferi managementul cheilor la nivel de utilizator/administrator de sistem.

Moduri de operare

Modul de configurare

Trecerea la acest mod este posibilă din modul utilizator prin ștergerea PK.

Acest mod nu necesită autentificare pentru a scrie PK, KEK, db, dbx.

Intrarea PK pune sistemul în modul utilizator. Scrierea unei unități la variabila specială AuditMode (scris numai în modul configurație și modul utilizator) pune sistemul în modul audit.

Audit Mode (mod audit)

Trecerea la acest mod este posibilă din modul de configurare sau modul utilizator prin scrierea unei unități în variabila AuditMode. Când schimbați modul în modul audit, PK este șters.

Acest mod nu necesită autentificare pentru a scrie PK, KEK, db, dbx. În modul de audit, imaginile neverificate pot fi lansate, iar informațiile despre toate etapele validării imaginii vor fi înregistrate într-un tabel special accesibil din sistemul de operare, care vă permite să testați combinații de chei și semnături salvate fără teama de a pierde sistemul [9] ] .

Intrarea PK pune sistemul în modul implementat.

Modul utilizator (modul utilizator)

Trecerea la acest mod este posibilă din modul de configurare prin introducerea PK sau din modul implementat folosind o metodă dependentă de platformă (nespecificată în specificație).

Acest mod necesită autentificare pentru a schimba depozitele de chei și pentru a valida imaginile de pornire.

Eliminarea PK-ului pune sistemul în modul de configurare. Scrierea 1 la variabila AuditMode pune sistemul în modul de audit. Scrierea unuia în variabila DeployedMode (inscriptibil numai în modul utilizator) pune sistemul în modul implementat.

Modul implementat

Trecerea la acest mod este posibilă din modul de audit prin scrierea PK sau din modul utilizator prin scrierea unuia în variabila DeployedMode.

Cel mai sigur mod [9] . Diferă de modul utilizator prin setarea tuturor variabilelor de mod (AuditMode, DeployedMode, SetupMode) în modul numai citire.

Trecerea la alte moduri (mod personalizat sau de configurare) este posibilă numai prin metode specifice platformei sau prin ștergere PK autentificată [9] .

Procesul de autorizare

Înainte de a rula o imagine UEFI necunoscută, aceasta trebuie să treacă printr-un proces de autorizare.

  1. Resetați. În această etapă, platforma este inițializată la pornire.
  2. Inițializarea depozitului de chei.
  3. Validarea imaginii UEFI. Pentru autorizarea cu succes, semnătura sau hash-ul imaginii trebuie să fie conținute în db și nu trebuie să fie prezente în dbx.
  4. Dacă imaginea UEFI nu a trecut validarea, firmware-ul poate folosi alte metode de validare (de exemplu, întrebați un utilizator autorizat - proprietarul cheii private, corespunzătoare căreia se află cheia publică în KEK). Rezultatul în această etapă poate fi o rezoluție (pasul 8), o negare (pasul 6) sau o întârziere.
  5. În cazul unei întârzieri, informațiile despre semnătură sunt adăugate într-un tabel special accesibil din sistemul de operare.
  6. În caz de eșec sau întârziere, se încearcă următoarea opțiune de pornire (pasul 3).
  7. Dacă este rezolvată, semnătura imaginii este stocată în baza de date de semnături.
  8. Rularea imaginii.

Actualizarea bazei de date a aplicațiilor de încredere este disponibilă și din sistemul de operare [10] .

Chei personalizate

Utilizatorul poate genera și instala în mod independent propriile chei. Generați-le singur, semnați-le și instalați-le pe computer. „Ciclul complet” de generare a cheilor este implementat atât pentru sistemele de operare Linux, cât și pentru Windows.

De regulă, următorul lanț de transformări este utilizat în procesul de generare a cheilor:

PEM => DER => ESL => AUTH

Pentru Windows, există instrumente speciale de la Microsoft, iar pe Linux sunt folosite OpenSSL și setul de utilitare EfiTools. Există o problemă legată de lipsa unei interfețe pentru setarea cheilor personalizate în BIOS-ul unor producători. Acest lucru necesită uneori și o utilitate separată.

Complexitatea suplimentară creează necesitatea de a asigura compatibilitatea cu echipamentele de la Microsoft în unele cazuri. Verificarea funcționează în ambele sensuri și fără cheile Microsoft, software-ul și hardware-ul lor (de exemplu, driverele GOP pentru plăcile video externe și driverele PXE pentru plăcile de rețea externe și, prin urmare, plăcile în sine) nu vor funcționa. Adică, la un anumit nivel, va trebui să ai încredere în SM în orice caz.

Utilizatorul va trebui să adauge cheia de la Microsoft la db sau KEK, ceea ce introduce riscuri suplimentare de securitate.

Pot exista mai multe KEK și db pe un computer. În acest fel, se pot forma mai multe ramuri de încredere. Sau invers, un db poate fi semnat de mai multe KEC (deși acest lucru nu este necesar)

Dezvoltarea mecanismului

HP Sure Start - o soluție de la Hewlett-Packard, este de fapt un SDZ hardware și software încorporat. Implementează caracteristica de protecție a cheii Secure Boot. Secure Boot în forma sa actuală este oferit de Microsoft ca standard minim de securitate pentru protejarea împotriva rootkit-urilor. În același timp, unii producători își dezvoltă propriile soluții care oferă boot de încredere împreună cu o soluție de la Microsoft, un exemplu de astfel de soluție este HP Sure Start [11] .

Avantaje și dezavantaje

Avantaje

  • Protecție împotriva programelor malware

Când rootkit-urile interferează cu componentele critice ale sistemului de operare, semnăturile componentelor corespunzătoare devin invalide. Un astfel de sistem de operare pur și simplu nu va fi încărcat [12] .

  • Politicile locale de securitate

Dacă este necesar, limitați lista de sisteme de operare posibile de rulat, acest lucru se poate face prin introducerea semnăturilor corespunzătoare în baza de date de semnături [12] .

Dezavantaje

  • Alegerea echipamentelor

Driverele de dispozitiv care necesită asistență în faza de pornire a sistemului trebuie să aibă o semnătură care să treacă corect verificarea pe toate platformele pe care pot fi utilizate astfel de dispozitive. Pentru a face acest lucru, toți producătorii de astfel de echipamente vor trebui să fie de acord cu toți producătorii de platforme pentru a-și adăuga cheile în magazinele de sistem. Sau astfel de drivere vor trebui să fie semnate cu o cheie care este deja inclusă în majoritatea platformelor, dar apoi producătorii vor trebui să se bazeze în întregime pe proprietarul unei astfel de chei (de exemplu, Microsoft semnează bootloader-ul shim [13] [14] ) . De asemenea, este posibil să se creeze semnături într-un lanț care se termină cu o cheie conținută în majoritatea platformelor, dar chiar și această abordare are un dezavantaj - atunci când cheia corespunzătoare este eliminată din depozitul de chei (de exemplu, pentru a interzice încărcarea unui anumit sistem de operare) , semnăturile șoferului devin și ele invalide [12] .

  • Selectarea sistemului de operare

Furnizorii de sisteme nu sunt obligați să implementeze capacitatea de a dezactiva Secure Boot. Procedura de adăugare a cheilor de la terți în seif trebuie să fie inaccesibilă pentru software-ul rău intenționat, ceea ce face această procedură mai dificilă pentru utilizatori. Acești doi factori împreună fac mult mai dificilă utilizarea sistemelor de operare nesemnate, precum și a celor semnate cu o cheie necunoscută platformei [12] .

  • Vulnerabilități de implementare

Implementările specifice de firmware ale dispozitivelor de la diferiți producători pot conține vulnerabilități, a căror exploatare poate duce la ocolirea mecanismului de pornire Secure sau la nivelarea acestuia [15] [16] .

Mecanismul de pornire sigură poate împiedica funcționarea instrumentelor de pornire de încredere. Deoarece SDZ înlocuiește bootloader-ul OS cu propriul său bootloader, care în general nu are o semnătură, Secure Boot poate bloca bootloader-ul SDZ și, prin urmare, interferează cu funcționarea SDZ în ansamblu.

Există două soluții la această problemă.

Prima  este dezactivarea Secure Boot pe computerele cu SDZ instalat. Un exemplu de astfel de abordare este SDZ SafeNode System Loader [17] .

Al doilea  este livrarea unui set de variabile autentificate împreună cu SDZ, care atestă valabilitatea semnăturii încărctorului. După setarea variabilelor, SDZ va funcționa fără restricții de la Secure Boot. Un exemplu al acestei abordări este Dallas Lock SDZ. În acest caz, utilitarul keytool.efi [18] este de asemenea furnizat împreună cu cheile .

  • UEFI BIOS-ul unor producători are o interfață slab dezvoltată pentru gestionarea Secure Boot

Vezi și

Note

  1. Specificația UEFI .
  2. „Secure Boot” al computerului tău se va dovedi a fi „Restricted Boot”?  (engleză) . Free Software Foundation . Data accesului: 23 decembrie 2016. Arhivat din original pe 28 noiembrie 2013.
  3. ↑ Windows 8 Secure Boot: Controversa continuă  . Lumea PC-urilor. Consultat la 23 decembrie 2016. Arhivat din original la 31 martie 2017.
  4. Microsoft blochează pornirea Linux pe hardware-ul ARM?  (engleză) . lumea computerelor din Marea Britanie. Data accesului: 23 decembrie 2016. Arhivat din original pe 5 aprilie 2016.
  5. Specificația UEFI , p. 1817.
  6. Specificația UEFI , p. 1818.
  7. Specificația UEFI , p. 1828.
  8. 1 2 Specificația UEFI , p. 1819.
  9. 1 2 3 Specificația UEFI , p. 1816.
  10. Specificația UEFI , pp. 1803-1834.
  11. Hârtie albă tehnică HP Sure  Start . Preluat la 6 aprilie 2022. Arhivat din original la 19 noiembrie 2020.
  12. 1 2 3 4 Jeremy Kerr, Matthew Garrett, James Bottomley. UEFI Secure Boot Impact pe Linux  (engleză) (PDF). Preluat la 23 decembrie 2016. Arhivat din original la 19 iulie 2017.
  13. mjg59 | Bootloader securizat pentru distribuții disponibil acum . Preluat la 25 octombrie 2019. Arhivat din original la 25 octombrie 2019.
  14. Securizează procesul de pornire Windows 10 - Microsoft 365 Security | Microsoft docs . Preluat la 25 octombrie 2019. Arhivat din original la 25 octombrie 2019.
  15. Corey Kallenberg, Sam Cornwell, Xeno Kovah, John Butterworth. Configurare pentru eșec: Înfrângerea pornirii securizate  (engleză) (PDF). Corporația MITRE. Preluat la 23 decembrie 2016. Arhivat din original la 23 decembrie 2016.
  16. Lucian Constantine. Explorările demonstrative ale cercetătorilor care ocolesc Windows 8 Secure  Boot . lumea IT. Data accesului: 23 decembrie 2016. Arhivat din original pe 24 decembrie 2016.
  17. Ghidul administratorului pentru SDZ SafeNode System Loader . Preluat la 6 aprilie 2022. Arhivat din original la 14 august 2020.
  18. Dallas Lock SDZ Manual de operare . Consultat la 6 aprilie 2022. Arhivat din original pe 2 aprilie 2022.

Literatură