NaCl (pronunciado «salt»)es una nueva biblioteca de software de alta velocidad y fácil de usar para la comunicación en red, el cifrado, el descifrado, las firmas, etc.El objetivo de NaCl es proporcionar todas las operaciones básicas necesarias para construir herramientas criptográficas de nivel superior.
Por supuesto, ya existen otras bibliotecas para estas operaciones básicas.NaCl avanza en el estado del arte mediante la mejora de la seguridad, la mejora de la usabilidad y la mejora de la velocidad.
El siguiente informe contrasta NaCl con otras bibliotecas desde una perspectiva de seguridad:(PDF)Daniel J. Bernstein, Tanja Lange, Peter Schwabe, «El impacto de seguridad de una nueva biblioteca criptográfica».Páginas 159-176 enProceedings of LatinCrypt 2012, editado por Alejandro Hevia y Gregory Neven,Lecture Notes in Computer Science 7533,Springer, 2012.ISBN 978-3-642-33480-1.
El siguiente informe fue creado para Research Plazay ofrece una introducción a NaCl para un público más amplio:(PDF)
Próximas características
Las principales características de la próxima versión de NaCl:soporte completo de PIC, para una fácil integración en otros lenguajes;firmas Ed25519 (actualmente disponibles en SUPERCOP);optimizaciones NEON.
Contribuidores
El equipo principal de desarrollo de NaCl está formado porDaniel J. Bernstein (Universidad de Illinois en Chicago y Technische Universiteit Eindhoven),Tanja Lange (Technische Universiteit Eindhoven),y Peter Schwabe (Radboud Universiteit Nijmegen).
NaCl se inició en el marco del proyectoCACE (Computer Aided Cryptography Engineering)financiado por el Séptimo Programa Marco (FP7) de la Comisión Europea,con el número de contrato ICT-2008-216499,que se desarrolló entre 2008 y 2010.Las actividades de CACE se organizaron en varios paquetes de trabajo (WPs); NaCl fue la tarea principal del WP2, «Accelerating Secure Networking».El trabajo en NaCl en la Technische Universiteit Eindhoven entre 2008 y 2010 fue patrocinado por CACE.
NaCl se beneficia de una estrecha colaboración con otros dos proyectos.La API de NaCl se basa en la API SUPERCOP (System for Unified Performance Evaluation Relatedto Cryptographic Operations and Primitives) desarrollada por el proyecto eBACS (ECRYPT Benchmarking of Cryptographic Systems) y ha influido en ella.Muchos de los algoritmos e implementaciones utilizados en NaCl se desarrollaron como parte del proyecto High-Speed Cryptography de Daniel J. Bernstein, financiado por la National Science Foundation de Estados Unidos, con el número de subvención 0716498, y el proyecto posterior Higher-Speed Cryptography, financiado por la National Science Foundation de Estados Unidos, con el número de subvención 1018836.Las opiniones, resultados y conclusiones o recomendaciones expresadas en este material son las del autor o autores y no reflejan necesariamente los puntos de vista de la National Science Foundation.»
Varias de las implementaciones de NaCl son parcial o totalmente de terceros.La portabilidad de NaCl se basa en la implementación ref de Curve25519 escrita por Matthew Dempsky (Mochi Media, ahora Google).Desde 2009 hasta 2011, la velocidad de NaCl en CPUs Intel/AMD comunes se basaba en las implementaciones donna y donna_c64 de Curve25519 escritas por Adam Langley (Google).Las implementaciones más recientes de Curve25519 y Ed25519 fueron un trabajo conjunto con Niels Duif (Technische Universiteit Eindhoven)y Bo-Yin Yang (Academia Sinica).La implementación core2 de AES fue un trabajo conjunto con Emilia Käsper (Katholieke Universiteit Leuven, ahora Google).