Выпуск криптографической библиотеки Libgcrypt 1.8.0
Проект GNU представил выпуск библиотеки Libgcrypt 1.8.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.7.x (для использования новой версии не требуется пересборка программ).
Ключевые улучшения:
- Реализован алгоритм хэширования Blake-2;
- Добавлен режим работы блочных шифров XTS, применяемый при полном шифровании дисков;
- Добавлены новые функции gcry_mpi_point_copy и gcry_get_config;
- Добавлен параметр GCRYCTL_REINIT_SYSCALL_CLAMP, позволяющий инициализировать многопоточную библиотеку nPth после Libgcrypt;
- Представлен новый глобальный файл конфигурации /etc/gcrypt/random.conf для настройки генератора псевдослучайных чисел;
- Добавлена поддержка режима GCRY_CIPHER_MODE_CFB8;
- Добавлены идентификаторы для отечественной хэш-функции Stribog (ГОСТ Р 34.11-2012);
- Задействован новый высокопроизводительный коллектор энтропии на основе джиттера (jitter);
- Выполнена оптимизация работы функции gcry_md_hash_buffers для хэшей SHA-256 и SHA-512;
- Проведены оптимизации производительности реализаций AES, GCM, SHA-256 и SHA-1 для архитектур ARMv8/AArch32;
- Добавлены ассемблерные реализации симметричных шифров Twofish и Camellia для ARMv8/AArch32;
- Добавлена поддержка пакетного выполнения операций для ARMv8/AArch32;
- Увеличена производительность DRBG (Deterministic Random Bit Generator) и кода синхронизации на платформе Linux.