Nettle — это криптографическая библиотека, разработанная для легкого использования в широком спектре наборов инструментов и приложений. Он начался как набор функций низкоуровневой криптографии из lsh в 2001 году. [2] С июня 2009 года (версия 2.0) Nettle является пакетом GNU. [3]
Начиная с версии 3, Nettle предоставляет блочный шифр AES (подмножество Rijndael) (с оптимизацией сборки для x86 и sparc), потоковый шифр ARCFOUR (также известный как RC4) (с сборкой x86 и sparc), ARCTWO ( также известный как RC2), потоковый шифр BLOWFISH , CAMELLIA (с оптимизацией сборки x86 и x86_64), блочные шифры CAST-128 , DES и 3DES , потоковый шифр ChaCha (со сборкой для x86_64), GOSTHASH94 , MD2 , MD4 и MD5 (с x86). сборки) дайджесты , функция деривации ключей PBKDF2 , коды аутентификации сообщений POLY1305 (со сборкой для x86_64) и UMAC , RIPEMD160 , поточный шифр Salsa20 (со сборкой для x86_64 и ARM), блочный шифр SERPENT (со сборкой для x86_64), SHA-1 (со сборкой x86, x86_64 и ARM), дайджесты SHA-2 (SHA-224, SHA-256, SHA-384 и SHA-512), SHA-3 (подмножество семейства дайджестов Keccak), блочный шифр TWOFISH , алгоритмы открытого ключа RSA , DSA и ECDSA , Yarrow PRNG . В версии 3.1 появилась поддержка операций Curve25519 и EdDSA . [4] Алгоритмы с открытым ключом используют GMP . [5]
Nettle используется GnuTLS .
API, который хорошо подходит для одного приложения, может не работать хорошо в другом контексте, что приводит к быстрому увеличению количества криптографических библиотек, предназначенных для конкретных приложений. Nettle — это попытка избежать этой проблемы, выполняя одну задачу (низкоуровневую криптографию) и предоставляя для нее простой и общий интерфейс. В частности, Nettle не выполняет выбор алгоритма, распределение памяти или какой-либо ввод-вывод. Таким образом, Nettle призвана предоставить базовую криптографическую библиотеку, на основе которой могут быть построены многочисленные интерфейсы, специфичные для приложений и контекста. Код, тестовые примеры, тесты, документация и т. д. этих интерфейсов затем можно будет использовать совместно без необходимости копировать криптографический код Nettle. [6]
Nettle в основном лицензируется по схеме двойной лицензии, включающей Стандартную общественную лицензию GNU версии 2 или более позднюю и Меньшую стандартную общественную лицензию GNU версии 3 или более позднюю. Некоторые отдельные файлы лицензируются по более либеральным лицензиям или находятся в свободном доступе . Уведомления об авторских правах в верхней части исходных файлов библиотеки точно определяют статус лицензии конкретных файлов. [7]
Руководство Nettle «находится в свободном доступе» и может использоваться и воспроизводиться свободно. [8]