Тут на 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 подумываю применить.