NaCl (software)

From Infogalactic: the planetary knowledge core
Jump to: navigation, search
Not to be confused with Google Native Client.
NaCl
Original author(s) Daniel J. Bernstein, Tanja Lange, Peter Schwabe
Initial release 2008; 16 years ago (2008)
Operating system UNIX-like
License public domain
Website nacl.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 disaster suffered by previous cryptographic libraries".

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.[6]

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

Alternative implementation

  • Libsodium[8]—a portable, cross-compilable, installable, packageable, API-compatible version of NaCl.
  • TweetNaCl[9]—a tiny C library, which fits in just 100 tweets (140 symbols each), but supports all NaCl functions.

See also

References

  1. Lua error in package.lua at line 80: module 'strict' not found.
  2. Lua error in package.lua at line 80: module 'strict' not found.
  3. Lua error in package.lua at line 80: module 'strict' not found.
  4. Lua error in package.lua at line 80: module 'strict' not found.
  5. Lua error in package.lua at line 80: module 'strict' not found.
  6. Lua error in package.lua at line 80: module 'strict' not found.
  7. Lua error in package.lua at line 80: module 'strict' not found.
  8. Lua error in package.lua at line 80: module 'strict' not found.
  9. Lua error in package.lua at line 80: module 'strict' not found.

External links


<templatestyles src="Asbox/styles.css"></templatestyles>