Проект GNU представил выпуск библиотеки Libgcrypt 1.11.0, с реализацией компонентов, лежащих в основе механизмов шифрования, применяемых в GnuPG. Библиотека предоставляет функции для использования в сторонних приложениях различных криптоалгоритмов, включая симметричные шифры (AES, Arcfour, Blowfish, Camellia, CAST5, ChaCha20, DES, GOST28147, Salsa20, SEED, Serpent, Twofish), алгоритмы хэширования (MD5, RIPE-MD160, SHA-*, SHAKE256, TIGER-192, Whirlpool),
алгоритмы аутентифицированного шифрования (HMAC-*, CMAC-*, GMAC-*, Poly1305-*), шифрование с использованием публичных ключей (RSA, Elgamal, DSA, ECDSA, EdDSA, ECDH). Новая ветка полностью совместима на уровне API и ABI с веткой 1.10.x (для использования новой версии не требуется пересборка программ).
Ключевые улучшения:
- Добавлен API для использования механизмов инкапсуляции ключей (KEM, Key Encapsulation Mechanism), применяемых для защиты ключей для симметричного шифрования через задействование для их передачи алгоритмов на основе открытых ключей (асимметричное шифрование).
- Добавлен алгоритм инкапсуляции ключей sntrup761 (Streamlined NTRU Prime), стойкий к подбору на квантовых компьютерах.
- Добавлен устойчивый к подбору на квантовых компьютерах алгоритм Kyber, использующий методы криптографии, основанные на решении задач теории решёток, время решения которых не отличается на обычных и квантовых компьютерах.
- Добавлен алгоритм инкапсуляции ключей Classic McEliece, стойкий к подбору на квантовых компьютерах.
- Добавлены алгоритмы формирования ключа: One-Step KDF с хэшем и имитовставкой (MAC, Message Authentication Code), HKDF (RFC-5869) и X963KDF.
- Добавлены алгоритмы аутентифицированного шифрования GMAC-SM4 и Poly1305-SM4.
- Добавлен алгоритм блочного шифрования ARIA.
- Добавлен алгоритм хэширования cSHAKE.
- Реализована поддержка внутренней генерации вектора инициализации (IV) для режима аутентифицированного шифрования AEAD.
- Добавлены быстрые ассемблерные реализации алгоритмов SM3 и SM4 для архитектуры AArch64, а также варианты SM4 на ассемблере для ARMv9, PowerPC и x86 (задействованы AVX2-инструкции GFNI и AVX512-инструкции GFI).
- Реализации алгоритмов ChaCha20 и Poly1305 оптимизированы для архитектуры PPC c использованием инструкций P10. Ускорена реализация AES для PPC.
- Добавлена реализация алгоритма Camellia, использующая AVX2-инструкцию GFNI.
- Добавлены реализации GHASH (GCM) и POLYVAL (GCM-SIV), ускоренные при помощи расширений AVX2 и AVX512.
- Добавлены реализации алгоритмов SHA512, Serpent, SHA3, Blake2, Poly1305 и ChaCha20, ускоренные при помощи расширения AVX512.
- Добавлена реализация AES для систем i386, ускоренная при помощи AVX2-инструкции VAES.
- Добавлены реализации алгоритмов SHA512 и Camellia, ускоренные при помощи крипто-расширений для архитектуры AArch64.
- Проведена работа по обеспечению постоянного времени выполнения операций для различных криптоалгоритмов.