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

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

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

3 ответа

Да, вы можете использовать SEEK-for-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 содержит Open Mobile API, который можно использовать для доступа к UICC.

Open 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. ПЗУ или ОС вашего телефона должны поддерживать org.simalliance.openmobileapi
  2. UICC/SIM должен поддерживать приложение PKCS#15

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

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

Другие вопросы по тегам