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 General Public License версии 2 или более поздней и GNU Lesser General Public License версии 3 или более поздней. Несколько отдельных файлов лицензированы по более разрешительным лицензиям или находятся в общественном достоянии . Уведомления об авторских правах в верхней части исходных файлов библиотеки точно определяют статус лицензии конкретных файлов. [7]
Руководство Nettle «находится в общественном достоянии» и может свободно использоваться и воспроизводиться. [8]