NaCl (библиотека)
NaCl — аббревиатура от «Networking and Cryptography library» с англ. — «библиотека для работы с сетью и криптографией», является общественным достоянием как «… высокоскоростная программная библиотека для связи по сети, шифрования, дешифрования, подписей и т. д.»[5]
NaCl | |
---|---|
Тип | библиотека функций, проект и свободное и открытое программное обеспечение |
Автор | Daniel J. Bernstein[d], Таня Ланге[d] и Швабе, Питер[d] |
Разработчик | Daniel J. Bernstein[d][1], Таня Ланге[d][2] и Швабе, Питер[d][2] |
Написана на | Си[4], C++ и Python |
Операционная система | Unix-подобная операционная система |
Первый выпуск | 2008 |
Последняя версия |
|
Лицензия | 🅮 |
Сайт | nacl.cr.yp.to |
Библиотека была создана математиком и программистом Дэниелом Бернштейном[en], известным более как создатель qmail и Curve25519. В числе главных разработчиков есть Таня Ланге[d] и Питер Швабе[d]. Главной целью, которой хотели достичь разработчики — это «избежание различных неудач, случившихся с ранее создаными криптографическими библиотеками»[6].
Базовые функцииПравить
Криптосистема с открытым ключомПравить
- Аутентифицированное шифрование с использованием Curve25519, Salsa20 и Poly1305
- Электронные подписи с использованием EdDSA
- Принятие ключа при помощи Curve25519
Криптосистема с закрытым ключомПравить
- Аутентифицированное шифрование с использованием Salsa20 и Poly1305
- Шифрование при помощи Salsa20 или AES
- Аутентификация при помощи механизма HMAC-SHA-512-256
- Одноразовая аутентификация при помощи Poly1305
Низкоуровневые функцииПравить
- Хеширование при помощи SHA-512 или SHA-256[7]
- Сравнение строк[8]
РеализацииПравить
Эталонная реализация была написана на Си с частыми вставками ассемблера. C++ и Python выступают в роли обёртки[9].
NaCl реализован в различных языках, например, PHP[10], является частью Libsodium[⇨].
Альтернативные реализацииПравить
- Libsodium — переносимая кроссплатформенная совместимая по API версия NaCl[11]
- TweetNaCl — уменьшенная библиотека на Си, умещающаяся в 100 твитов (около 14000 символов), так же совместимая по API[12]
- NaCl for Tcl — порт на Tcl[13]
- NaCl for JavaScript — порт TweetNaCl на JavaScript[14]
ПримечанияПравить
- ↑ NaCl: Networking and Cryptography library — 2016.
- ↑ 1 2 NaCl: Networking and Cryptography library — 2016.
- ↑ Installation — 2016.
- ↑ Features — 2011.
- ↑ nacl.cr.yp.to
- ↑ Daniel J. Bernstein, Tanja Lange и Peter Schwabe. The security impact of a new cryptographic library (англ.) (25 июля 2012). — «Permanent ID of this document: 5f6fc69cc5a319aecba43760c56fab04». Дата обращения: 18 августа 2017. Архивировано из оригинала 9 августа 2017 года.
- ↑ Hashing: crypto_hash (англ.) (30 августа 2010). Дата обращения: 18 августа 2017. Архивировано 2 сентября 2017 года.
- ↑ Daniel J. Bernstein. Cryptography in NaCl (англ.). Department of Computer Science (MC 152) The University of Illinois at Chicago Chicago, IL 60607–7053 (10 марта 2009). — «Permanent ID of this document: 1ae6a0ecef3073622426b3ee56260d34». Дата обращения: 18 августа 2017. Архивировано из оригинала 25 марта 2017 года.
- ↑ Internals (англ.) (26 июня 2011). Дата обращения: 18 августа 2017. Архивировано 18 августа 2017 года.
- ↑ Gasol. NaCl PHP Extension (англ.). GitHub. Дата обращения: 18 августа 2017. Архивировано 11 июня 2018 года.
- ↑ Сайт Libsodium (неопр.). Дата обращения: 15 марта 2022. Архивировано 24 сентября 2019 года.
- ↑ Сайт TweetNaCl (неопр.). Дата обращения: 15 марта 2022. Архивировано 20 февраля 2022 года.
- ↑ Сайт NaCl for Tcl (неопр.). Дата обращения: 18 августа 2017. Архивировано 9 декабря 2017 года.
- ↑ Сайт NaCl for JavaScript (неопр.). Дата обращения: 18 августа 2017. Архивировано 7 февраля 2018 года.