NaCl (праграмнае забеспячэнне)

NaCl (Networking and Cryptography Library, вымаўляецца як «соль») — гэта высокахуткасная праграмная бібліятэка для крыптаграфіі, якая з’яўляецца грамадскім здабыткам. [5]

NaCl
Тып cryptographic library[d], IT project[d] і public-domain software[d]
Аўтар Daniel J. Bernstein[d], Tanja Lange[d] і Peter Schwabe[d]
Распрацоўшчык Daniel J. Bernstein[d][1], Tanja Lange[d][2] і Peter Schwabe[d][2]
Напісана на C, мова праграмавання[4] і C++
Аперацыйная сістэма UNIX-падобная аперацыйная сістэма
Першы выпуск 2008
Апошняя версія
  • 20110221 (21 лютага 2011)[3]
Сайт nacl.cr.yp.to

NaCl быў створаны матэматыкам і праграмістам Дэніэлам Дж. Бернштэйнам, які найбольш вядомы стварэннем qmail і Curve25519. У асноўную каманду таксама ўваходзяць Таня Ланге і Петэр Швабе.[6][7] Асноўнай мэтай пры стварэнні NaCl, паводле дакумента каманды ад 2011 года, было «пазбегнуць розных тыпаў крыптаграфічных катастроф, ад якіх цярпелі папярэднія крыптаграфічныя бібліятэкі». Каманда дамагаецца гэтага за рахунак больш бяспечнага дызайну, які дазваляе пазбегнуць такіх праблем, як уцечка інфармацыі па пабочных каналах і страта выпадковасці, за рахунак дастатковай прадукцыйнасці, каб функцыі бяспекі не адключаліся карыстальнікам, і за рахунак выбару лепшых крыптаграфічных прымітываў. Высокаўзроўневы «скрынкавы» API распрацаваны такім чынам, каб заахвочваць выкарыстанне аўтэнтыфікаванага шыфравання.

Функцыі

правіць

Крыптаграфія з публічным ключом

правіць

Крыптаграфія з сакрэтным ключом

правіць

Функцыі нізкага ўзроўню

правіць

Рэалізацыі

правіць

Эталонная рэалізацыя напісана на C, часта з некалькімі ўбудаванымі асэмблерамі. C++ выкарыстоўваецца ў якасці абгорткі. Планавалася абгортка для Python,[11] але яна не ўваходзіць у апошні рэліз (20110221). На хатняй старонцы, апошняя версія якой абнаўлялася ў 2016 годзе, згадваюцца прататыпы абгортак.[12]

Эталонны NaCl мае мноства прывязак да моў праграмавання, такіх як PH[13]P і Tcl. [14] </link>[ <span title="This claim needs a reference to a independent, third-party source. (July 2016)">патрэбна старонняя крыніца</span> ]

Libsodium — гэта API-сумяшчальны форк эталоннага NaCl, створаны ў 2013 годзе. Ён з’яўляецца «усталёўваным і пакаваным», ці, іншымі словамі, можа быць скампіляваны ў дынамічную бібліятэку і ўсталяваны як праграмны пакет дзякуючы даданню файлаў зборкі (у NaCl іх не было). Ён таксама з’яўляецца «пераносным і крос-кампіляваным».[15]

Паколькі libsodium можа быць дынамічна кампанаваны, ён служыць асновай для шэрагу звязкаў у такіх мовах, як Pharo, [16] Perl 5, [17] і Python. [18] [19]

libsodium таксама пашырае API NaCl новымі алгарытмамі (напрыклад, BLAKE2,[20] ChaCha20-Poly1305, AEGIS)[21] і новымі класамі функцый (напрыклад, бяспечная памяць, генерацыя выпадковых лікаў, хэшаванне з кароткім уваходам,[22] хэшаванне пароляў і выманне ключоў).

У 2013 годзе каманда NaCl і тры іншых выпусцілі TweetNaCl, скарочаную рэалізацыю 25 функцый NaCl, якая змяшчаецца ў 100 твітаў (140 сімвалаў кожны). [23]

TweetNaCl быў выкарыстаны ў якасці асновы для партоў, у тым ліку TweetNaCl.js[24] і TweetNaCl-Java.[25] Ён таксама быў перапісаны на падмностве SPARK Ada пад назвай SPARKNaCl, які аўтары апісваюць як «(у адрозненне ад TweetNaCl) чытэльны дзякуючы вялікай колькасці якія тлумачаць каментароў і кантрактаў у кодзе».[26]

Іншыя рэалізацыі

правіць
  • dryoc — чыстая бібліятэка крыптаграфіі Rust, якая рэалізуе API libsodium/NaCl з падтрымкай абароненай памяці.[27]
  • Monocypher —перапісаная на C версія NaCl. Імкнецца мець хуткасць даведачнага NaCl і памер TweetNaCl. [28]

Гл. таксама

правіць
  • Выкарыстанне тэрміна соль у крыптаграфіі
  • Параўнанне крыптаграфічных бібліятэк
  • Спіс бясплатных і адкрытых праграмных пакетаў

Спасылкі

правіць
  1. NaCl: Networking and Cryptography library — 2016. Праверана 7 студзеня 2020.
  2. а б NaCl: Networking and Cryptography library — 2016. Праверана 7 студзеня 2020.
  3. Installation — 2016. Праверана 7 студзеня 2020.
  4. Features — 2011. Праверана 27 сакавіка 2017.
  5. NaCl: Networking and Cryptography library.
  6. Tanja Lange's Homepage.
  7. Peter Schwabe's Homepage.
  8. Daniel J. Bernstein. Cryptography in NaCl (PDF). Архівавана з арыгінала (PDF) 2017-03-25.
  9. Hashing: crypto_hash (30 жніўня 2010). Праверана 14 лістапада 2015.
  10. String comparison: crypto_verify. nacl.cr.yp.to. Праверана 19 January 2024.
  11. NaCl Internals.
  12. NaCl: Networking and Cryptography library.
  13. NaCl PHP Extension. Github (14 чэрвеня 2019).
  14. Tclers Wiki - NaCl for Tcl.
  15. Denis. libsodium: A modern, portable, easy to use crypto library. (18 студзеня 2024).
  16. SmalltalkHub repository.
  17. Crypt::NaCl::Sodium.
  18. ((Python Cryptographic Authority)). pyca/pynacl. GitHub (18 студзеня 2024). — «PyNaCl is a Python binding to libsodium, which is a fork of the Networking and Cryptography library.»
  19. Bindings for other languages. libsodium.
  20. Generic hashing (13 снежня 2017). Праверана 19 мая 2018.
  21. AEAD constructions. libsodium.
  22. Short-input hashing. libsodium.
  23. Daniel J. Bernstein. TweetNaCl (29 чэрвеня 2013).
  24. TweetNaCl.js.
  25. TweetNaCl-Java.
  26. SPARKNaCl.
  27. Don't Roll Your Own Crypto (dryoc): pure-Rust, hard to misuse cryptography library.
  28. Vaillant. LoupVaillant/Monocypher (17 студзеня 2024).

Знешнія спасылкі

правіць