RuToken Linux ARM (ГОСТ)

Добрый день,

Интересует возможность работы с RuToken ЭЦП на платформе ARM (Debian) по алгоритмам ГОСТ.

А именно:

1. Существует ли версия библиотеки librtPKCS11ECP, собранная для указанной платформы?

2. Обязательно ли использование этой библиотеки для работы с ключами ГОСТ
    а. при условии, что сами ключевые пары и сертификаты генерируются кем-то еще, ключи помечаются как экспортируемые и записываются на токен;
    б. при условии генерации ключей на самой платформе ARM (т.е. существует ли способ генерации ключей по алгоритмам ГОСТ без использования данной библиотеки)?

3. В чем разница между работой с токеном с использованием данной библиотеки и без нее?

Заранее спасибо!

Re: RuToken Linux ARM (ГОСТ)

Здравствуйте.

Версии библиотеки для платформы ARM мы не предоставляем, но, если вы планируете разрабатывать собственное PKCS#11-приложение, то можете воспользоваться библиотекой opensc-pkcs11.so, поставляемой в комплекте пакета opensc. В ней должна быть реализована поддержка алгоритмов по ГОСТ.

Если вы опишете задачу, которую хотите решить, то возможно мы сможем подсказать готовое решение.

Re: RuToken Linux ARM (ГОСТ)

Тогда вот последовательность действий:
1. Инициализировал токен:

pkcs15-init --erase-card
pkcs15-init --create-pkcs15 --so-pin 87654321 --so-puk ""
pkcs15-init --store-pin --label "User PIN" --auth-id 02 --pin 12345678 --so-pin 87654321 --finalize

2. Сгенерировал закрытый ключ:

pkcs15-init --generate-key GOST2001 --auth-id 02

3. Проверил, что ключ есть на карте:

pkcs15-tool -k

Выдало:

Using reader with a card: Aktiv Rutoken ECP 00 00
Private GOSTR3410 Key [Private Key]
        Object Flags   : [0x3], private, modifiable
        Usage          : [0x4], sign
        Access Flags   : [0x1D], sensitive, alwaysSensitive, neverExtract, local
        ModLength      : 256
        Key ref        : 1 (0x1)
        Native         : yes
        Path           : 3f001000100060020001
        Auth ID        : 02
        ID             : 11abc3d0047e1af0c3b7824afb75046d5512920d
        GUID           : {11abc3d0-047e-1af0-c3b7-824afb75046d}

3. Пытаюсь подписать тестовый файл (файл существует):

pkcs15-crypt -s -i ./test.txt

Выдает:

Using reader with a card: Aktiv Rutoken ECP 00 00
Enter PIN [User PIN]:
Compute signature failed: Invalid arguments

При включенной отладке:

pkcs15-crypt -s -vvv -i ./test.txt

фрагмент выдачи с ошибкой:

...
PIN code correct.
0x7fa822ae0720 09:08:54.465 [pkcs15-crypt] apdu.c:524:sc_transmit_apdu: called
0x7fa822ae0720 09:08:54.475 [pkcs15-crypt] iso7816.c:479:iso7816_select_file: returning with: 0 (Success)
0x7fa822ae0720 09:08:54.475 [pkcs15-crypt] card-rtecp.c:268:rtecp_select_file: returning with: 0 (Success)
0x7fa822ae0720 09:08:54.475 [pkcs15-crypt] apdu.c:524:sc_transmit_apdu: called
0x7fa822ae0720 09:08:54.483 [pkcs15-crypt] sec.c:70:sc_set_security_env: returning with: 0 (Success)
0x7fa822ae0720 09:08:54.483 [pkcs15-crypt] apdu.c:524:sc_transmit_apdu: called
0x7fa822ae0720 09:08:54.483 [pkcs15-crypt] card-rtecp.c:400:rtecp_cipher: returning with: -1300 (Invalid arguments)
0x7fa822ae0720 09:08:54.483 [pkcs15-crypt] card-rtecp.c:423:rtecp_compute_signature: returning with: -1300 (Invalid arguments)
0x7fa822ae0720 09:08:54.483 [pkcs15-crypt] sec.c:56:sc_compute_signature: returning with: -1300 (Invalid arguments)
Compute signature failed: Invalid arguments
0x7fa822ae0720 09:08:54.499 [pkcs15-crypt] ctx.c:737:sc_release_context: called

Не подскажете, что я делаю не так?

Re: RuToken Linux ARM (ГОСТ)

У вас ID ключа не указан. Правильная команда будет иметь вид

pkcs15-crypt -s -k 42 -i dgst.in -o signature.out

Ключ при этом сгенерен командой

pkcs15-init -G GOST2001 --auth-id 02 --id 42

Длина входных данных должна быть строго 32 байта

Re: RuToken Linux ARM (ГОСТ)

Пробовал по вашей методике (пока все эксперименты проводятся на Ubuntu 11.10 x64). Та же ошибка - Invalid Arguments
Токен предварительно очистил, ключ сгенерил приведенной выше командой.
Ключ:

Private GOSTR3410 Key [Private Key]
        Object Flags   : [0x3], private, modifiable
        Usage          : [0x4], sign
        Access Flags   : [0x1D], sensitive, alwaysSensitive, neverExtract, local
        ModLength      : 256
        Key ref        : 1 (0x1)
        Native         : yes
        Path           : 3f001000100060020001
        Auth ID        : 02
        ID             : 42

Выполняю:

pkcs15-crypt -s -k 42 -i ./test.txt -o ./test.txt.sgn

test.txt длиной 32 байта (проверял при помощи ls -la), содержит строку "12345678901234567890123456789012"
Пробовал +-1 байт - не влияет на результат...

Может быть, входные данные должны иметь еще и определенный формат?

Вообще, есть ли подробная документация (опции, входные форматы данных и т.п.) по использованию opensc-pkcs11 с рутокенами? Скажем, имя алгоритма - GOST2001 - не указано нигде, пришлось его определять опытным путем на основании темы про OpenSSL...

Re: RuToken Linux ARM (ГОСТ)

Мы проверили у нас, такое поведение получается на opensc версии 0.12.1. У меня стоит самосборная 0.12.2, она работает.

Re: RuToken Linux ARM (ГОСТ)

Добрый день изменилось ли что-нибудь по  части библиотек для arm?