NaCl (ausgesprochen „salt“) ist eine neue, leicht zu bedienende Hochgeschwindigkeits-Softwarebibliothek für Netzwerkkommunikation, Verschlüsselung, Entschlüsselung, Signaturen usw.
Das Ziel von NaCl ist es, alle Kernoperationen zur Verfügung zu stellen, die für den Aufbau von kryptographischen Werkzeugen auf höherer Ebene erforderlich sind.
Natürlich gibt es bereits andere Bibliotheken für diese Kernoperationen.NaCl bringt den Stand der Technik voran, indem es die Sicherheit, die Benutzerfreundlichkeit und die Geschwindigkeit verbessert.
Der folgende Bericht vergleicht NaCl mit anderen Bibliotheken aus einer Sicherheitsperspektive:(PDF)Daniel J. Bernstein, Tanja Lange, Peter Schwabe, „The security impact of a new cryptographic library“.Pages 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.
Der folgende Bericht wurde für Research Plaza erstellt und gibt eine Einführung in NaCl für ein breiteres Publikum:(PDF)
Künftige Funktionen
Hauptfunktionen in der nächsten Version von NaCl:volle PIC-Unterstützung, für eine einfache Integration in andere Sprachen;Ed25519-Signaturen (derzeit in SUPERCOP verfügbar);NEON-Optimierungen.
Mitwirkende
Das NaCl-Kernentwicklungsteam besteht ausDaniel J. Bernstein (University of Illinois at Chicago und Technische Universität Eindhoven), Tanja Lange (Technische Universität Eindhoven) und Peter Schwabe (Radboud Universiteit Nijmegen).
NaCl wurde im Rahmen des CACE-Projekts (Computer Aided Cryptography Engineering) initiiert, das vom Siebten Rahmenprogramm der Europäischen Kommission (FP7) unter der Vertragsnummer ICT-2008-216499 von 2008 bis 2010 finanziert wurde.CACE-Aktivitäten waren in mehrere Arbeitspakete (WPs) gegliedert; NaCl war die Hauptaufgabe von WP2, „Accelerating Secure Networking“.
Die Arbeit an NaCl an der Technischen Universität Eindhoven zwischen 2008 und 2010 wurde von CACE gesponsert.
NaCl profitiert von der engen Zusammenarbeit mit zwei anderen Projekten.Die NaCl-API basiert auf der SUPERCOP-API (System for Unified Performance Evaluation Relatedto Cryptographic Operations and Primitives), die für das eBACS-Projekt (ECRYPT Benchmarking of Cryptographic Systems) entwickelt wurde, und hat diese beeinflusst.Viele der in NaCl verwendeten Algorithmen und Implementierungen wurden im Rahmen des von der U.S. National Science Foundation finanzierten Projekts High-Speed Cryptography (Zuschussnummer 0716498) und des von der U.S. National Science Foundation finanzierten Folgeprojekts Higher-Speed Cryptography (Zuschussnummer 1018836) von Daniel J. Bernstein entwickelt.Die Arbeit an NaCl an der University of Illinois in Chicago wurde durch diese Zuschüsse gefördert. „Alle in diesem Material geäußerten Meinungen, Erkenntnisse und Schlussfolgerungen oder Empfehlungen sind die des Autors/der Autoren und spiegeln nicht notwendigerweise die Ansichten der National Science Foundation wider.“
Einige der Implementierungen in NaCl stammen ganz oder teilweise von Dritten.Die Portabilität von NaCl beruht auf der Implementierung von Curve25519 , die von Matthew Dempsky (Mochi Media, jetzt Google) geschrieben wurde.Von 2009 bis 2011 beruhte die Geschwindigkeit von NaCl auf gängigen Intel/AMD-CPUs auf den donna- und donna_c64-Implementierungen von Curve25519, die von Adam Langley (Google) geschrieben wurden.
Die neuesten Implementierungen von Curve25519 und Ed25519 waren eine Gemeinschaftsarbeit mit Niels Duif (Technische Universiteit Eindhoven) und Bo-Yin Yang (Academia Sinica). Die core2-Implementierung von AES war eine Gemeinschaftsarbeit mit Emilia Käsper (Katholieke Universiteit Leuven, jetzt Google).