La verifica formale del software e dei compilatori è stata utilizzata per escludere grandi dimensioni
classi di problemi critici per la sicurezza, ma rischio di informazioni involontarie
le perdite hanno ricevuto molta meno considerazione. È un requisito fondamentale per
specifiche formali per lasciare alcuni dettagli del comportamento di un sistema non specificati
in modo da poter accogliere futuri cambiamenti implementativi, eppure lo è
ci si aspettava tuttavia che tali scelte non venissero effettuate sulla base della riservatezza
informazioni gestite dal sistema. Questo documento formalizza tale nozione utilizzando
onnisemantica e semplici asserzioni a copia singola, dare per la prima volta a
specificazione di cosa significa per un programma non deterministico essere
tempo costante o più in generale per evitare perdite (una parte di) i suoi input. Usiamo
questa teoria per dimostrare l'esecuzione senza perdite di dati delle routine crittografiche principali
compilato dal codice macchina Bedrock2 C al RISC-V, mostrando che il liscio
l'omnisemantica dell'esperienza di specificazione e prova prevede il nondeterminismo
si estende alle proprietà a tempo costante nella stessa impostazione. Studiamo anche le varianti
del contratto chiave tra programmatore e compilatore, evidenziando le trappole della tentazione
semplificazioni e sottili conseguenze del modo in cui gli input sono non deterministici
le scelte sono limitate. I nostri risultati sono supportati da una logica di programma modulare e
teoremi di correttezza del compilatore, e si integrano in un accurato end-to-end
teorema nell'assistente alla dimostrazione di Coq.
Questo articolo esplora i giri e le loro implicazioni.
Scarica PDF:



