NaCl (pronunciato “salt”) è una nuova libreria software ad alta velocità e facile da usare per la comunicazione in rete, la crittografia, la decrittografia, le firme, ecc. L’obiettivo di NaCl è di fornire tutte le operazioni fondamentali necessarie per costruire strumenti crittografici di livello superiore.
Naturalmente, esistono già altre librerie per queste operazioni fondamentali.NaCl avanza lo stato dell’arte migliorando la sicurezza, migliorando l’usabilità e migliorando la velocità.
Il seguente rapporto contrasta NaCl con altre librerie da una prospettiva di sicurezza:(PDF)Daniel J. Bernstein, Tanja Lange, Peter Schwabe, “The security impact of a new cryptographic library”.Pagine 159-176 inProceedings of LatinCrypt 2012, edited by Alejandro Hevia and Gregory Neven,Lecture Notes in Computer Science 7533,Springer, 2012.ISBN 978-3-642-33480-1.
Il seguente rapporto è stato creato per Research Plaza e fornisce un’introduzione a NaCl per un pubblico più ampio:(PDF)
Caratteristiche imminenti
Le principali caratteristiche della prossima versione di NaCl: supporto PIC completo, per una facile integrazione in altri linguaggi; firme Ed25519 (attualmente disponibili in SUPERCOP); ottimizzazioni NEON.
Contribuenti
Il team di sviluppo NaCl consiste in Daniel J. Bernstein (University of Illinois at Chicago e Technische Universiteit Eindhoven),Tanja Lange (Technische Universiteit Eindhoven) e Peter Schwabe (Radboud Universiteit Nijmegen).
NaCl è stato avviato nell’ambito del progetto CACE (Computer Aided Cryptography Engineering) finanziato dal Settimo programma quadro (FP7) della Commissione europea, numero di contratto ICT-2008-216499, dal 2008 al 2010.Le attività di CACE erano organizzate in diversi Work Packages (WPs); NaCl era il compito principale del WP2, “Accelerating Secure Networking”.Il lavoro su NaCl alla Technische Universiteit Eindhoven tra il 2008 e il 2010 è stato sponsorizzato da CACE.
NaCl beneficia della stretta collaborazione con altri due progetti.L’API NaCl è basata su, e ha influenzato, l’API SUPERCOP (System for Unified Performance Evaluation Relatedto Cryptographic Operations and Primitives) sviluppata per il progetto eBACS (ECRYPT Benchmarking of Cryptographic Systems).Molti degli algoritmi e delle implementazioni usati in NaCl sono stati sviluppati come parte del progetto High-Speed Cryptography di Daniel J. Bernstein finanziato dalla U.S. National Science Foundation, sovvenzione numero 0716498, e il successivo progetto Higher-Speed Cryptography finanziato dalla U.S. National Science Foundation, sovvenzione numero 1018836.Il lavoro su NaCl all’Università dell’Illinois a Chicago è stato sponsorizzato da queste sovvenzioni. “Tutte le opinioni, i risultati e le conclusioni o le raccomandazioni espresse in questo materiale sono quelle dell’autore(i) e non riflettono necessariamente le opinioni della National Science Foundation.”
Diverse implementazioni in NaCl sono parzialmente o interamente di terze parti.La portabilità di NaCl si basa sull’implementazione ref di Curve25519scritta da Matthew Dempsky (Mochi Media, ora Google).Dal 2009 al 2011 la velocità di NaCl sulle comuni CPU Intel/AMD si basava sulle implementazioni donna e donna_c64 di Curve25519 scritte da Adam Langley (Google).Le più recenti implementazioni di Curve25519 e Ed25519 erano un lavoro comune con Niels Duif (Technische Universiteit Eindhoven) e Bo-Yin Yang (Academia Sinica).L’implementazione core2 di AES era un lavoro comune con Emilia Käsper (Katholieke Universiteit Leuven, ora Google).