После двух с половиной лет разработки проект GNU представил (http://lists.gnu.org/archive/html/info-gnu/2016-04/msg00005....) выпуск библиотеки Libgcrypt 1.7.0 (http://www.gnu.org/software/libgcrypt/), с реализацией компонентов, лежащих в основе механизмов шифрования, применяемых в GnuPG. Библиотека предоставляет функции для использования в сторонних приложениях различных криптоалгоритмов, включая симметричные шифры (AES, DES, Blowfish, CAST5, Twofish, SEED, Camellia, Arcfour), алгоритмы хэширования (MD4, MD5, RIPE-MD160, SHA-1, SHA_224, SHA-256, SHA-384, SHA-512, TIGER-192, Whirlpool), шифрование с использованием публичных ключей (RSA, Elgamal, DSA, ECDSA). Новая ветка полностью совместима на уровне API и ABI с веткой 1.6.x (для использования новой версии не требуется пересборка программ).Ключевые улучшения:
- Поддержка новых алгоритмов и режимов:
- Алгоритмы хэширования SHA3-224, SHA3-256, SHA3-384, SHA3-512 и MD2;- Алгоритмы хэширования SHAKE128 и SHAKE256;
- Потоковый шифр ChaCha20;
- Алгоритм аутентификации сообщений Poly1305;
- Алгоритм аутентифицированного шифрования ChaCha20-Poly1305;
- Режим OCB;
- Поддержка HMAC-MD2 для устаревших приложений;- Поддержка эллиптических кривых Curve25519, sec256k1, GOST R 34.10-2001 и GOST R 34.10-2012;
- Увеличение производительности функций KDF;
- Ассемблерные оптимизации для Blowfish и Serpent для CPU ARM, 3DES для x86;
- Задействование инструкций AVX/BMI для SHA-1 и SHA-256
SHA-1, и SSSE3 для AES. Новая AVX-реализация SHA-1 быстрее на 20% по сравнению с версией на базе SSSE3 и на 100% по сравнению с реализацией в libc;- На 40% ускорена реализация SHA-512 и на 72% реализация SHA-1 для ARM Cortex-A8;
- На 60-90% ускорена реализация Whirlpool для x86;
- На 300% ускорена реализация RIPE MD-160;
- Вычисление CRC на системах x86 ускорено в 11 раз;
- Улучшена совместимость с ECDSA и FIPS 186-4.URL: http://lists.gnu.org/archive/html/info-gnu/2016-04/msg00005....
Новость: http://www.opennet.dev/opennews/art.shtml?num=44256
LPGL? Sayonara, Libgcrypt.
LGPL aka lesser gpl
ну давай, анончик, расскажи чем он плох.
> LGPL aka lesser gpl
> ну давай, анончик, расскажи чем он плох.Пермиссивный аненчег покупает PGP и линкует его со своей фриб3дешечкой, как завещал великий коретиим.
> ну давай, анончик, расскажи чем он плох.В мою проприетарочку плохо встраивается, так что не очень много смыслка когда есть более интересные альтернативы.
Так это не "чем плох" - это "чем хорош"
LGPL? Это ж самая справедливая лицензия: пользуйся нашим кодом, не открывая свой. И только если улучшил наш код, тогда уж будь другом в конце концов.
Задумка действительно хорошая, но LGPL запрещает статическую линковку, что в общем не всегда удобно. Для такого рода библиотек проприетращик и так будет заинтересован отдать в апстрим свои изменения, чтобы не патчить их каждый раз.
Вроде, нет: просто тогда нужно предоставить свой закрытый код большим .o файлом. Чтобы пользователь смог его слинковать с libgcrypt.a. А значительных отличий готового исполняемого файла от объектного практически нет. Кроме чувства, что как будто ты отдаёшь что-то больше чем обычно. Лично мне попадалась проприетарная прога, которая требовала наличие libgcrypt.so определённой версии.
>>расскажи чем он плох.
> В мою проприетарочку плохо встраивается,Пока ты рассказал, чем ты плох. Попытайся ещё!
А libsodium как?
> А libsodium как?А это в другой ветке.
> - Вычисление CRC на системах x86 ускорено в 11 раз;Резервы x86, или...?
...или преждевременная оптимизация...
На новых процах есть аппаратная инструкция для crc32, наверно применили ее.
>> - Вычисление CRC на системах x86 ускорено в 11 раз;
> Резервы x86, или...?Либо, как уже сказали, использование расширенных инструкций вроде SSE4.2 http://www.drdobbs.com/parallel/fast-parallelized-crc-comput...
, либо выжимание соков из компилятора, кеша процессора и ширины регистров http://create.stephan-brumme.com/crc32/ [гы, "GCC 4.7 produces faster code than Visual C++ 2010 for "...]
, либо ещё чего. По lists.gnupg.org не насёрчилось, чего конкретно в этом релизе - мож у кого под рукой есть ейный git (или чего там) и время, расскажет праздно инртересующейся аудитории.
И +1 :)) к "преждевременной оптимизации" === не утерпели, "После двух с половиной лет", могли бы ещё пару порядков %) выждать. То-ро-пы-ги.
>> - Вычисление CRC на системах x86 ускорено в 11 раз;
> Резервы x86, или...?И раз:
http://git.gnupg.org/cgi-bin/gitweb.cgi?p=libgcrypt.git;a=co...
> More optimized CRC implementations
> Patch adds more optimized CRC implementations generated with universal_crc
> tool by Danjel McGougan: http://www.mcgougan.se/universal_crc/----------------------------------
Sat, 2 May 2015 21:34:34 +0000 (00:34 +0300)
Before:
CRC32 | 2.52 ns/B 378.3 MiB/s 8.07 c/B
CRC32RFC1510 | 2.52 ns/B 378.1 MiB/s 8.07 c/B
CRC24RFC2440 | 46.62 ns/B 20.46 MiB/s 149.2 c/BAfter:
CRC32 | 0.918 ns/B 1039.3 MiB/s 2.94 c/B
CRC32RFC1510 | 0.918 ns/B 1039.0 MiB/s 2.94 c/B
CRC24RFC2440 | 0.918 ns/B 1039.4 MiB/s 2.94 c/B
--------------------------------И два:
http://git.gnupg.org/cgi-bin/gitweb.cgi?p=libgcrypt.git;a=co...
> Add Intel PCLMUL implementations of CRC algorithms--------------------------------
Sat, 12 Mar 2016 15:16:41 +0000 (17:16 +0200)
Benchmark on Intel Core i5-4570 (x86_64, 3.2 Ghz):Before:
| nanosecs/byte mebibytes/sec cycles/byte
CRC32 | 0.865 ns/B 1103.0 MiB/s 2.77 c/B
CRC32RFC1510 | 0.865 ns/B 1102.7 MiB/s 2.77 c/B
CRC24RFC2440 | 0.865 ns/B 1103.0 MiB/s 2.77 c/BAfter:
| nanosecs/byte mebibytes/sec cycles/byte
CRC32 | 0.079 ns/B 12051.7 MiB/s 0.253 c/B
CRC32RFC1510 | 0.079 ns/B 12050.6 MiB/s 0.253 c/B
CRC24RFC2440 | 0.079 ns/B 12100.0 MiB/s 0.252 c/B
---------------------------------
Спасибо за поиск! Кстати, первый бенч - Intel Haswell. Эх, а написано x86. Как-то SSE & Co. у меня с x86 не совсем ассоциируются. Это уже какой-то пост-x86. Вообще было бы неплохо, если в коммитах почётче было бы написано на каких имеющихся на сегодняшний день процах можно это получить.
А то
> Select PCLMUL implementation if SSE4.1 and PCLMUL HW features detected.Т.е. может быть SSE4.1 без PCLMUL? Ох уж этот пост-x86.
Все хорошо, но эта версия Libgcrypt 1.7.0 при долгой работе иногда роняет сервак. Даже запущенная в виртуалке VMware виснет и виртуалака и хост. Касперский палит троян дроппер и вырубает копм в синий экран смерти. Линукс при этом тоже глючит и по экрану лезут пауки.
> Все хорошо, но эта версия Libgcrypt 1.7.0 при долгой работе иногда роняет
> сервак. Даже запущенная в виртуалке VMware виснет и виртуалака и хост.
> Касперский палит троян дроппер и вырубает копм в синий экран смерти.
> Линукс при этом тоже глючит и по экрану лезут пауки.Багрепорт составил?
Конечно, полезное дело. Но бывает в ответ получаешь: требуется минимальная программа, воспроизводящая ошибочное поведение или закрываем баг как невоспроизводимый или у меня всё работает. Иногда дело 5 минут, иногда нескольких часов, а иногда практически нереально.
Ох эти minimal working example и could not reproduce
> Но бывает в ответ получаешь: требуется минимальная программа, воспроизводящая
> ошибочное поведение или закрываем баг как невоспроизводимый или у меня всё
> работает. Иногда дело 5 минут, иногда нескольких часов, а иногда практически
> нереально.Да, никто школоту не любит:(
>Прошлый патч не был принят в состав ядра Linux, так как некоторые пользователи отмечали возникновение проблем, которые Мэтью Гаррет не смог повторить на своей системе
>https://www.opennet.dev/opennews/art.shtml?num=44264Твои оправдания, "гуру" багрепортов?
> Касперский палит троян дроппер и вырубает копм в синий экран смерти.Мальчик, иди в винду.
Хорошие новости. Приятно видеть не только новые фичи, а и работу над оптимизацией уже имеющихся, что часто более важно.
А как это может быть, что 34.10 есть, а 28147 нет?
И на FreeBSD портировали: http://www.freshports.org/security/libgcrypt/
С помощью этой библиотеки libgcrypt-1.7.0 и кое-каких доработок gnupg, libksba и т.д. (см. http://soft.lissi.ru/articles/2/ ) Kleopatra и KMail подружились с российской криптографией.