Basis computandi fidata: cur magnitudo valeat
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-bootimgstructuramboot.img, hashes, et signaturas parsit atque verificatlib-elfbinaria ELF64 validat antequam bootloader segmentis onerandis fidatlib-handoffstructuras handoff inter gradus initii versionatas validatlib-ipcdispositiones nuntiorum IPC definit atque validatlib-capabigenera 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:
procdfiditur pro orchestratione vitae processuumdevicedfiditur pro politica moderatorum et traditione facultatum moderatorumvfsdfiditur 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:
- filium staged crea
- concessionem institutionis et alias endpoint filii accipe
- fasciculum facultatum initii declaratum institue
- 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-serialauctoritatem I/O tantum COM1 accipitdrv-i8042auctoritatem I/O tantum i8042 accipitdrv-acpiauctoritatem legendi ACPI accipitprobedauctoritatem legendi configurationem PCI accipitdrv-virtio-blockdevice 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:
rootdpro politica initii et distributione facultatumprocdpro vita processuumdevicedpro 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.