
Studiez Tehnologia Informației la Universitatea din Tampere. În timpul liber contribui la proiecte de software liber și open source, precum EriX Project, AES, Cutie Shell Project și Droidian GNU/Linux. Mă interesează și limbile naturale, precum și învățarea lor.
Mă poți găsi pe GitHub, git.erikinkinen.fi și LinkedIn.
De la firmware la kernel: procesul de boot explicat
Fiecare sistem de operare începe înainte de a fi cu adevărat el însuși. CPU-ul pornește într-un mediu definit de platformă, firmware-ul inițializează suficient hardware pentru a încărca primul executabil, iar acel executabil pregătește mașina pentru kernel. Abia după ce acest lanț și-a făcut treaba poate sistemul de operare să înceapă să își aplice propriile reguli.
Este ușor să tratezi acest drum inițial ca pe simplă instalație, dar procesul de boot face parte din modelul de securitate.
De ce Rust pentru dezvoltarea de kernel
Sistemele de operare sunt de obicei asociate cu C.
Această asociere este de înțeles. C este mic, previzibil, apropiat de mașină și dominant istoric în lucrul la kernel. Îi dă programatorului acces direct la memorie, registre, layout și convenții de apel.
Acestea sunt exact lucrurile de care are nevoie un kernel.
Sunt și exact lucrurile care fac kernelurile greu de securizat.
EriX este scris în principal în Rust deoarece proiectul este construit în jurul unei idei centrale:
Baza de calcul de încredere: de ce contează dimensiunea
Discuțiile despre securitate se concentrează adesea pe buguri individuale:
un buffer overflow o problemă de confused deputy un parser neverificat o cale de escaladare a privilegiilor Aceste buguri contează, dar sunt simptome ale unei întrebări mai profunde:
Cât cod trebuie să fie corect pentru ca sistemul să rămână sigur?
Acest cod este baza de calcul de încredere, de obicei abreviată TCB.
Dimensiunea și forma TCB determină cât cod trebuie să fie de încredere, auditat, testat și înțeles.
Microkerneluri vs kerneluri monolitice: compromisuri revizitate
Puține dezbateri de proiectare a sistemelor de operare au durat la fel de mult ca dezbaterea dintre microkerneluri și kerneluri monolitice.
La suprafață, diferența pare simplă:
kernelurile monolitice păstrează majoritatea serviciilor sistemului de operare în interiorul kernelului microkernelurile mută majoritatea serviciilor în spațiul utilizator În practică, compromisul este mai subtil.
Întrebarea reală nu este dacă o structură este universal mai rapidă, mai curată sau mai sigură. Întrebarea reală este unde ar trebui să trăiască autoritatea, complexitatea, eșecul și costurile de performanță.
Proiectarea unui sistem de operare clean-room
Cele mai multe sisteme de operare moderne sunt construite pe decenii de cod acumulat, biblioteci și dependențe externe. Deși acest ecosistem permite dezvoltare rapidă, el introduce și complexitate, presupuneri ascunse și riscuri de securitate potențial neexaminate.
EriX adoptă o abordare diferită.
Este dezvoltat ca un sistem de operare clean-room, ceea ce înseamnă că fiecare componentă - de la bootloader la serviciile din spațiul utilizator - este implementată în cadrul proiectului însuși, fără a încorpora cod sursă extern sau biblioteci terțe.
Ce este un sistem de operare bazat pe capabilități
Sistemele de operare moderne impun granițe de securitate între procese, fișiere, dispozitive și utilizatori. Totuși, modul în care aceste granițe sunt implementate variază semnificativ între diferite modele de sistem.
Majoritatea sistemelor de operare obișnuite se bazează pe controlul accesului bazat pe identitate și pe spații de nume globale. Sistemele de operare bazate pe capabilități adoptă o abordare fundamental diferită: reprezintă autoritatea în mod explicit și o tratează ca pe un concept de prim rang.
De ce construiesc de la zero un micronucleu bazat pe capabilități
Sistemele de operare sunt printre cele mai complexe componente informatice construite vreodată. Ele gestionează memoria, planifică execuția, controlează echipamentul și aplică granițele de securitate care protejează fiecare aplicație ce rulează pe o mașină.
Totuși, multe dintre sistemele de operare pe care ne bazăm astăzi sunt construite pe idei arhitecturale vechi de câteva decenii. Deși aceste sisteme sunt extraordinar de puternice și testate în practică, ele poartă și decenii de complexitate acumulată.