Jump to content

NaCl (software)

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by A.schoepe (talk | contribs) at 06:25, 25 August 2016 (Alternative implementation). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Not to be confused with Google Native Client.
NaCl
Original author(s)Daniel J. Bernstein, Tanja Lange, Peter Schwabe
Initial release2008; 16 years ago (2008)
Operating systemUNIX-like
Licensepublic domain
Websitenacl.cr.yp.to

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".[1]

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[2] and Peter Schwabe.[3] The main goal while creating NaCl, according to the paper, was to "avoid various types of cryptographic disasters suffered by previous cryptographic libraries".[4]

Basic functions

Public-key cryptography

Secret-key cryptography

Low-level functions

Key features

  • 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.

Implementations

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

See also

References

  1. ^ "NaCl: Networking and Cryptography library".
  2. ^ "Tanja Lange's Homepage".
  3. ^ "Peter Schwabe's Homepage".
  4. ^ https://cr.yp.to/highspeed/coolnacl-20120725.pdf
  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".