Разработка считывателя смарт-карт в Android

android usb smartcard apdu

2396 просмотра

3 ответа

711 Репутация автора

Мы разработали прототип платы с микроконтроллером, который может взаимодействовать со SmartCard (он может считывать ATR, выдавать и считывать ответы на команды APDU и т. Д.). Теперь я хочу использовать это оборудование с телефоном или планшетом Android. Наша плата имеет USB-соединение, через которое мы можем читать и записывать в MCU через Android.

Конечная цель - иметь работающее устройство чтения смарт-карт на платформе Android с поддержкой PKCS # 11 и предоставить библиотеку конечным пользователям устройства чтения смарт-карт, чтобы они могли общаться со своими картами.

Я прочитал несколько дискуссий на эту тему, в некоторых из которых говорилось, что для этого мне придется создать собственный Android. Я не очень знаком с архитектурой Android, чтобы понять, почему мне придется пересобирать Android, когда я могу общаться с моим периферийным устройством (кард-ридером) через USB. Мне кажется, что если я предоставлю библиотеку, которая реализует CCID-подобный интерфейс, пользователи могут затем общаться с моим читателем с помощью стека USB-устройств Android путем интеграции моей библиотеки в их целевой файл .apk.

Есть ли проблемы с вышеуказанным планом, о которых мы не знаем? Я обеспокоен тем, что нам не хватает чего-то фундаментального в устройствах чтения Android или SmartCard в целом (например, безопасности), что вызовет у нас проблемы, когда мы начнем реализовывать библиотеки, описанные выше.

Автор: SomethingBetter Источник Размещён: 26.03.2013 04:41

Ответы (3)


1 плюс

893 Репутация автора

Решение

Я интегрировал периферийные устройства USB в специальный дистрибутив Gingerbread для своей пользовательской платформы. Единственная причина, по которой вы можете настроить платформу Android, заключается в добавлении или изменении некоторых драйверов, которые предоставят вам доступ к вашему USB-устройству. Если ваше устройство USB уже использует протокол, который поддерживается стандартными устройствами Android, просто наслаждайтесь! У тебя в основном все готово. Но прежде чем отпраздновать вашу победу, я бы попробовал это на разных устройствах. На уровне Android и Kernel Google предоставляет очень простой дистрибутив с большим количеством исходного кода драйвера. Это зависит от производителя телефона / планшета, чтобы решить, какие драйверы и протокол низкого уровня они будут включать в зависимости от оборудования, которое использует их устройство. Поскольку объем памяти на телефоне / планшете ограничен, общее правило - включать в себя только то, что нужно.

Надеюсь, этот простой ответ будет полезен.

Автор: Sylvain Huard Размещён: 17.04.2013 01:26

0 плюса

3 Репутация автора

Я не уверен насчет реализации CCID для читателя, но для Android есть несколько портов C / C ++, но я не уверен, что они работают. Со стороны андроида довольно легко реализовать протокол CCID, посмотрите на это . Самое сложное - сделать прошивку для читателя, есть много мелких деталей, о которых нужно позаботиться.

Автор: Daniel Размещён: 11.03.2019 04:57

0 плюса

3 Репутация автора

После дополнительных исследований в этой области вам будет доступно несколько решений:

  1. Создайте свои собственные драйверы (простое общение, несколько простых команд для сброса карты и ее питания). В этом случае вам просто нужно будет реализовать команды сброса / питания и протокол связи T = 1, однако большим недостатком этого метода является то, что он будет работать только с вашими кард-ридерами, что является большим ограничением.
  2. Реализуйте интерфейс CCID на контроллере и оберните его вокруг команд APDU. Этот метод является масштабируемым и пока вы соблюдаете спецификацию (многие производители этого не делают, и именно поэтому у pcsc-lite есть список поддерживаемых читателей). Этот метод является наиболее экономичным, если вы хотите продать много читателей. Вы можете найти спецификацию здесь
  3. Добавьте чип CCID в вашу сборку, в которой уже реализована связь CCID. Такие чипы производятся несколькими производителями, у STMelectronics их много, однако в этом случае ваш конечный считыватель будет стоить дороже, и у вас не будет полного контроля над протоколом.

Что касается стороны Android, seek предлагает порт драйвера pcsc-lite, не пробовал его, но по исходному коду я могу сказать, что они модифицировали API USB только из оригинального драйвера и использовали интерфейс JNI для связи с С кодом.

Автор: Daniel Размещён: 21.08.2019 03:59
Вопросы из категории :
32x32