Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход. Новые регистрации запрещены.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline rfigurin  
#1 Оставлено : 2 декабря 2013 г. 17:39:35(UTC)
rfigurin

Статус: Активный участник

Группы: Участники
Зарегистрирован: 10.07.2013(UTC)
Сообщений: 42
Российская Федерация
Откуда: Нижний Новгород

Сказал(а) «Спасибо»: 2 раз
Здравствуйте!

В нашем приложении мы используем КриптоПРО фреймворк, считыватель Feitian iR301U (приобретенный у Вас) а также карту "Магистра" в качестве хранилища для контейнеров.
Вопросы:

1) Можно ли как-то отследить подключение/отчуждение смарт карты? Карт ридер при этом не отключается от планшета/телефона.

2) Проблема с нахождением контейнеров на смарт карте, если смарт карта была отключена от ридера, а затем была вновь подключена.
Например, такой сценарий:
а) запускаем приложение с подключенным ридером и картой (при этом находим контейнеры на карте);
б) вынимаем смарт карту и вставляем опять в ридер.
в) пытаюсь искать контейнеры через крипто API функции:
CryptAcquireContext( &hCryptProv, NULL, CP_KC1_GR3410_2001_PROV, PROV_GOST_2001_DH, CRYPT_VERIFYCONTEXT);
CryptGetProvParam(hCryptProv, PP_ENUMCONTAINERS, 0, &pdwDataLen, CRYPT_FIRST);
В результате функция CryptGetProvParam возвращает код ошибки ERROR_NO_MORE_ITEMS.

3) Завершение приложения (получает сигнал SIGPIPE) при отключении карт ридера, если происходило какое-либо взаимодействие с картой. Можно ли как-то избежать этого крэша приложения? Ситуация не самая распространенная (нужно отключать именно в момент взаимодействия с картой, когда мигают светодиоды на ридере), но с точки зрения пользователя возможная.
Лог из консоли: ERROR - /SourceCache/ExternalAccessory/ExternalAccessory-213.3/EAOutputStream.m:-[EAOutputStream write:maxLength:] - 266 failed to write 10 bytes (wrote -1) with error 32

Offline Татьяна  
#2 Оставлено : 2 декабря 2013 г. 21:18:55(UTC)
Татьяна

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.02.2008(UTC)
Сообщений: 1,491
Откуда: Крипто-Про

Поблагодарили: 40 раз в 37 постах
1) Можно вызывать GetProvParam PP_ENUMREADERS с флагом CRYPT_MEDIA, в этом случае в структуре информации о считывателе будет также информация о том, вставлена ли карта
2) Эта проблема нам известна: ее недавно обнаружили и ещё не исправили.

Есть workaround, который позволит нормально работать до исправления ошибки.

В config.ini замените

[KeyDevices\PCSC]
DLL = "librdrpcsc.so"
Group = 1

[KeyDevices\PCSC\"PNP PCSC"\Default]
Name = "All PC/SC readers"

На

[KeyDevices\PCSC]
DLL = "librdrpcsc.so"

[KeyDevices\PCSC\"имя вашего считывателя"\Default]
Name = "PC/SC reader"

Где «Имя считывателя» -- имя вашего считывателя, например "FT smartcard reader 00 00".

3) Это скорее всего в модуле поддержки считывателя -- не наш код, а производителя считывателя. Для уверенности, нельзя ли получить стек этого аварийного завершения?
Татьяна
ООО Крипто-Про
Offline dorison  
#3 Оставлено : 17 декабря 2013 г. 19:44:22(UTC)
dorison

Статус: Новичок

Группы: Участники
Зарегистрирован: 17.12.2013(UTC)
Сообщений: 2

Ошибка все еще актуальна ? Или в какой-то версии ее исправили?
Offline Татьяна  
#4 Оставлено : 18 декабря 2013 г. 12:32:02(UTC)
Татьяна

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.02.2008(UTC)
Сообщений: 1,491
Откуда: Крипто-Про

Поблагодарили: 40 раз в 37 постах
Здравствуйте. Пока актуальна, планируется к исправлению в 4.0.
Татьяна
ООО Крипто-Про
Offline rfigurin  
#5 Оставлено : 18 декабря 2013 г. 16:24:02(UTC)
rfigurin

Статус: Активный участник

Группы: Участники
Зарегистрирован: 10.07.2013(UTC)
Сообщений: 42
Российская Федерация
Откуда: Нижний Новгород

Сказал(а) «Спасибо»: 2 раз
Здравствуйте.
Несколько уточнений/дополнений по моим 3 вышеозвученным вопросам.

1) Отслеживание подключения/отчуждения смарт карты через GetProvParam PP_ENUMREADERS с флагом CRYPT_MEDIA. Вообще это штука работает, но только до того момента, пока не была отключена смарт карта, после этого GetProvParam (с PP_ENUMREADERS и с флагом CRYPT_MEDIA) возвращает всегда NO_MEDIA.

2) Это решение не сработало, при подстановке в конфиг "librdrpcsc.so" вместо "dummy.so" GetProvParam вообще не находит контейнеры на карте.

3) Крэши при отключении ридера. Сделал несколько скриншотов, на которых виден стэк вызовов функций:
https://www.dropbox.com/...ga8icfap6cz61/NU12W9Yr6w

А когда планируется выход версии 4.0?

Offline dorison  
#6 Оставлено : 18 декабря 2013 г. 17:06:44(UTC)
dorison

Статус: Новичок

Группы: Участники
Зарегистрирован: 17.12.2013(UTC)
Сообщений: 2

Автор: rfigurin Перейти к цитате
Здравствуйте.
Несколько уточнений/дополнений по моим 3 вышеозвученным вопросам.

1) Отслеживание подключения/отчуждения смарт карты через GetProvParam PP_ENUMREADERS с флагом CRYPT_MEDIA. Вообще это штука работает, но только до того момента, пока не была отключена смарт карта, после этого GetProvParam (с PP_ENUMREADERS и с флагом CRYPT_MEDIA) возвращает всегда NO_MEDIA.

2) Это решение не сработало, при подстановке в конфиг "librdrpcsc.so" вместо "dummy.so" GetProvParam вообще не находит контейнеры на карте.

3) Крэши при отключении ридера. Сделал несколько скриншотов, на которых виден стэк вызовов функций:
https://www.dropbox.com/...ga8icfap6cz61/NU12W9Yr6w

А когда планируется выход версии 4.0?



Попробуйте оставить dummy.so, нам помогло
Offline Татьяна  
#7 Оставлено : 18 декабря 2013 г. 17:20:44(UTC)
Татьяна

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.02.2008(UTC)
Сообщений: 1,491
Откуда: Крипто-Про

Поблагодарили: 40 раз в 37 постах
1) если сам ридер не отключать, а только карту вытаскивать и менять у меня нормально работает
2) нужно чтобы библиотека с таким же именем была прописана в секции appath. то есть, или прописать/проверить что прописана в appath "librdrpcsc.so" или оставить "dummy.so". Суть изменения в том, чтобы вместо

Group = 1
[KeyDevices\PCSC\"PNP PCSC"\Default]
Name = "All PC/SC readers"


Вписать

[KeyDevices\PCSC\"имя вашего считывателя"\Default]
Name = "PC/SC reader"

3) все креши кроме первого внутри модуля поддержки считывателя или его драйверов, которые предоставляют производители. Сейчас мы поставляем считыватели от Аладдин (допиленный ими Feitian) и подобные вопросы решает компания Аладдин.
По первому крешу -- можно посмотреть конфиг, который был в этот момент? Он(креш) воспроизводится?
Татьяна
ООО Крипто-Про
Offline rfigurin  
#8 Оставлено : 23 декабря 2013 г. 11:28:54(UTC)
rfigurin

Статус: Активный участник

Группы: Участники
Зарегистрирован: 10.07.2013(UTC)
Сообщений: 42
Российская Федерация
Откуда: Нижний Новгород

Сказал(а) «Спасибо»: 2 раз
1) У меня не работает, но если пофиксится проблема №2 (поиск контейнер после отчуждения смарт-карты) - то этого будет достаточно.
2) Непонятно откуда взять библиотеку "librdrpcsc.so". Я попробовал взять из установленного на Mac OS КриптоПРО CSP (/opt/cprocsp/lib) и добавил запись в [apppath] секции конфига. Не уверен насчет использования библиотеки для Mac OS, но в любом случае этот workaround не помог, приложение работает как и до применения этого решения - контейнеры находит, но при отчуждении смарт-карты, а затем ее подключении, не удается найти контейнеры.
3) Конфиг обычный, который идет с фреймворком последней версии (с фиксами для iOS7). Крэш воспроизвести сложно - нужно отключить именно в тот момент, когда вызываются крипто апи функции. Можно например, поставить брейкпоинт на вызов функции и затем отключить считыватель.
Offline Татьяна  
#9 Оставлено : 23 декабря 2013 г. 12:09:50(UTC)
Татьяна

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.02.2008(UTC)
Сообщений: 1,491
Откуда: Крипто-Про

Поблагодарили: 40 раз в 37 постах
2) Библиотека не нужна, просто в appath должен быть ключ с таким именем. это артефакт от того, что хоть на ios csp вместо кучи библиотек представляет собой один здоровенный объектный файл, архитектура сохранена та же, что на других системах. можно писать там dummy.so при условии что в appath ключ с таким именем есть. Единственное исключение -- это модули поддержки rutoken ecp, они действительно представляют собой отдельные библиотеки, для работы с ними в конфиг действительно надо писать настоящие имена.
3) попробую
Татьяна
ООО Крипто-Про
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (2)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.