Vi presenterar utformningen och genomförandet av en kompilator som, med tanke på hög nivå flerpartisessionsbeskrivningar, genererar anpassade kryptografiska protokoll. Våra sessioner anger i förväg arrangerade mönster för meddelandeutbyten och dataåtkomst mellan distribuerade deltagare. De ger varje deltagare starka säkerhetsgarantier för alla sina meddelanden. Vår kompilator genererar kod för att skicka och ta emot dessa meddelanden, med kryptografiska operationer och kontroller, för att upprätthålla dessa garantier mot alla motståndare som kan styra både nätverket och vissa sessionsdeltagare. Vi verifierar att den genererade koden är säker genom att förlita sig på en ny typ av system för kryptografi. De flesta av bevisen utförs av mekaniserad typkontroll och förlitar sig inte på riktigheten av vår kompilator. Vi får de starkaste session säkerhetsgarantier hittills i en modell som fångar de körbara detaljerna i protokollkod. Vi illustrerar och utvärderar vår strategi på en rad protokoll inspirerade av webbtjänster. Med hjälp av moderna programmeringsverktyg kan man ibland designa, utveckla och distribuera komplexa distribuerade protokoll på några timmar, och till exempel förlita sig på automatiserade proxygeneratorer för att snabbt exponera befintliga applikationer som nätverksanslutna tjänster. Det är svårare att uppnå tillämpningssäkerhet enligt realistiska antaganden om nät- och fjärrparterna. Problemet är att allmänt tillgängliga protokoll för kryptografisk kommunikation (t.ex. TLS eller IPSEC) fungerar på en lägre nivå. De ger äkthets- och sekretessgarantier endast för meddelanden som utbyts mellan två webbadresser eller IP-adresser, men lämnar tolkningen av dessa meddelanden och adresser till programprogrammeraren. I synnerhet måste alla garantier som omfattar mer än två parter (sa, kunder, gateways och webbservrar) noggrant fastställas genom att länka garantier på lägre nivå på meddelanden, eller genom att skikta ad hoc-kryptografiska mekanismer i applikationslagret, till exempel genom att inbädda signaturer i meddelandens nyttolaster. I stället för handgjorda protokollkonstruktioner förespråkar vi användning av kompilatorer och automatiserade verifieringsverktyg för att systematiskt generera säkra, effektiva kryptografiska protokoll från beskrivningar på hög nivå. Vi beskriver vår strategi när det gäller utformning, genomförande och säkerhetskontroll. Flerpartssessioner Flerpartssessioner, även kallade sessionstyper, har visat sig vara ett elegant sätt att specificera strukturerade kommunikationsprotokoll mellan distribuerade parter. Vi definierar ett språk för att ange flerpartssessioner. Detta språk har en tydlig uppfattning om kontrollflöde, uttryckt som asynkrona meddelanden, med en delad, distribuerad butik som kan uppdateras och läsas under kommunikation, samt dynamiskt urval av ytterligare parter att ansluta sig till protokollet. Den globala butiken är föremål för finkornig läs-/skrivåtkomstkontroll och kan användas för att selektivt dela och dölja data, och för att åta sig värden som initialt förblindas och senare avslöjas under protokollutförande. Vår design möjliggör enkla, abstrakta resonemang om autentisering och sekretessegenskaper för sessioner. Till exempel kan de korrespondensegenskaper som traditionellt fastställts för kryptografiska protokoll avläsas bort sessionsspecifikationer. Å andra sidan försöker våra sessioner inte fånga de lokala deltagarnas beteende: applikationsprogrammeraren förblir ansvarig för att bestämma vilka sessioner som ska gå med (och i synnerhet vilka rektorer som ska acceptera som fjärrkollegor), vilket meddelande som ska skickas (när sessionen erbjuder ett val), vilka värden som ska skrivas och hur mottagna meddelanden ska behandlas. Från sessioner till kryptografiska protokoll Medan mycket arbete har gjorts på sessionstyper och uttrycksfullhet, tror vi att våra är de första att skydda sessionsutförande integritet via den systematiska generationen av kryptografiska protokoll. Vi implementerar en kompilator från sessionsspråket till anpassade protokoll, kodade som ML-moduler, som kan kopplas till applikationskoden för varje part i protokollet. Dessa moduler kan sammanställas både med F# [Syme 2009 22nd IEEE Computer Security Foundations Symposium
I REF föreslår författarna ett språk på hög nivå för att specificera flerpartssessioner och en kompilator som översätter dessa specifikationer på hög nivå till de kryptografiska protokoll som implementerar dem.
Cryptographic Protocol Synthesis and Verification for Multiparty Sessions
{'venue': '2009 22nd IEEE Computer Security Foundations Symposium', 'journal': '2009 22nd IEEE Computer Security Foundations Symposium', 'mag_field_of_study': ['Computer Science']}