Перайсці да зместу

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

З Вікіпедыі, свабоднай энцыклапедыі
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 (Networking and Cryptography Library, вымаўляецца як «соль») — гэта высокахуткасная праграмная бібліятэка для крыптаграфіі, якая з’яўляецца грамадскім здабыткам. [5]

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[правіць | правіць зыходнік]

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] хэшаванне пароляў і выманне ключоў).

TweetNaCl[правіць | правіць зыходнік]

У 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).

Знешнія спасылкі[правіць | правіць зыходнік]