ABSTRACT HACL * är ett verifierat portabelt C kryptografiskt bibliotek som implementerar moderna kryptografiska primitiva funktioner som ChaCha20 och Salsa20 krypteringsalgoritmer, Poly1305 och HMAC meddelandeautentisering, SHA-256 och SHA-512 hash funktioner, Curve25519 elliptiska kurvan, och Ed25519 signaturer. HACL * skrivs i F * programmeringsspråket och sammanställs sedan till läsbar C-kod. F * källkoden för varje kryptografisk primitiv verifieras för minnessäkerhet, begränsning mot timing sidokanaler, och funktionell korrekthet med avseende på en koncis hög nivå specifikation av den primitiva härledd från dess publicerade standard. Översättningen från F * till C bevarar dessa egenskaper och den genererade C-koden kan själv sammanställas via CompCert verifierad C-kompilator eller mainstream kompilatorer som GCC eller CLANG. När de kompileras med GCC på 64-bitars plattformar, våra primitiva är lika snabba som de snabbaste rena C implementationer i OpenSSL och Libnatrium, betydligt snabbare än referens C-koden i TweetNaCl, och mellan 1,1x-5.7x långsammare än den snabbaste handoptimerade vektoriserad monteringskoden i SUPERCOP. HACL * implementerar NaCl kryptografisk API och kan användas som en drop-in ersättning för NaCl bibliotek som Libnatrium och TweetNaCl. HACL * tillhandahåller de kryptografiska komponenterna för en ny obligatorisk chiffersuite i TLS 1.3 och håller på att utvecklas som den viktigaste kryptografiska leverantören för miTLS verifierad implementering. Primitives från HACL * är också integreras i Mozillas NSS kryptografiska bibliotek. Våra resultat visar att det nu är praktiskt att skriva snabbt, verifierat och användbart C-kryptografiska bibliotek. Cryptographic bibliotek ligger i hjärtat av den betrodda datorbas av Internet, och följaktligen, de hålls till en högre standard av korrekthet, robusthet och säkerhet än andra distribuerade program. Även mindre fel i kryptografisk kod resulterar vanligtvis i CVEs och programvaruuppdateringar. Till exempel har OpenSSL sedan 2016 utfärdat 11 CVEs 1 för fel i sina kärnkryptografiska primitiver, inklusive 6 minnessäkerhetsfel, 3 sidokanalläckage och 2 felaktiga bignumberäkningar. Sådana brister kan verka svåra att utnyttja först, men som Brumley et al. [24] visade att även en ofarlig aritmetisk bugg som gömmer sig djupt inne i en elliptisk 1 https://www.openssl.org/news/vulnerabilitys.html Tillstånd att göra digitala eller hårda kopior av en del av eller allt detta arbete för personligt bruk eller klassrumsbruk beviljas utan avgift under förutsättning att kopior inte görs eller distribueras för vinst eller kommersiell fördel och att kopior bär detta meddelande och den fullständiga citeringen på första sidan. Upphovsrätt till tredje parts delar av detta arbete måste hedras. För all annan användning, kontakta ägaren/författarna. CCS '17, 30 oktober 2017, Dallas, TX, USA © 2017 Copyright som innehas av ägare/författare. Europaparlamentets och rådets förordning (EU) nr 1305/2013 av den 11 december 2013 om inrättande av Horisont 2020 – ramprogrammet för forskning och innovation (2014–2020) och om upphävande av beslut nr 1982/2006/EG (EUT L 347, 20.12.2013, s. https://doi.org/10.1145/3133956.3134043 kurva genomförande kan göra det möjligt för en angripare att effektivt hämta ett offers långsiktiga privata nyckel, vilket leder till en kritisk sårbarhet. Fel i kryptografisk kod har historiskt sett upptäckts genom en kombination av manuell inspektion, testning och fuzzing, på bästa sätt. Istället för att hitta och fixa buggar en efter en, går vi med i Brumley et al. och ett antal nya verk [8, 12, 25, 29, 37] som förespråkar användning av formell verifiering för att matematiskt bevisa frånvaron av hela klasser av potentiella fel. I den här artikeln kommer vi att visa hur man implementerar ett kryptografiskt bibliotek och bevisa att det är minne säkert och funktionellt korrekt med avseende på dess publicerade standardspecifikation. Vårt mål är att skriva verifierad kod som är lika snabb som toppmoderna C-implementeringar, samtidigt som standard motåtgärder till timing sidokanal attacker.
Zinzindohoue m.fl. REF utvecklar HACL*, ett portabelt C-bibliotek som implementerar många moderna kryptografiska primitiver.
HACL*: A Verified Modern Cryptographic Library
{'venue': "CCS '17", 'journal': None, 'mag_field_of_study': ['Computer Science']}