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

Уведомление

Icon
Error

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

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

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

Сказал(а) «Спасибо»: 2 раз
Добрый вечер,

При работе с Feitian считывателем возникла пара вопросов:
1) Порядок подключения считывателя.
а) При подключении устройства с картой, обрабатываем событие "EAAccessoryDidConnectNotification",
b) в обработчике создаем EASession для работы с этим девайсом (EAAccessory),
c) затем открываем входящий поток ([[_session inputStream] open]).
d) После этого я вижу в обработчике событий потока (- (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode) ивент NSStreamEventOpenCompleted.
Правильно ли я понимаю, что после этого контейнеры на смарт карте будут доступны нам через крипто API фреймворка КриптоПРО?

2) Какой должен быть путь до контейнера на смарт карте при подключении считывателя? Что-то типа "\\\\.\\Reader\\container".

Используется смарт карта "Магистра" (СКЗИ "ФОРОС Исполнение №1"), записывали контейнер на нее через КриптоПРО на Windows, на Windows и на Mac OS КриптоПРО находит контейнер на карте (для проверки использовали считыватель Gemalto).
Offline Татьяна  
#2 Оставлено : 2 октября 2013 г. 18:36:15(UTC)
Татьяна

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

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

Поблагодарили: 40 раз в 37 постах
Здравствуйте.
1) зависит от того какую версию фреймворка и модуля поддержки считывателя используете. В свежих версиях вся работа с EAAccessory убрана внутрь модуля поддержки считывателя, вам ничего не нужно будет делать, только добавить устройство в plist
2) да, "\\\\.\\Reader\\container"
Татьяна
ООО Крипто-Про
Offline rfigurin  
#3 Оставлено : 3 октября 2013 г. 10:26:06(UTC)
rfigurin

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

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

Сказал(а) «Спасибо»: 2 раз
Понятно, спасибо. Еще пара вопросов:
1) Как можно узнать имя ридера в пути к контейнеру "\\\\.\\Reader\\container" ? Я пробовал "Feitian iR301U Contact Reader 0" (так его называет КриптоПРО CSP на Windows) - не получается. Команда "list_pcsc" (КриптоПРО на Mac OS) не выдает ничего при подключенном к компьютеру ридере.

2) В каком хранилище следует искать сертификаты со смарт карты (например я пытаюсь искать сертификаты через CertEnumCertificatesInStore) ? "MY", "TRUST"?
Offline Татьяна  
#4 Оставлено : 3 октября 2013 г. 12:23:53(UTC)
Татьяна

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

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

Поблагодарили: 40 раз в 37 постах
1)Можно перечислить считыватели при помощи GetProvParam PP_ENUMREADERS.

2)Если сертификат записан внутрь контейнера на смарткарте, то ни в каком -- надо открыть контейнер и потом получить ключ и получить сертификат через вызов GetKeyParam KP_CERTIFICATE
Татьяна
ООО Крипто-Про
Offline rfigurin  
#5 Оставлено : 8 октября 2013 г. 12:36:53(UTC)
rfigurin

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

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

Сказал(а) «Спасибо»: 2 раз
Здравствуйте, столкнулся с крэшем приложения при использовании смарт карты.

На карте "Магистра" храним пару ключей в контейнере.
На айпэде создаем сертификат (как описано в предыдущем посте) и связываем его с закрытым ключом в контейнере.
Проверяю существование сертификата и то, что он связан с закрытым ключом (CertFindCertificateInStore, CryptAcquireCertificatePrivateKey) - всё нормально.
Задаем настройки stunnel.

При отправке сетевого запроса, приложение крэшится.
В крэш логе я вижу следующее:
Thread 14 Crashed:
0 lk3 0x000ced6e SCardTransmit (winscard.m:661)
1 lk3 0x002d45f8 pcsc_cmd_t0 + 1060
2 lk3 0x002d1fd0 trust_select_application + 116
3 lk3 0x002d2100 trust_unique_num + 100
4 lk3 0x002d1cdc trust_same_media + 72
5 lk3 0x002b357c supsys_call + 128
6 lk3 0x002da020 pcsc_lock + 1144
7 lk3 0x002d9820 pcsc_call + 512
8 lk3 0x002b35d4 supsys_call + 216
9 lk3 0x002c4c7c rdr_restore_call + 72
10 lk3 0x002c4734 rdr_lock + 36
11 lk3 0x0024b724 rdr_lock + 184
12 lk3 0x0023788c carrier_login + 688
13 lk3 0x0023c1a8 key_carrier_load_container + 100
14 lk3 0x00217878 GetProvParam + 7304
15 lk3 0x001ff494 CPCGetProvParam + 596
16 lk3 0x0022f140 CPGetProvParam + 88
17 lk3 0x00100838 CryptGetProvParam + 228
18 lk3 0x003136f8 SSPCPAcquireProvider + 608
19 lk3 0x00308db4 CPSSPCreateCredentials + 888
20 lk3 0x00302f10 CPAcquireCredentialsHandleA + 20
21 lk3 0x00833c00 CreateClientCredentials + 372
22 lk3 0x008346e4 handshake + 48
23 lk3 0x0083699c do_client + 1708
24 lk3 0x00837d44 run_client + 700
25 lk3 0x00838044 client + 312
26 libsystem_c.dylib 0x39d6930e _pthread_start + 306
27 libsystem_c.dylib 0x39d691d4 thread_start + 4

Лог stunnel:
2013.10.08 12:56:01 LOG5[34074:91713536]: Threading:PTHREAD Sockets:SELECT,IPv4
2013.10.08 12:56:01 LOG6[34074:91713536]: file ulimit = 2560 (can be changed with 'ulimit -n')
2013.10.08 12:56:01 LOG6[34074:91713536]: FD_SETSIZE = 1024 (some systems allow to increase this value)
2013.10.08 12:56:01 LOG5[34074:91713536]: 0 clients allowed
2013.10.08 12:56:01 LOG7[34074:91713536]: FD 22 in non-blocking mode
2013.10.08 12:56:01 LOG7[34074:91713536]: FD 24 in non-blocking mode
2013.10.08 12:56:01 LOG7[34074:91713536]: FD 25 in non-blocking mode
2013.10.08 12:56:01 LOG7[34074:91713536]: SO_REUSEADDR option set on accept socket
2013.10.08 12:56:01 LOG7[34074:91713536]: lk3app bound to 127.0.0.1:9443
2013.10.08 12:56:01 LOG7[34074:91713536]: Created pid file /var/mobile/Applications/71715B5C-B4A8-4DB0-A2BA-120E8A007203/Documents/../Library/stunnel.pid
2013.10.08 12:56:02 LOG7[34074:91713536]: lk3app accepted FD=37 from 127.0.0.1:62273
2013.10.08 12:56:02 LOG7[34074:97660928]: client start
2013.10.08 12:56:02 LOG7[34074:97660928]: lk3app started
2013.10.08 12:56:02 LOG7[34074:97660928]: FD 37 in non-blocking mode
2013.10.08 12:56:02 LOG7[34074:97660928]: TCP_NODELAY option set on local socket
2013.10.08 12:56:02 LOG5[34074:97660928]: lk3app connected from 127.0.0.1:62273
2013.10.08 12:56:02 LOG7[34074:97660928]: FD 44 in non-blocking mode
2013.10.08 12:56:02 LOG7[34074:97660928]: lk3app connecting
2013.10.08 12:56:02 LOG7[34074:97660928]: connect_wait: waiting 10 seconds
2013.10.08 12:56:02 LOG7[34074:97660928]: connect_wait: connected
2013.10.08 12:56:02 LOG7[34074:97660928]: Remote FD=44 initialized
2013.10.08 12:56:02 LOG7[34074:97660928]: TCP_NODELAY option set on remote socket
2013.10.08 12:56:02 LOG7[34074:97660928]: start SSPI connect
2013.10.08 12:56:02 LOG5[34074:97660928]: mutual auth in on. try to read the certificate
2013.10.08 12:56:02 LOG7[34074:97660928]: open file /var/mobile/Applications/71715B5C-B4A8-4DB0-A2BA-120E8A007203/Documents/client.cer with certificate

Возможно, Вы сталкивались с данной проблемой или можете посмотреть что происходит в функции SCardTransmit в файле winscard.m.
Offline Татьяна  
#6 Оставлено : 8 октября 2013 г. 12:45:57(UTC)
Татьяна

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

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

Поблагодарили: 40 раз в 37 постах
Здравствуйте.
Этот вызов:
0 lk3 0x000ced6e SCardTransmit (winscard.m:661)

в котором происходит креш находится внутри модуля поддержки считыателя, который пишут производители считывателя. winscard.m -- их код, к которому у меня нет доступа.
Могу посоветовать только использовать последние модули поддержки -- из последней сборки фреймворка или можно посмотреть на сайте Feitian, есть ли более новые. Также можно сообщить им о креше, вероятно они смогут понять в чём дело.
Татьяна
ООО Крипто-Про
Offline rfigurin  
#7 Оставлено : 10 октября 2013 г. 9:59:04(UTC)
rfigurin

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

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

Сказал(а) «Спасибо»: 2 раз
Добрый день.

Получил ответ от производителя ридеров Feitian, попробовал с последней версией библиотеки - 1.5 - не помогло (http://download.ftsafe.com/files/reader/FT_iR301_SDK_v1.5_20130828Beta.zip).

У меня такой вопрос - Вы тестировали смарт карту "Магистра" с stunnel? Я пробовал подписать и верифицировать файл ключом с карты - все работает отлично, проблемы возникают именно при отправке сетевого запроса через stunnel.

Еще в SDK от Feitian, есть версия библиотеки для дебага, при ее использовании в лог печатается информация о записи/чтении с карты. Если у Вас есть "Магистра" под рукой, запустите пожалуйста с дебажной версией библиотеки, можно будет сравнить с моим результатом и попросить помочь сотрудников "СмартПарка".

Offline Татьяна  
#8 Оставлено : 10 октября 2013 г. 11:18:53(UTC)
Татьяна

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

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

Поблагодарили: 40 раз в 37 постах
А если подключиться к УЦ через нашу панель и в типе аутентификации выбрать сертификат(тот самый, ключ к которому лежит на магистре), всё нормально?
Просто действия с ключами в этом случае и в случае использования stunnel будут одинаковые -- клиентский TLS.

У меня не крешится, но наличие или отсутствие креша может зависеть от кучи разных факторов, например от прошивки самого считывателя. Я имела дело с десятком считывателей Feitian, которые выглядели совершенно одинаково, но отличались прошивкой -- половина из них работала, другая нет. Наверное есть более сложные дефекты при которых считыватель работает, но не всегда или работает, но время от времени в драйвере что-то крешится.

Кроме того может быть важно сочетание прошивки считывателя и используемого модуля поддержки, а также SDK iOS. Например все ранние версии библиотек крешили приложение при запуске, если для линковки использовать линкер из SDK 4.2. Я писала Feitian об этом, не знаю исправили они или нет.
Татьяна
ООО Крипто-Про
Offline rfigurin  
#9 Оставлено : 10 октября 2013 г. 13:07:51(UTC)
rfigurin

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

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

Сказал(а) «Спасибо»: 2 раз
Запустил панель из фреймворка. В "взаимодействие с УЦ" выбрал сертификат (Аутентификация/По сертификату), потом установил корневой сертификат, зашел в "Отправить запрос на сертификат", тут фреймворк спросил пароль на контейнер на карте. Вроде бы все работает.

Прискорбно, что считыватели Feitian так плохо работают. А по Вашему опыту, ридер из комплекта "Аладдина" для мобильных разработок - с ним такие же проблемы могут возникнуть, или он все-таки понадежнее? Судя по обсуждению в теме http://www.cryptopro.ru/...t=6548&p=2#post41759 stunnel работает нормально с этим комплектом.
Offline Татьяна  
#10 Оставлено : 10 октября 2013 г. 14:27:38(UTC)
Татьяна

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

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

Поблагодарили: 40 раз в 37 постах
У меня очень небольшой опыт работы со считывателями от Аладдин -- у меня один их считыватель, он работает. Для статистики одного считывателя мало. Могу сказать что компания Аладдин при использовании их считывателей берет на себя проблемы обеспечения соответствия версии прошивки считывателя и модуля поддержки (это одна из основных причин проблем). Соответственно, с возникающими проблемами при использовании их считывателя можно обращаться к ним. Скорость решения проблем скорее всего будет зависеть от их характера -- какие-то проблемы будут решаться быстрее чем с Feitian.
Татьяна
ООО Крипто-Про
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.