fbpx
Wikipedia

NaCl (software)

NaCl (Networking and Cryptography Library, pronounced "salt") is a public domain, high-speed software library for cryptography.[2]

NaCl
Original author(s)Daniel J. Bernstein, Tanja Lange, Peter Schwabe
Initial release2008; 16 years ago (2008)
Stable release
20110221 / February 21, 2011; 13 years ago (2011-02-21)
Operating systemUNIX-like
Licensepublic domain[1]
Websitenacl.cr.yp.to

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 and Peter Schwabe.[3][4] The main goal while creating NaCl, according to the team's 2011 paper, was to "avoid various types of cryptographic disasters suffered by previous cryptographic libraries". The team does so by safer designs that avoid issues such as side-channel leakage and loss of randomness, by being performant enough that safety features do not get disabled by the user, and by picking better cryptographic primitives. The high-level "box" API is designed to encourage the use of authenticated encryption.[1]

Functions edit

Public-key cryptography edit

Secret-key cryptography edit

Low-level functions edit

Implementations edit

The reference implementation is written in C, often with several inline assembler. C++ is handled as a wrapper. A Python wrapper was planned,[8] but is not part of the latest (20110221) release. The home page, last updated 2016, mentions prototype wrappers.[2]

Reference NaCl has a variety of programming language bindings such as PHP[9] and Tcl.[10][third-party source needed]

Libsodium edit

Libsodium is a API-compatible fork of reference NaCl created in 2013. It is "installable and packageable", or in other words can be compiled into a dynamic library and installed as a software package thanks to the addition of build files (NaCl had none). It is also "portable and cross-compilable".[11]

As libsodium can be dynamically linked, it serves as the basis for a number of bindings in languages such as Pharo,[12] Perl 5,[13] and Python.[14][15]

libsodium also extends the NaCl API with new algorithms (e.g. BLAKE2,[16] ChaCha20-Poly1305, AEGIS)[17] and new classes of functions (e.g. secure memory, random number generation, short-input hashing,[18] password hashing and key derivation).

TweetNaCl edit

In 2013, the NaCl team and three others released TweetNaCl, a condensed implementation of NaCl's 25 functions that fits in the size of 100 tweets (140 symbols each).[19]

TweetNaCl has been used as the basis of ports including TweetNaCl.js[20] and TweetNaCl-Java.[21] It has also been rewritten in the SPARK Ada subset as SPARKNaCl, which the authors describe as "(unlike TweetNaCl) readable owing to the large number of explanatory comments and contracts in the code."[22]

Other implementations edit

  • dryoc — a pure-Rust cryptography library implementing the libsodium/NaCl API with support for protected memory.[23]
  • Monocypher — a rewrite of NaCl in C. Aims to have the speed of reference NaCl and the size of TweetNaCl.[24]

See also edit

References edit

  1. ^ a b Daniel J. Bernstein; Tanja Lange; Peter Schwabe. "The security impact of a new cryptographic library" (PDF). (PDF) from the original on 2017-08-09.
  2. ^ a b "NaCl: Networking and Cryptography library".
  3. ^ "Tanja Lange's Homepage".
  4. ^ "Peter Schwabe's Homepage".
  5. ^ Bernstein, Daniel J. (10 March 2009). Cryptography in NaCl (PDF). (PDF) from the original on 25 March 2017. Retrieved 8 February 2016.
  6. ^ "Hashing: crypto_hash". 2010-08-30. Retrieved 2015-11-14.
  7. ^ "String comparison: crypto_verify". nacl.cr.yp.to. Retrieved 19 January 2024.
  8. ^ "NaCl Internals".
  9. ^ "NaCl PHP Extension". Github. 2019-06-14.
  10. ^ "Tclers Wiki - NaCl for Tcl".
  11. ^ Denis, Frank (18 January 2024). "libsodium: A modern, portable, easy to use crypto library".
  12. ^ "SmalltalkHub repository".
  13. ^ "Crypt::NaCl::Sodium".
  14. ^ Python Cryptographic Authority (18 January 2024). "pyca/pynacl". GitHub. PyNaCl is a Python binding to libsodium, which is a fork of the Networking and Cryptography library.
  15. ^ "Bindings for other languages". libsodium.
  16. ^ "Generic hashing". 2017-12-13. Retrieved 2018-05-19.
  17. ^ "AEAD constructions". libsodium.
  18. ^ "Short-input hashing". libsodium.
  19. ^ Daniel J. Bernstein; Bernard van Gastel; Wesley Janssen; Tanja Lange; Peter Schwabe; Sjaak Smetsers (2013). "TweetNaCl".
  20. ^ "TweetNaCl.js".
  21. ^ "TweetNaCl-Java".
  22. ^ "SPARKNaCl".
  23. ^ "Don't Roll Your Own Crypto (dryoc): pure-Rust, hard to misuse cryptography library".
  24. ^ Vaillant, Loup (17 January 2024). "LoupVaillant/Monocypher".

External link edit

nacl, software, confused, with, google, native, client, this, article, about, cryptography, library, configuration, management, software, salt, software, nacl, networking, cryptography, library, pronounced, salt, public, domain, high, speed, software, library,. Not to be confused with Google Native Client This article is about the cryptography library For the configuration management software see Salt software NaCl Networking and Cryptography Library pronounced salt is a public domain high speed software library for cryptography 2 NaClOriginal author s Daniel J Bernstein Tanja Lange Peter SchwabeInitial release2008 16 years ago 2008 Stable release20110221 February 21 2011 13 years ago 2011 02 21 Operating systemUNIX likeLicensepublic domain 1 Websitenacl wbr cr wbr yp wbr to 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 and Peter Schwabe 3 4 The main goal while creating NaCl according to the team s 2011 paper was to avoid various types of cryptographic disasters suffered by previous cryptographic libraries The team does so by safer designs that avoid issues such as side channel leakage and loss of randomness by being performant enough that safety features do not get disabled by the user and by picking better cryptographic primitives The high level box API is designed to encourage the use of authenticated encryption 1 Contents 1 Functions 1 1 Public key cryptography 1 2 Secret key cryptography 1 3 Low level functions 2 Implementations 2 1 Libsodium 2 2 TweetNaCl 2 3 Other implementations 3 See also 4 References 5 External linkFunctions editPublic key cryptography edit crypto box public key authenticated encryption Key agreement happens via X25519 encryption is done by Salsa20 Poly1305 5 crypto scalarmult scalar multiplication on X25519 This function can be used for elliptic curve Diffie Hellman crypto sign signatures using Ed25519 and SHA 512 Secret key cryptography edit crypto secretbox private key authenticated encryption using Salsa20 Poly1305 crypto stream encryption using Salsa20 XSalsa20 or AES crypto auth authentication using HMAC SHA 512 256 crypto onetimeauth single message authentication using Poly1305 Low level functions edit crypto hash hashing using SHA 512 or SHA 256 6 crypto verify string comparison in constant time 7 Implementations editThe reference implementation is written in C often with several inline assembler C is handled as a wrapper A Python wrapper was planned 8 but is not part of the latest 20110221 release The home page last updated 2016 mentions prototype wrappers 2 Reference NaCl has a variety of programming language bindings such as PHP 9 and Tcl 10 third party source needed Libsodium edit Libsodium is a API compatible fork of reference NaCl created in 2013 It is installable and packageable or in other words can be compiled into a dynamic library and installed as a software package thanks to the addition of build files NaCl had none It is also portable and cross compilable 11 As libsodium can be dynamically linked it serves as the basis for a number of bindings in languages such as Pharo 12 Perl 5 13 and Python 14 15 libsodium also extends the NaCl API with new algorithms e g BLAKE2 16 ChaCha20 Poly1305 AEGIS 17 and new classes of functions e g secure memory random number generation short input hashing 18 password hashing and key derivation TweetNaCl edit In 2013 the NaCl team and three others released TweetNaCl a condensed implementation of NaCl s 25 functions that fits in the size of 100 tweets 140 symbols each 19 TweetNaCl has been used as the basis of ports including TweetNaCl js 20 and TweetNaCl Java 21 It has also been rewritten in the SPARK Ada subset as SPARKNaCl which the authors describe as unlike TweetNaCl readable owing to the large number of explanatory comments and contracts in the code 22 Other implementations edit dryoc a pure Rust cryptography library implementing the libsodium NaCl API with support for protected memory 23 Monocypher a rewrite of NaCl in C Aims to have the speed of reference NaCl and the size of TweetNaCl 24 See also editThe use of the term salt in cryptography Comparison of cryptography libraries List of free and open source software packagesReferences edit a b Daniel J Bernstein Tanja Lange Peter Schwabe The security impact of a new cryptographic library PDF Archived PDF from the original on 2017 08 09 a b NaCl Networking and Cryptography library Tanja Lange s Homepage Peter Schwabe s Homepage Bernstein Daniel J 10 March 2009 Cryptography in NaCl PDF Archived PDF from the original on 25 March 2017 Retrieved 8 February 2016 Hashing crypto hash 2010 08 30 Retrieved 2015 11 14 String comparison crypto verify nacl cr yp to Retrieved 19 January 2024 NaCl Internals NaCl PHP Extension Github 2019 06 14 Tclers Wiki NaCl for Tcl Denis Frank 18 January 2024 libsodium A modern portable easy to use crypto library SmalltalkHub repository Crypt NaCl Sodium Python Cryptographic Authority 18 January 2024 pyca pynacl GitHub PyNaCl is a Python binding to libsodium which is a fork of the Networking and Cryptography library Bindings for other languages libsodium Generic hashing 2017 12 13 Retrieved 2018 05 19 AEAD constructions libsodium Short input hashing libsodium Daniel J Bernstein Bernard van Gastel Wesley Janssen Tanja Lange Peter Schwabe Sjaak Smetsers 2013 TweetNaCl TweetNaCl js TweetNaCl Java SPARKNaCl Don t Roll Your Own Crypto dryoc pure Rust hard to misuse cryptography library Vaillant Loup 17 January 2024 LoupVaillant Monocypher External link edit Retrieved from https en wikipedia org w index php title NaCl software amp oldid 1222561973, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.