NaCl: Networking and Cryptography library


Computer Aided Cryptography Engineering
Introduction
Features
Installation
Internals
Validation
Public-key cryptography:
Authenticated encryption
Scalar multiplication
Secret-key cryptography:
Authenticated encryption
Encryption
Authentication
One-time authentication
Low-level functions:
Hashing
String comparison

Introduction

NaCl (pronounced "salt") is a new easy-to-use high-speed software library for network communication, encryption, decryption, signatures, etc. NaCl's goal is to provide all of the core operations needed to build higher-level cryptographic tools.

Of course, other libraries already exist for these core operations. NaCl advances the state of the art by improving security, by improving usability, and by improving speed.

Contributors

NaCl is part of the CACE (Computer Aided Cryptography Engineering) project funded by the European Commission's Seventh Framework Programme (FP7), contract number ICT-2008-216499. CACE activities are organized into several Work Packages (WPs). NaCl is the main task of CACE WP2, "Accelerating Secure Networking," led by Tanja Lange (at Technische Universiteit Eindhoven) and Daniel J. Bernstein (at the University of Illinois at Chicago, currently visiting Eindhoven).

NaCl benefits from close collaboration with two other projects. The NaCl API is based on, and has influenced, the SUPERCOP (System for Unified Performance Evaluation Related to Cryptographic Operations and Primitives) API developed for the eBACS (ECRYPT Benchmarking of Cryptographic Systems) project. Many of the algorithms used in NaCl were developed as part of Daniel J. Bernstein's High-Speed Cryptography project funded by the U.S. National Science Foundation, grant number ITR-0716498. "Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation."

Emilia Käsper at Katholieke Universiteit Leuven and Peter Schwabe at Technische Universiteit Eindhoven wrote the fast AES implementations used in C NaCl.

Adam Langley at Google wrote the donna and donna_c64 implementations of Curve25519 in C NaCl and a prototype Python NaCl wrapper around C NaCl.

Matthew Dempsky at Mochi Media wrote the ref implementation of Curve25519 in C NaCl and reference implementations of many functions in Python NaCl.

Version

This is version 2010.08.30 of the index.html web page.