Как получить доступ к защищенному элементу без использования устройства, которое уже поддерживает интерфейс SmartCard API

Документация SEEK для Android говорит, что перечисленные устройства поддерживают API смарт-карт.

Я хочу получить доступ к защищенному элементу SIM (SE) через приложение для Android. Могу ли я достичь этого, не укореняя какое-либо из этих поддерживаемых устройств и не восстанавливая свой имидж системы Android? В моем случае это устройство Samsung Galaxy S3.

Да, вы можете использовать SEEK для Android без укоренения системы. Однако эта технология очень зависима от устройства; В системе должны присутствовать некоторые специфичные для поставщика библиотеки. Он отлично работал для меня с Sony Xperia без каких-либо необходимых изменений. После добавления некоторых библиотек (компания Samsung сделала это по нашему требованию), телефоны Samsung были в порядке.

Единственное, что вам нужно сделать – это создать приложение со специальным SDK. Используйте SDK Open Mobile API от Giesecke & Devrient GmbH и объявите библиотеку org.simalliance.openmobileapi в манифесте XML:

 <application android:label="@string/app_name"> <uses-library android:name="org.simalliance.openmobileapi" android:required="true" /> <activity android:name=".MainActivity"> ... </activity> </application> 

Взгляните на этот учебник: https://github.com/seek-for-android/pool/wiki/UsingSmartCardAPI . Я последовал за этим, и мне это удалось.

На сегодняшний день несколько смартфонов (в частности, от Samsung и Sony) поставляются с Open Mobile API (как реализовано SEEK для Android) для доступа к, по крайней мере, защищенным элементам на основе UICC / SIM (некоторые из них могут предоставлять доступ к другим типам Защищенные элементы тоже). Например, накопительное ПО Galaxy S3 содержит API Open Mobile, который можно использовать для доступа к UICC.

Открытый Mobile API доступен через пакет org.simalliance.openmobileapi . Следовательно, для использования Open Mobile API вам просто нужно будет скомпилировать проект против этой библиотеки (см. Это объяснение ). Но будьте осторожны, чтобы не включать эту библиотеку в ваш APK-файл, поскольку реализации на устройствах часто немного отличаются от того, что вы получаете от проекта SEEK-for-Android.

Обратите внимание, что альтернативные / пользовательские ПЗУ (например, CyanogenMod) обычно не включают Open Mobile API, даже для тех платформ, на которых работает ПЗУ. Для S3 вы можете найти руководство по включению необходимых адаптаций в CyanogenMod.

Пока это дает вам доступ к Open Mobile API. Однако для того, чтобы фактически получить доступ к приложениям в UICC, вашему Android-приложению необходимо передать механизмы контроля доступа Open Mobile API. См. Это объяснение . Обычно реализации запатентованного ПЗУ предпочитают подход к базе данных правил доступа над механизмом аппроксимации ARA. Поэтому вам необходимо правильно настроить эти правила доступа на карте UICC / SIM.

Существуют две зависимости для рабочего соединения между Android APK и UICC / SIM-картой.

  1. ROM или ОС вашего телефона должны поддерживать org.simalliance.openmobileapi
  2. UICC / SIM должна поддерживать приложение PKCS # 15

Это гарантирует, что никто не может получить доступ к файлам / службам из UICC / SIM. Как справедливо сказано в одном из приведенных выше ответов, нам потребуются разрешения от владельцев UICC / SIM, чтобы позволить нашему приложению проживать на нем.

Спецификации PKCS № 15 публикуются GlobalPlatform и доступны бесплатно (после номинальной регистрации)