После трёх лет разработки проект GNU представил выпуск библиотеки Libgcrypt 1.9.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.8.x (для использования новой версии не требуется пересборка программ).
Ключевые улучшения:
- Добавлена поддержка новых эллиптических кривых Ed448, X448 и SM2.
- Добавлен режим работы блочных шифров EAX (encrypt-then-authenticate-then-translate).
- Добавлен блочный шифр SM4 (китайский стандарт GB/T 32907-2016).
- Добавлена хэш функция SM3 (китайский стандарт GB/T 32905-2016).
- Добавлены новые варианты алгоритмов хэширования SHA512/224 и SHA512/256.
- Добавлен новый MAC-алгоритм для Blake-2, новых вариантов SHA512, SM3, SM4 и GOST.
- Предложены новые функции gcry_mpi_get_ui, gcry_ecc_mul_point и gcry_ecc_get_algo_keylen.
- Добавлен флаг GCRYCTL_AUTO_EXPAND_SECMEM, разрешающий увеличение размера защищённых областей памяти.
- Внесены оптимизации производительности для процессоров на базе архитектуры Aarch64.
- Ускорены реализации Poly1305 и ChaCha.
- Для процессоров PowerPC ускорены реализации AES и SHA-256.
- Расширено применений инструкций AES-NI для ускорения AES-XTS (в тестах скорость увеличилась в 6 раз) и OCB.
- Примерно в 2.5 раза увеличена производительность AES-XTS на системах ARMv8/CE.
- Добавлена новая реализация алгоритма Blake-2, использующая инструкции AVX и AVX2 (работает в 1.3 и в 1.4 раза быстрее).
- Для SHA-1 и SHA-256 задействованы расширения Intel SHA, позволившие добиться ускорения в 4.0 и 3.7 раза.
- Добавлена новая реализация GCM, использующая инструкции ARMv7/NEON и работающая в три раза быстрее.
- В 4.5 раза ускорена работа SHA-512 на системах AMD Ryzen 7, благодаря применению инструкций SSSE3.
- В 7 раз ускорено вычисление CRC на 64-разрядных ARMv8/CE, благодаря применению инструкции PMULL.
- На 40-70% ускорена реализация CAST5 и на 60-80% реализация Blowfish.