Ett antal programmeringsspråk använder rika typsystem för att verifiera säkerhetsegenskaper kod. Vissa av dessa språk är avsedda för källprogrammering, men program skrivna på dessa språk sammanställs utan uttryckliga säkerhetsbevis, vilket begränsar deras användbarhet i inställningar där bevis är nödvändiga, t.ex. bevisbärande behörighet. Andra språk innehåller explicita bevis, men dessa är i allmänhet lambda calculi inte avsedd för källprogrammering, som måste ytterligare sammanställas till en körbar form. Ett språk som lämpar sig för källprogrammering och som stöds av en kompilator som möjliggör end-to-end-verifiering saknas. I den här artikeln presenterar vi en typbevarande kompilator som översätter program skrivna i FINE, ett funktionellt språk på källnivå med beroende finesser och affinetyper, till DCIL, en ny förlängning av.NET Common Intermediate Language. FINE är typkontrollerad med hjälp av en extern SMT-lösning för att minska bevisbördan för källprogrammerare. Vi extraherar explicita LCF-stil bevis termer från lösaren och bär dessa bevis termer i sammanställningen till DCIL, vilket tar bort lösaren från den betrodda datorbas. Explicit bevis gör det möjligt för DCIL att användas i ett antal viktiga scenarier, inklusive verifiering av mobil kod, bevisbärande tillstånd, och evidensbaserad revision. Vi rapporterar om vår erfarenhet med hjälp av FINE för att bygga referensskärmar för flera applikationer, allt från en plugin-baserad e-postklient till en konferenshanteringsserver.
REF utvecklar en typbevarande kompilator från Fine, ett ML-liknande språk med förfiningsformer i stället för fullständiga spektrumberoende typer, till DCIL, en typad variant av.NET Common Intermediate Language med typnivåberäkning.
Type-preserving compilation of end-to-end verification of security enforcement
{'venue': "PLDI '10", 'journal': None, 'mag_field_of_study': ['Computer Science']}