Logica di sicurezza
Logica di voto 2oo3 e un trip a latching che resta vero una volta attivato.
REQ-SF-001 · 002Il progetto di riferimento del voter porta nove funzioni di sicurezza — voto, latching, limitazione di slew rate, monitoraggio del trip, interblocchi e un misuratore di flusso con un confine in virgola mobile — attraverso tutti e tredici i gate, e riproduce ognuna su un Cortex-M4F emulato.

examples/voter è un progetto djsafe completo: un file di requisiti, le specifiche Lean a cui punta, e una sezione target che indica thumbv7em-none-eabihf sulla macchina QEMU netduinoplus2. È il progetto che viene consegnato a un valutatore esterno insieme a un pacchetto di evidenze.
Ogni requisito dice, in testo semplice, cosa deve fare la funzione — “L’uscita del voter deve essere vera se e solo se almeno due dei tre canali di ingresso sono veri” — e il suo testo normalizzato negli spazi bianchi è fissato tramite hash nelle evidenze, così un cambio di formulazione è un cambiamento che la build può vedere.
Logica di voto 2oo3 e un trip a latching che resta vero una volta attivato.
REQ-SF-001 · 002Un limitatore di slew rate bloccato a ±100 per step entro [−1000, 1000], un monitor di trip a due stati con isteresi, e un blocco di guadagno Q4.
REQ-SF-010 · 011 · 012Medie, rapporti, radici quadrate, moduli vettoriali e contatori modulo, inclusa l’aritmetica estesa i64 — certificata priva di panic.
REQ-SF-013 · 014Un interblocco di pressione che scatta all’abilitazione a ≥ 3000 e si azzera al reset sotto 2500, con la pressione nel caso peggiore mantenuta e un margine di sicurezza.
REQ-SF-015Un misuratore di flusso il cui valore del sensore entra come f32 IEEE-754 attraverso una conversione certificata solo-intera a Q4, e il cui margine esce come f32 convertito esattamente — nucleo a virgola fissa invariato.
REQ-SF-016I requisiti vengono analizzati con ID univoci; l’intero pacchetto Lean — specifiche, libreria di semantica, ogni teorema — si elabora e viene verificato dal kernel.
Ogni artefatto derivato da Lean viene rigenerato dai moduli appena verificati, e una funzione che non è ben formata viene rifiutata in esportazione.
L’IR, i sorgenti delle specifiche e la libreria di semantica vengono sottoposti a hash sia da Lean sia da Rust, e i due devono concordare.
Ogni requisito è soddisfatto da qualche funzione, e ogni funzione cita solo requisiti noti.
“9 funzioni identiche per AST tra sgen-a e sgen-b”, poi canoniche a livello di byte per entrambi.
Per ogni funzione, cinque teoremi sull’artefatto così come riletto dai byte distribuiti, verificati dal kernel Lean.
Vettori di riferimento Lean rispetto al codice compilato sull’host, poi per ogni funzione sul target emulato, con ogni ELF sottoposto a hash.
Certificati, matrice di tracciabilità, manifest back-to-back e trascrizione on-target assemblati in un unico pacchetto.
La guida alle evidenze fornisce a un valutatore cinque procedure che non dipendono dal report della pipeline stessa, ciascuna eseguita come scritto. Per flow_gauge: un terzo SHA-256 del sorgente delle specifiche corrisponde sia agli hash registrati sia all’intestazione del certificato; il certificato viene rieseguito attraverso il kernel con exit 0 e dipende solo da propext e Quot.sound; e l’ELF riprodotto a mano stampa “B2BT flow_gauge cases=406 failed=0 float_cases=78” con un hash uguale a quello nelle evidenze.
La guida è altrettanto esplicita sui limiti: la validità dei requisiti resta una revisione umana, nessuna affermazione riguarda i tempi o i limiti dello stack, e QEMU non è silicio.
Continua a esplorare