РИТ++ 2017, AppsConf
Зал Касабланка, 6 июня, 17:00
Тезисы:
http://appsconf.ru/2017/abstracts/2536.html
Операционная система Android на устройствах, поддерживающих технологию NFC, теперь может рассматриваться в качестве основы для реализации электронных, машино-считываемых персональных идентификационных документов, наподобие заграничного биометрического паспорта гражданина РФ. Благодаря использованию технологии Host-based Card Emulation (HCE), регулирующейся организацией NFC Forum, мобильный телефон теперь может заменить любое приложение, выполняющееся на интеллектуальной карте (смарт-карте) стандарта ISO7816, сохраняя при этом всю инфраструктуру инспекционного контроля неизменной.
...
2. О чем будет этот доклад...
• Поговорим о том, что такое биометрический паспорт
• Объясним, зачем мы этим занялись
• Разберем, как решить поставленную задачу
• Рассмотрим обзорно другие потенциальные области применения
3. Что такое паспорт и что мы о нем знаем?
Паспорт – это персональный идентификационный
документ, содержащий биометрические данные
владельца, применяющийся с целью
установления инспектирующими органами
личности предъявляющего.
4. Зачем нам знать про эти стандарты?
ISO/IEC 14443 – это базовый интерфейс технологии NFC.
ISO/IEC 7816 – это базовая технология интеллектуальных карт (smart
cards).
6. Android, NFC и Host based Card Emulation…
Начиная в версии 4.4 KitKat (API level 19),
в Android появлятеся поддержка такой
функциональности, как Host based Card
Emulation (HCE).
11. Что не так в существующих паспортах?
• Паспорт изготавливается и выдается в течение 4-х недель и
требует посещения авторизованных органов минимум два раза
• Все больше и больше стран переходит на электронные визы
• При посещении некоторых стран иногда приходится иметь два
паспорта
12. Как и где это может применяться?
• Альтернатива существующим паспортам
• В качестве национального идентификационного удостоверения
• Как водительское удостоверение
• Средство контроля доступа
• Удостоверение болельщика ЧМ-2018
и т.д.
13. Как выглядит использование HCE...
https://developer.android.com/guide/topics/connectivity/nfc/hce.html
import android.nfc.cardemulation.HostApduService;
public class MyHostApduService extends HostApduService {
@Override
public byte[] processCommandApdu(byte[] apdu, Bundle extras) {
...
}
@Override
public void onDeactivated(int reason) {
...
}
}
14. Как выглядит использование HCE...
https://developer.android.com/guide/topics/connectivity/nfc/hce.html
import android.nfc.cardemulation.HostApduService;
public class MyHostApduService extends HostApduService {
@Override
public byte[] processCommandApdu(byte[] apdu, Bundle extras) {
...
}
@Override
public void onDeactivated(int reason) {
...
}
}
Реализовать класс, наследующий
HostApduService
15. Как выглядит использование HCE...
Затем прописать этот класс сервис в манифесте...
<service android:name=".MyHostApduService" android:exported="true"
android:permission="android.permission.BIND_NFC_SERVICE">
<intent-filter>
<action ndroid:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
</intent-filter>
<meta-data android:name="android.nfc.cardemulation.host_apdu_service"
android:resource="@xml/apduservice"/>
</service>
16. Как выглядит использование HCE...
Затем прописать этот класс сервис в манифесте...
<service android:name=".MyHostApduService" android:exported="true"
android:permission="android.permission.BIND_NFC_SERVICE">
<intent-filter>
<action ndroid:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
</intent-filter>
<meta-data android:name="android.nfc.cardemulation.host_apdu_service"
android:resource="@xml/apduservice"/>
</service>
Имя созданного класса
17. Как выглядит использование HCE...
Затем прописать этот класс сервис в манифесте...
<service android:name=".MyHostApduService" android:exported="true"
android:permission="android.permission.BIND_NFC_SERVICE">
<intent-filter>
<action ndroid:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
</intent-filter>
<meta-data android:name="android.nfc.cardemulation.host_apdu_service"
android:resource="@xml/apduservice"/>
</service>
Системное разрешение для
использования в качестве
сервиса NFC
18. Как выглядит использование HCE...
Затем прописать этот класс сервис в манифесте...
<service android:name=".MyHostApduService" android:exported="true"
android:permission="android.permission.BIND_NFC_SERVICE">
<intent-filter>
<action ndroid:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
</intent-filter>
<meta-data android:name="android.nfc.cardemulation.host_apdu_service"
android:resource="@xml/apduservice"/>
</service>
Индикатор обработчика события
приема комманд, адресованных
эмулируемой интеллектуальной карте
19. Как выглядит использование HCE...
Затем прописать этот класс сервис в манифесте...
<service android:name=".MyHostApduService" android:exported="true"
android:permission="android.permission.BIND_NFC_SERVICE">
<intent-filter>
<action ndroid:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
</intent-filter>
<meta-data android:name="android.nfc.cardemulation.host_apdu_service"
android:resource="@xml/apduservice"/>
</service>
Метаданные, содержащие правила
доступа к приложению
22. Android Java и Java Card
Существует технология реализации
приложений для интеллектуальных карт на
языке Java под названием Java Card.
Окружение, эмулирующее Java Card для Android, как например:
• jCardSim https://jcardsim.org
• ACardEmulator
https://github.com/frankmorgner/vsmartcard/tree/master/ACardEmul
ator
23. Промежуточный итог...
Итак, мы обсудили тенденцию, при которой монофункциональные
интеллектуальные карты, замещаются многофункциоальными
мобильными устройствами, способными их эмулировать. Таким
образом, мы показали техническую реализуемость такой
миграции.
Что же сдерживает технический прогресс?
26. Первый блин – комом...или опять неудача?
Плюсы:
• Паспорт работает назависимо от того есть ли покрытие сотовой
сети
• Персонализируется через бесконтактный интерфейс
• Подтверждает концепцию
Минусы:
• Сертификация на безопасность невозможна в виду уязвимости
27. Android и NFC HCE API, не нонсенс ли?..
Если Android небезопасна, то зачем NFC HCE API?
28. Посмотрим на опыт ApplePay и SamsungPay
Приложение APK Приложение в SE
29. Что такое Secure Element?
Secure Element (SE) – микросхема аналогичная интеллектуальной
карте, встраиваемая в мобильное устройство. Существуют SE,
поддерживающие технологию Java Card.
https://www.globalplatform.org/mediaguideSE.asp
http://simalliance.org/se/se-educational-resources/
30. Plan B: Паспорт на SE
Плюсы:
• Паспорт работает назависимо от того есть ли покрытие сотовой сети
• Персонализируется через SEAC и OMAPI в том числе и удаленно
• Может быть сертифицирован на требования безопасности
Минусы:
• Необходимы взаимоотношения с производителями мобильных
устройств
31. Что такое TEE и как оно может помочь?
TEE – это Trusted Execution Environment, технология, предоставляющая
приложению защищенное, изолированное пространство в памяти
ПЗУ/ОЗУ, а также внутри процессора, гарантируя безопасное
исполнения кода и целостность данных.
https://trustedcomputinggroup.org/work-groups/trusted-platform-module/
https://www.globalplatform.org/mediaguidetee.asp
32. Существующие реализации TEE…
• ARM TrustZone
• Intel Trusted Execution Technology
• AMD Secure Technology (based of ARM TrustZone)
• Trustonic
• Trusty TEE for Android
• FAMOCO Secure Android OS (единственное доступное решение на
рынке мобильных устройств)
https://en.wikipedia.org/wiki/Trusted_execution_environment
33. Паспорт в TEE
Плюсы:
• Паспорт работает назависимо от того есть ли покрытие сотовой сети
• Может быть сертифицирован на требования безопасности
• Перспективная технология
Минусы:
• Малая популярность
• Не разработаны методики проведения сертификации на безопасность
36. Паспорт в облаке
Плюсы:
• Облачное решение может быть сертифицировано на требования
безопасности
• Персонализация клиентского приложения не требуется, все данные в базе
данных в облаке
• Единственная возможность развертывания, будучи независимым от
производителей устройств
Минусы:
• Паспорт работает только при покрытии сотовой сети
37. Подытог
Мы рассмотрели четыре различных подхода реализации паспортного
приложения на мобильном устройстве и провели анализ плюсов и минусов:
• Паспорт как приложение APK из Play Market
-> не отвечает требованиям безопасности
• Паспорт на SE
-> требуется авторизация производителем мобильного устройства
• Паспорт в TEE
-> технология недоступна для массового рынка
• Паспорт в облаке
-> способно решить аспекты безопасности, но будет работать только при доступе в
сеть
38. Если не паспорт, то что? Зачем нам HCE?
Ответ вытекает из анализа областей, в которых используются
интеллектуальные карты:
• Платежи
• Карты лояльности
• Модули ЭЦП
• Медицинские карты
• Транспортные карты
• Удостоверения, несовместимые со стандартами паспорта ICAO
39. HCE: Android vs iOS
Операционная система iOS не предоставляет API для работы с HCE
40. Выводы
Несмотря на открытые вопросы в отношении аспектов безопасности,
на сегодняшний день Android единственная операционная система,
предоставляющая HCE API независимым разработчикам.
Давайте поблагодарим ее за это!