VIA Padlock для ускорения шифрования под Linux

Тут на LOR проскочила новость про открытие спецификаций на VIA Padlock. При этом про Падлок автор написал, что это всего лишь аппаратный генератор случайных чисел. В статье по ссылке конечно написано более корректно. Я с недавних пор собираю информацию про использование Padlock для ускорения шифрования под Linux, вот решил опубликовать небольшое описание возможностей и подбор ссылок.

На самом деле спецификации на эту часть процессоров VIA C3 и C7 давно открыты, судя по тому, что соответствующие драйвера входят в ядро линукс давным-давно. Сначала, как водится, драйвера жили в виде патчей к ядру, а для их использования требовалось патчить криптопрограммы и криптобиблиотеки. Теперь все в апстримах и включается загрузкой нужных модулей ядра и простой конфигурацией криптобиблиотек.

Что такое Padlock?

Из официального сайта... Эти возможности включают реализацию квантового генератора случайных чисел VIA PadLock RNG (Random Number Generator) и VIA PadLock ACE (Advanced Cryptography Engine) с поддержкой стандарта шифрования AES, хешей SHA-1/SHA-256 и ускоренного вычисления алгоритма RSA (через включение Montgomery Multiplier). Элементы VIA PadLock Security Engine были интегрированы в процессоры VIA C7, VIA C7-M, VIA Eden™ ESP, Eden™-N, VIA C3®-M и VIA C3®.

Все эти процессоры известны, прежде всего, как интегрированные компоненты плат Mini-ITX и баребонов.

Какие программы поддерживают VIA Padlock под Linux и как включить поддержку?

Поддержка есть как минимум в OpenSSL, OpenSSH и OpenVPN. На сайте про VIA Padlock под Linux можно получить последнюю информацию о программной поддержке.

Рандомный генератор включается загрузкой модуля via_rng. После этого становится доступен файл /dev/hwrng с этими самыми квантовыми случайными числами. Я так понимаю это рандом на основе температурного датчика процессора. Чтобы заменить псевдослучайный рандом ядра /dev/random на хардварный, нужно установить переадресующий демон rngd пакетом rng-tools под Debian/Ubuntu и в /etc/default/rng-tools выставить:

RNGDOPTIONS="--hrng=via"

После этого ssh-keygen, dnssec, генерация сертификатов openssl и pgp становится быстрее.

В OpenSSL 0.9.8 поддержка акселерации AES из коробки. Поддержка PadLock прозрачна. Все что нужно сделать -- использовать модуль ядра padlock.ko вместо aes.ko. С этого момента можно использовать шифрование AES как обычно.

Однако для использования ускорения хешей SHA1, SHA224 или SHA256 на VIA C7 раньше нужно было патчить OpenSSL, в некоторых случаях можно было обойтись настройкой /etc/ssl/openssl.cnf, а недавно баг исправлен в OpenSSH 4.9p1 и OpenSSL 0.9.8h и все работает включением padlock в конфигах и параметрах команд. В новых ядрах нужно загрузить модули padlock_aes и padlock_sha. Подробнее про Настройку и бенчмаркинг OpenSSL и Padlock в Ubuntu.

Насколько быстро работает Padlock?

Впечатляющие цифры и набор возможностей для столь недорогих камней. Конечно на десктопе это не особо нужно, тем более, что Mozilla/Firefox похоже не использует OpenSSL для шифрования. А вот для создания VPN-шлюзов на VIA Mini-ITX подумываю применить.

Блог: RU Linux

Хорошая статья, хотелось бы продолжения, ибо имею via epia pd1000 как раз мини итх и 2 эзернет порта. проц нето с3 не то с7. и есть еще одна на с3 от гигабайта. так что роутер и впн маршрутизатор это актуально.

www:/lib/modules/2.6.32-5-486/kernel/drivers/crypto# dmesg |grep padlock [249524.843385] padlock_aes: Unknown parameter `padlock_sha' [250113.820601] padlock: VIA PadLock Hash Engine not detected.

и как бы всё...

Трудно сказать, довно было дело, сейчас уже нету такого железа под рукой.

Кстати в Intel Core i5-7 добавлено аппаратное крипто.