Disputationes de securitate saepe in singulis vitiis consistunt:

  • redundatio bufferi
  • vitium confused-deputy
  • parser non examinatus
  • via privilegiorum augendorum

Haec vitia valent, sed signa sunt quaestionis profundioris:

Quantum codicis rectum esse debet ut systema securum maneat?

Hic codex est basis computandi fidata, plerumque TCB appellata.

Magnitudo et forma TCB definiunt quantum codicis fidendum, inspiciendum, probationibus exercendum, et ratione comprehendendum sit. Systema abstractiones in charta firmas habere potest, sed si illae abstractiones a magna copia codicis privilegiati perfecte se gerentis pendent, argumentum securitatis multo debilius fit.

Hoc scriptum explicat quid TCB sit, cur eius magnitudo superficiem impetus afficiat, et quomodo EriX codicem fidatum parvum atque explicitum servare conetur.


Quid sit TCB?

Basis computandi fidata est copia componentium quorum rectitudo necessaria est ut proprietates securitatis systematis valeant.

Si elementum intra TCB frangitur, cautiones securitatis systematis verae esse desinere possunt.

In systemate operativo, TCB saepe continet:

  • bootloader
  • nucleum
  • officia systematis privilegiata
  • logicam authenticationis et authorizationis
  • parseres datorum initii fidatorum
  • codicem verificationis cryptographicae
  • codicem qui auctoritatem distribuit aut transfert

TCB exacta a consilio systematis pendet.

In nucleo monolithico tradito, magna pars nuclei plerumque pars TCB est, quia multa subsystemata cum pleno privilegio nuclei currunt. Vitium in moderatore, systemate fasciculorum, aut acervo retis in compromissionem nuclei mutari potest.

In systemate micronuclei, TCB nuclei minor esse potest, sed totum systema fidatum adhuc continet componentia quae auctoritatem distribuunt et politicam cogunt.

Haec distinctio interest.

Micronuclei quantitatem codicis minuunt qui cum plena auctoritate machinae currit. Non faciunt omnia officia spatii usoris per defaltam infidata.


Fidatum non idem est ac tutum

Verbum “fidatum” facile male intellegitur.

Elementum fidatum non est elementum quod rectum esse scitur.

Est elementum cuius rectitudine systema nititur.

Haec definitio minus commoda est, sed utilis est.

Si officium fiditur ut facultates distribuat, vitium in illo officio auctoritatem perperam concedere potest. Si parser fiditur ut exsecutabile ante initium validet, vitium parseris catenam initii subvertere potest. Si tractator syscall nuclei fiditur ut iura endpoint examinet, verificatio omissa isolationem frangere potest.

Fides non est laus.

Fides est periculum.

Propositum igitur non est quam plurimum codicis fidatum appellare. Propositum est copiam fidatam quam minime, quam angustissime, et quam facillime inspiciendam facere.


Cur magnitudo valeat

Magnitudo TCB multis de causis valet.

1. Plus codicis plus vitiorum significat

Omnis software vitia habet.

Cum copia codicis fidati crescit, probabilitas vitiorum ad securitatem pertinentium etiam crescit. Hoc praesertim verum est de codice qui:

  • input infidum parsit
  • memoriam administrat
  • concurrentiam tractat
  • permissiones interpretatur
  • unum exemplar auctoritatis in aliud vertit

Systemata operativa omnia haec exemplaria continent.

Magnitudinem TCB minuere vitia non tollit, sed minuit copiam codicis ubi vitium totum systema compromittere potest.


2. Plures interfaces maiorem superficiem impetus significant

Superficies impetus non tantum de lineis codicis est.

Etiam de punctis ingressus est.

Unaquaeque interface in codicem fidatum locus est ubi oppugnator input dare potest:

  • argumenta syscall
  • nuntii IPC
  • metadata imaginis initii
  • capita ELF
  • structurae systematis fasciculorum
  • descriptoria machinarum
  • eventus interruptorum
  • tabulae a firmware praebitae

Omnis interface validatione indiget.

Elementum fidatum parvum cum interface male designata adhuc periculosum esse potest. Sed cum numerus interfacierum fidatarum crescit, onus validationis cum eo crescit.


3. Plus status ratiocinationem difficiliorem facit

Defectus securitatis saepe eveniunt non quia una verificatio separatim deest, sed quia status ordine inopinato mutatur.

Exempli gratia:

  • facultas describitur antequam iura minuuntur
  • officium incipit antequam fasciculus initii eius plene validetur
  • slot localis vetus pro probatione auctoritatis habetur
  • machina praesens habetur antequam inventio perfecta est
  • processus auctoritatem retinet post viam initii deficientem

Quo plus status mutabilis fidati systema habet, eo difficilius fit probare omnem transitionem invariantes intentas servare.

Ideo EriX initium deterministicum, tabulas translationis explicitas, et mores fail-closed extollit.


4. Plus privilegii maiorem ambitum damni significat

Idem vitium varios effectus habet secundum locum ubi fit.

Vitium parseris in instrumento sine privilegio illud instrumentum tantum concidere potest.

Vitium parseris in bootloader totum systema ante initium nuclei compromittere potest.

Vitium in moderatore spatii usoris cui accessus tantum ad certum intervallum I/O datur grave est, sed aliud est quam vitium in moderatore qui intra nucleum cum plena auctoritate machinae currit.

TCB minuere partim est ambitum damni singulorum vitiorum minuere.


Nucleus pars tantum TCB est

Allicit dicere:

TCB est nucleus.

Hoc plerumque nimis simplex est.

Nucleus centralis est, sed systema securum etiam pendet a codice qui nucleum parat, primum munus spatii usoris incipit, formas auctoritatis definit, et facultates distribuit.

In EriX, nucleus expresse intra TCB est.

Nucleus tabulas facultatum spatii nuclei, statum scheduling, et opes machinae possidet. Handoff a bootloader ad nucleum validat, munus radicis creat, obiecta nuclei fundamentalia administrat, et puncta ingressus trap, syscall, atque interruptorum architecturae propria exponit.

Si nucleus verificationes facultatum, iura endpoint, fines spatiorum allocationis, aut tempora vitae obiectorum cogere non potest, exemplar isolationis systematis deficit.

Sed nucleus non est tota narratio.


Codex initii quoque fidatus est

Bootloader ante nucleum currit.

Id eum securitati criticum facit.

In EriX, bootloader responsalis est ut boot.img signatam onerare et verificare, imagines nuclei et officiorum parsere, structuram handoff deterministicam aedificare, et imperium ad nucleum transferre.

Hoc bootloader in TCB ponit.

Bootloader auctoritatem a firmware datam per initium tenet et ultimum saltum in nucleum regit. Medium initii pro infido tractare debet, structuram imaginis et integritatem cryptographicam validare, binaria ELF male formata repudiare, et in ambiguitate fail closed.

Si bootloader imaginem corruptam accipit aut handoff inconsistentem aedificat, nucleus executionem ex fundamento iam compromisso incipere potest.

Ideo codex initii parvus, strictus, et taediosus esse debet.


Parseres fines TCB esse possunt

Parseres saepe in securitate systematum parvi aestimantur.

Eo ipso loco sedent ubi bytes infidi in structuram fidatam fiunt.

EriX plures crates parseris et ABI ut partes TCB aut TCB vicinas tractat:

  • lib-bootimg structuram boot.img, hashes, et signaturas parsit atque verificat
  • lib-elf binaria ELF64 validat antequam bootloader segmentis onerandis fidat
  • lib-handoff structuras handoff inter gradus initii versionatas validat
  • lib-ipc dispositiones nuntiorum IPC definit atque validat
  • lib-capabi genera facultatum, iura, constantes slot, et descriptoria translationis definit

Hae bibliothecae fortasse facultates runtime ipsae non tenent.

Id eas extra TCB non facit.

Si lib-bootimg imaginem initii mutatam accipit, bootloader codici fidere potest quem repudiare deberet. Si lib-elf exsecutabile male formatum accipit, catena initii bytes falsos onerare aut intervalla segmentorum invalida credere potest. Si lib-ipc nuntium male decodit, operatio perperam intellegi potest. Si lib-capabi politicam muneris nimis latam definit, officium auctoritatem accipere potest quam numquam tenere debet.

Codex purus adhuc codex fidatus esse potest.

Proprietas magna est has bibliothecas angustas esse. I/O non faciunt, politicam systematis non possident, et auctoritatem ambientem vitant. Munus earum est parsere, validare, et repudiare.


Officia spatii usoris partes fidatae esse possunt

Politicam e nucleo movere politicam evanescere non facit.

Politicam movet in officia spatii usoris ubi separatim segregari, cohiberi, et inspici potest.

In EriX, rootd est prima auctoritas spatii usoris politicam ferens. Handoff a nucleo ad radicem validat, configurationem initii parsit, DAG initii exsequitur, et facultates minimi privilegii ad officia necessaria transfert.

rootd magnum privilegium habet.

Sed non est nucleus.

Haec distinctio magni momenti est. rootd fiditur pro politica primaeva et distributione facultatum, sed obiecta nuclei non implet nec auctoritatem machinae directe possidet. Munus eius est auctoritatem secundum contractus initii explicitos distribuere.

Alia officia quoque intra fines fidatos proprios sedent:

  • procd fiditur pro orchestratione vitae processuum
  • deviced fiditur pro politica moderatorum et traditione facultatum moderatorum
  • vfsd fiditur ut finis publicus spatii nominum systematis fasciculorum
  • praebitores privati systematis fasciculorum tantum pro munere praebitoris fiduntur

Hoc non significat illa officia parvi momenti esse.

Significat auctoritatem eorum angustiorem esse quam plenam auctoritatem nuclei.


Superficies impetus in consilio monolithico

In nucleo monolithico, multa subsystemata unum spatium allocationis privilegiatum communicant.

Hoc vias celeres simplices facere potest, sed etiam superficiem impetus latam creat.

Vulnerabilitas in quolibet subsystemate intra nucleum in vulnerabilitatem nuclei mutari potest:

  • metadata systematis fasciculorum male formata
  • tractatio fasciculorum retis vitiosa
  • codex moderatoris machinae non tutus
  • descriptoria ferramenti inopinata
  • condiciones certaminis in statu nuclei communi

Oppugnatori una tantum via in codicem privilegiatum opus est.

Hoc non significat nucleos monolithicos securos esse non posse. Possunt diligenter exstrui, corroborari, fuzzing subici, sandboxing accipere, et late inspici.

Sed architectura a superficie privilegiata magna incipit.

Argumentum securitatis deinde explicare debet quomodo illa superficies magna regatur.


Superficies impetus in consilio micronuclei

Micronucleus formam superficiei impetus mutat.

Nucleus adhuc interfaces criticas exponit:

  • syscalls
  • traditionem IPC
  • scheduling
  • operationes spatiorum allocationis
  • operationes facultatum
  • tractationem interruptorum

Illae interfaces rectae esse debent.

Sed officia altioris gradus non automatice cum pleno privilegio nuclei currunt. Si praebitor systematis fasciculorum medium male formatum tractat, propositum est ut vitium intra auctoritatem illius praebitoris maneat. Si moderator deficit, propositum est eum deficere tantum cum auctoritate machinae quae explicite data est.

Hoc unam superficiem privilegiatam magnam in plures superficies auctoritatis minores vertit.

Id non statim simplicius est.

Tantum operatur si fines stricti sunt et auctoritas per eos transmissa angusta est.


Quomodo EriX TCB minuat

EriX magnitudinem TCB et superficiem impetus per plures electiones consilii minuit.

1. Nucleus politica minima

Nucleus EriX mechanismis, non politicae systematis, responsabilis est.

Tractat:

  • obiecta nuclei fundamentalia
  • semantica facultatum
  • scheduling et executionem munerum
  • primitivas spatiorum allocationis
  • IPC et distributionem endpoint
  • puncta ingressus interruptorum et exceptionum

Non possidet:

  • politicam initii officiorum
  • politicam orchestrationis processuum
  • politicam spatii nominum systematis fasciculorum
  • politicam activationis moderatorum
  • politicam allocationis memoriae altioris gradus

Hoc nucleum intentum servat in isolatione cogenda, non in tota forma systematis decidenda.


2. Facultates explicitae pro auctoritate ambiente

EriX auctoritatem per facultates fingit.

Elementum agere potest solum si facultatem cum iuribus requisitis tenet. Nucleus referencias facultatum in usu validat, iura endpoint tempore distributionis syscall cogit, et translationes pro eventibus explicitis tractat.

Hoc vitat fidere nominibus globalibus aut numeris slot conventionalibus ut permissione.

Numerum slot scire non est auctoritas.

Rectam facultatem in CSpace locali tenere est auctoritas.

Haec distinctio centralis est ad TCB minuendam: codex fidatus non debet permissiones ex statu globali coniectare cum auctoritas explicite feratur.


3. Angusta endpoint imperii nuclei

Consilia systematum operativorum priora saepe imperium post interfaces privilegiatas latas congerunt.

EriX contrariam viam capit.

Runtime hodiernum familias endpoint imperii nuclei angustas pro operibus certis utitur:

  • time
  • interrupts
  • hotplug
  • PCI configuration
  • console and framebuffer
  • COM1 I/O
  • i8042 I/O
  • memory retyping
  • VSpace mapping
  • pager fault resolution
  • process control
  • ACPI reads

Initium runtime ordinarium officiis unum endpoint radicis latum pro omnibus operationibus nuclei non tradit.

Pro eo, officium familiam endpoint propriam accipit qua indiget. timed imperium temporis accipit. irqd imperium interruptorum accipit. drv-serial I/O specificum COM1 accipit. drv-i8042 I/O specificum i8042 accipit. drv-acpi auctoritatem legendi ACPI accipit.

Hoc et interface fidatam et damnum ex abusu ortum angustat.


4. Contractus initii exacti

EriX translationem facultatum initii ut contractum tractat, non ut consilium solum indicatum.

Involucra initii describunt quas facultates officium accipere debeat, ubi apparere debeant, et quae iura ferre debeant.

Officia slots locales re vera acceptos validant antequam se parata declarant. Translationes endpoint examinantur per slot fontis, slot destinatum, iura, et genus endpoint exspectatum. Translationes endpoint ignotae, falsae, aut superfluae repudiantur.

Hoc commune vitium auctoritatis impedit:

“Slot occupatus est, ergo res recta esse debet.”

In EriX, sola occupatio slot non est probatio auctoritatis.

Facultas formae auctoritatis declaratae congruere debet.


5. Creatio processuum gradibus divisa

Creatio processuum operatio magni periculi est quia executionem, spatia allocationis, endpoint, et auctoritatem initialem coniungit.

EriX creationem processuum runtime per creationem filii gradibus divisam ducit, non per operationem veterem creationis directae.

Fluxus gradibus divisus explicitus est:

  1. filium staged crea
  2. concessionem institutionis et alias endpoint filii accipe
  3. fasciculum facultatum initii declaratum institue
  4. processum incipe tantum postquam populatio completa est

Nucleus initium processus negat dum concessiones institutionis vivae adhuc illum gradum filii petunt.

Hoc impedit processus ex parte tantum populatos ne cum statu auctoritatis ambiguo currere possint.


6. Auctoritas moderatorum muneri propria

Moderatores fons magni periculi in systematibus operativis sunt.

EriX omne imperium ferramenti non tractat ut unam permissionem latam.

Auctoritas moderatoris muneri propria est:

  • drv-serial auctoritatem I/O tantum COM1 accipit
  • drv-i8042 auctoritatem I/O tantum i8042 accipit
  • drv-acpi auctoritatem legendi ACPI accipit
  • probed auctoritatem legendi configurationem PCI accipit
  • drv-virtio-block device frame validatum accipit potius quam auctoritatem memoriae generalem

deviced politicam moderatorum administrat, sed non simpliciter omni moderatori facultatem genericam imperii machinae tradit. Institutione facultatum initii explicita et superficiebus auctoritatis muneri propriis utitur.

Hoc effectum vitiorum moderatorum in TCB limitat.


7. Memoria machinae genus facultatis separatum est

Memoria machinae periculosa est quia statum ferramenti directe afficere potest.

EriX memoriam machinae a RAM ordinaria per CAP_TYPE_DEVICE_FRAME distinguit.

Via repono frame MMIO e BAR derivatum pro deviced derivare potest, et deviced tantum frame machinae derivatum in fasciculum initii moderatoris instituere potest.

Ille frame machinae non tractatur ut memoria ordinaria allocabilis.

Hoc valet quia memoriam machinae cum frame ordinario confundere exemplar auctoritatis dilataret et ratiocinationem de tutela memoriae difficiliorem faceret.


8. Dependentiae clean-room

Dependentiae TCB tacite ampliare possunt.

Si codex fidatus a bibliotheca externa generalis usus pendet, systema hereditare potest:

  • vias codicis quibus non indiget
  • assumptiones quae systemati operativo non congruunt
  • mores parseris nimis permissivos
  • periculum renovationis et supply-chain

EriX crates tertiarum partium vitat et bibliothecas criticas intra ipsum proiectum implet.

Hoc laborem implementationis auget, sed finem fidatum visibilem servat. Cum parser, crate ABI, aut auxilium crypto pars viae initii aut auctoritatis est, pars superficiei recensionis systematis est.


9. Mores fail-closed

Parva TCB non satis est si defectus ambiguus est.

EriX conatur defectus securitati sensitivos explicitos et terminales facere:

  • handoff initii male formatum initium sistit
  • versiones non sustentatae repudiantur
  • auctoritas initii invalida readiness impedit
  • genera endpoint falsa validatione deficiunt
  • defectus initii officii requisiti progressionem sistit
  • defectus bootstrap post initium teardown fail-closed movent

Fail closed magni momenti est quia heuristicae recuperationis saepe politica occulta fiunt.

Politica occulta mores fidatos systematis ampliat.


Minus non significat triviale

TCB minuere consilium systematis facile non facit.

Saepe consilium magis explicitum facit.

Pro omni logica in uno spatio allocationis privilegiato posita, systema definire debet:

  • quod elementum unamquamque decisionem possideat
  • quam auctoritatem unumquodque elementum accipiat
  • quomodo auctoritas transferatur
  • quomodo defectus nuntientur
  • quomodo initium partiale purgetur
  • quomodo facultates vetustae invalidantur aut deponantur

Hoc plus laboris initio poscit.

Sed systema parit in quo argumentum securitatis facilius inspicitur.

Quaestio fit:

Cui componenti fidendum est pro hac proprietate certa?

Haec quaestio melior est quam:

Estne totus nucleus rectus?


Prospectus practicus TCB in EriX

Prospectus practicus TCB EriX stratis compositus est.

In imo est catena initii:

  • bootloader
  • verificatio imaginis initii
  • via legendi/verificandi lib-bootimg
  • parsing ELF
  • validatio handoff

Deinde nucleus:

  • obiecta facultatum
  • coactio CSpace et VSpace
  • IPC et iura endpoint
  • scheduling et tractatio trap
  • traditio interruptorum

Deinde spatium usoris primum fidatum:

  • rootd pro politica initii et distributione facultatum
  • procd pro vita processuum
  • deviced pro politica moderatorum
  • bibliothecae ABI et validationis selectae inter officia communicatae

Deinde officia fidata angustiora:

  • mediatio spatii nominum systematis fasciculorum in vfsd
  • praebitores backend privati
  • officia input, console, logging, block, time, et interruptorum

Non omnia haec componentia aeque privilegiata sunt.

Id ipsum est propositum.

EriX conatur unum mundum fidatum planum vitare. Pro eo, unumquodque elementum fidendum esse debet tantum pro munere documentato suo et tantum cum facultatibus quas explicite accepit.


Prospiciendo

Disputatio de TCB naturaliter ad linguam implementationis ducit.

Si codex fidatus parvus, explicitus, et inspiciendus esse debet, tunc memoriae tutela valet. Fines unsafe, rectitudo parserum, dispositio datorum, et disciplina necessaria cum prope ferramentum laboratur etiam valent.

Proximum scriptum examinabit cur EriX praecipue in Rust scriptus sit, quid Rust pro evolutione nuclei solvat et non solvat, et quomodo cum via C tradita in programmatione systematum comparetur.