NaCl (software)

From Wikipedia, the free encyclopedia
Jump to: navigation, search
Original author(s) Daniel J. Bernstein, Tanja Lange, Peter Schwabe
Initial release 2008; 9 years ago (2008)
Operating system UNIX-like
License public domain[1]

NaCl (pronounced "salt") is an abbreviation for "Networking and Cryptography library", a public domain "...high-speed software library for network communication, encryption, decryption, signatures, etc".[2]

NaCl was created by the mathematician and programmer Daniel J. Bernstein who is best known for the creation of qmail and Curve25519. The core team also includes Tanja Lange[3] and Peter Schwabe.[4] The main goal while creating NaCl, according to the paper, was to "avoid various types of cryptographic disasters suffered by previous cryptographic libraries".[1]

Basic functions[edit]

Public-key cryptography[edit]

Secret-key cryptography[edit]

Low-level functions[edit]

Key features[edit]

  • No data flow from secrets to load addresses.
  • No data flow from secrets to branch conditions.
  • No padding oracles.
  • Centralizing randomness.
  • Avoiding unnecessary randomness.
  • Extremely high speed.


Reference implementation is written in C, often with several inline assembler. C++ and Python are handled as wrappers.[7]

NaCl has a variety of programming language bindings such as PHP,[8] and forms the basis for Libsodium, a cross-platform cryptography library created in 2013 which is API compatible with NaCl.

Alternative implementation[edit]

See also[edit]


  1. ^ a b "The security impact of a new cryptographic library" Daniel J. Bernstein, Tanja Lange, Peter Schwabe
  2. ^ "NaCl: Networking and Cryptography library". 
  3. ^ "Tanja Lange's Homepage". 
  4. ^ "Peter Schwabe's Homepage". 
  5. ^ "Hashing". 2010-08-30. Retrieved 2015-11-14. 
  6. ^ Bernstein, Daniel J. (10 March 2009). Cryptography in NaCl (PDF). 
  7. ^ "NaCl Internals". 
  8. ^ "NaCl PHP Extension". Github. 
  9. ^ "Libsodium". 
  10. ^ "TweetNaCl". 
  11. ^ "Tclers Wiki - NaCl for Tcl". 
  12. ^ "TweetNaCl". 

External links[edit]