(2023-04-22 22:34:36 отредактировано Alex_Zorg)

Паралельное использование нескольких Рутокенов на одной машине

Хочу использовать параллельно несколько Рутокенов на одной машине для выполнения криптографических операций с закрытым ключом, записанном на токенах. Пока использую RSA и OpenSSL с libengine-pkcs11-openssl.

Хочу из нескольких потоков (а ядер у процессора у моей подопытной ЭВМ много) запустить в цикле выполнение криптографических операций (цифровая подпись, формирование x509v3 сертификатов и т.п.). К одной ЭВМ хочу подключить НЕСКОЛЬКО токенов. Пока пробую с двумя Рутокенами и запускаю два потока (фактически даже два процесса). Выигрыша по производительности не вижу! Если один Рутокен выполняет операцию за 200 мс (время довольно стабильное), то два Рутокена выполняют такую же операцию в два потока в среднем за 400 мс (и время уже не стабильно). К каждому Рутокену обращаюсь со своим KEY_URI вида (отличаются serial):

KEY_URI=pkcs11:serial=123a87dbd;id=01;object=RSA-01

Очень подозреваю, что какая-то служба в Linux работает тупо последовательно то с первым Рутокеном, то со вторым, а потому никакого прироста производительности я не получил. Может, еще конечно, что-то делаю не так.
USB 1.1 думаю так не должно себя вести...

Прошу дать подсказки, как поднять производительность? Хотел бы штук 16 закупить с собрать  "Народный HSM".
1. Поможет ли запуск двух экземпляров pcscd на разных сокетах?
2. Стоит ли попробовать запустить криптографические операции в изолировочных chroot окружениях (для каждого Рутокена свое окружение)?
3. ...

(2023-04-23 11:09:12 отредактировано Alex_Zorg)

Re: Паралельное использование нескольких Рутокенов на одной машине

Пока ничего не получается. Запустил два разных pcscd: один в системе, второй в chroot окружении. Так как ядро ОС "общее", то Рутокен видит то один pcscd, то другой (смотрю с помощью pcsc_scan, pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T). Пока не вижу простого способа разграничить использование двух Рутокенов между двумя экземплярами pcscd. Посмотрел исходные коды pcscd - вижу, что там вроде бы цепляются ридеры подряд и как-то указать через опции командной строки какие устройства конфигурировать, а какие нет - не вижу. Изменять исходные тексты не хотелось бы учитывая, что ОС нужна будет сертифицированная.

Re: Паралельное использование нескольких Рутокенов на одной машине

Alex_Zorg, добрый день.
Попробуем у себя воспроизвести.

Re: Паралельное использование нескольких Рутокенов на одной машине

Аверченко Кирилл пишет:

Alex_Zorg, добрый день.
Попробуем у себя воспроизвести.

Спасибо! Будем ждать.
Параллельно со своей стороны постараюсь подготовить простой bash скрипт для демонстрации.
Продолжу эксперименты с chroot и попытаюсь разделить Рутокены между контейнерами с помощью USBIP (вдруг получится).

(2023-05-05 01:33:50 отредактировано Alex_Zorg)

Re: Паралельное использование нескольких Рутокенов на одной машине

Удалось запустить 16 Рутокенов на одной ЭВМ внутри 16-ти LXC контейнеров. Таким образом, 16 экземпляров pcscd оказались изолированы друг от друга, перестали делать что-то бесполезное с токенами и получилось выйти на неплохую производительность...

Re: Паралельное использование нескольких Рутокенов на одной машине

Alex_Zorg, спасибо за информацию.
Наши исследования так же показали, что основные потери на синхронизацию потоков в pcscd.
Так же, по-умолчанию, в pcscd и rtpkcs11ecp.so есть ограничение на 15 подключенных одновременно токенов.
При использовании контейнеров, это ограничение снимается.