Ищу информацию об аппаратном ускорении SHA-2
В этом году AMD выпустила новую серию процессоров x86-64 под названием RyZen для настольных ПК. Спецификация RyZen показывает, что она предоставляет новые вики -инструкции на основе SSE SHA1 и SHA-256 : расширение Intel SHA:
- инструкции sha1: SHA1RNDS4, SHA1NEXTE, SHA1MSG1, SHA1MSG2;
- инструкции sha-256: SHA256RNDS2, SHA256MSG1, SHA256MSG2
Мне любопытно, существуют ли какие-либо API / библиотеки, которые могут использовать эту инструкцию для сверхбыстрого хеширования, которое будет использоваться в PHP или других серверных языках, когда вы используете AMD RyZen CPU? Если нет, когда мы должны ожидать, что это будет доступно?
Поскольку Intel предоставила спецификации для аппаратного SHA примерно в 2013 году, кажется, что по крайней мере несколько компиляторов должны были обеспечить его поддержку.
1 ответ
Поддержка аппаратного ускорения SHA256 была добавлена в openssl 1.0.2 [22 января 2015]: https://git.openssl.org/gitweb/?p=openssl.git;a=blob;f=CHANGES
1962 Changes between 1.0.1l and 1.0.2 [22 Jan 2015] 2012 *) Support for new and upcoming Intel processors, including AVX2, 2013 BMI and SHA ISA extensions. This includes additional "stitched" 2014 implementations, AESNI-SHA256 and GCM, and multi-buffer support 2015 for TLS encrypt.
Таким образом, при включенном оборудовании и недавнем openssl любая библиотека php / python, которая использует openssl для вычисления SHA256, может использовать аппаратно ускоренное вычисление SHA256 для дайджеста (если оно включено в openssl и если эта реализация будет выбрана библиотекой). И командной строки тоже: openssl dgst -sha256 -binary file_to_be_hashed
,
Есть некоторые необработанные привязки библиотеки openssl в php: http://php.net/manual/en/function.openssl-digest.php и OPENSSL_ALGO_SHA256 существует с PHP 5.5: какая поддержка openssl для sha256 в php
Ядро Linux CryptoAPI может использовать аппаратное SHA1/SHA2 начиная с версии 4.4: https://www.phoronix.com/scan.php?page=news_item&px=Linux-4.4-Crypto ( http://lkml.iu.edu/hypermail/linux/kernel/1511.0/00383.html); но маловероятно, что PHP/ другие скриптовые библиотеки будут использовать cryptoapi ядра.