Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Android как основа для реализации мобильного паспорта / Дмитрий Шорин (ООО Квелка)

192 views

Published on

РИТ++ 2017, AppsConf
Зал Касабланка, 6 июня, 17:00

Тезисы:
http://appsconf.ru/2017/abstracts/2536.html

Операционная система Android на устройствах, поддерживающих технологию NFC, теперь может рассматриваться в качестве основы для реализации электронных, машино-считываемых персональных идентификационных документов, наподобие заграничного биометрического паспорта гражданина РФ. Благодаря использованию технологии Host-based Card Emulation (HCE), регулирующейся организацией NFC Forum, мобильный телефон теперь может заменить любое приложение, выполняющееся на интеллектуальной карте (смарт-карте) стандарта ISO7816, сохраняя при этом всю инфраструктуру инспекционного контроля неизменной.
...

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Android как основа для реализации мобильного паспорта / Дмитрий Шорин (ООО Квелка)

  1. 1. Android как основа для реализации мобильного паспорта Дмитрий Шорин dsh@kvelka.com
  2. 2. О чем будет этот доклад... • Поговорим о том, что такое биометрический паспорт • Объясним, зачем мы этим занялись • Разберем, как решить поставленную задачу • Рассмотрим обзорно другие потенциальные области применения
  3. 3. Что такое паспорт и что мы о нем знаем? Паспорт – это персональный идентификационный документ, содержащий биометрические данные владельца, применяющийся с целью установления инспектирующими органами личности предъявляющего.
  4. 4. Зачем нам знать про эти стандарты? ISO/IEC 14443 – это базовый интерфейс технологии NFC. ISO/IEC 7816 – это базовая технология интеллектуальных карт (smart cards).
  5. 5. Причем же здесь Android?
  6. 6. Android, NFC и Host based Card Emulation… Начиная в версии 4.4 KitKat (API level 19), в Android появлятеся поддержка такой функциональности, как Host based Card Emulation (HCE).
  7. 7. Как мы к этому пришли....
  8. 8. Как мы распознали тенденцию.... Мы видим, что устройства на Android стали заменять нам привычные монофункциональные вещи...
  9. 9. NFC HCE взамен интеллектуальных карт... Все наверняка слышали об AndriodPay, ApplePay, SamsungPay и т.д.
  10. 10. P<UTOTOLSTOY<<LEO<<<<<<<<<<<<<<<<<<<<<<<<<<< 1234567897RUS2808288M2601010<<<<<<<<<<<<<<<4 Issuing Country: Utopia Nationality: Russian Surname: TOLSTOY Name: LEO Sex: Male Date of Birth: 28/08/28 Validity Date: 26/01/01 Тот же самый подход, только для ID... Так нам пришла в голову идея реализации идентификационного документа на персональном мобильном устройстве.
  11. 11. Что не так в существующих паспортах? • Паспорт изготавливается и выдается в течение 4-х недель и требует посещения авторизованных органов минимум два раза • Все больше и больше стран переходит на электронные визы • При посещении некоторых стран иногда приходится иметь два паспорта
  12. 12. Как и где это может применяться? • Альтернатива существующим паспортам • В качестве национального идентификационного удостоверения • Как водительское удостоверение • Средство контроля доступа • Удостоверение болельщика ЧМ-2018 и т.д.
  13. 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. 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. 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. 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. 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. 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. 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> Метаданные, содержащие правила доступа к приложению
  20. 20. Как выглядит использование HCE... apduservice.xml выглядит так: <host-apdu-service xmlns:android="http://schemas.android.com/apk/res/android" android:description="@string/servicedesc" android:requireDeviceUnlock="false"> <aid-group android:description="@string/aiddescription" android:category="other"> <aid-filter android:name="F0010203040506"/> <aid-filter android:name="A0000002471001"/> </aid-group> </host-apdu-service>
  21. 21. Как выглядит использование HCE... apduservice.xml выглядит так: <host-apdu-service xmlns:android="http://schemas.android.com/apk/res/android" android:description="@string/servicedesc" android:requireDeviceUnlock="false"> <aid-group android:description="@string/aiddescription" android:category="other"> <aid-filter android:name="F0010203040506"/> <aid-filter android:name="A0000002471001"/> </aid-group> </host-apdu-service> Утвержденный стандартизацией идентификатор паспортного приложения
  22. 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. 23. Промежуточный итог... Итак, мы обсудили тенденцию, при которой монофункциональные интеллектуальные карты, замещаются многофункциоальными мобильными устройствами, способными их эмулировать. Таким образом, мы показали техническую реализуемость такой миграции. Что же сдерживает технический прогресс?
  24. 24. Чем интеллектуальные карты лучше?
  25. 25. Почему безопасность важна?
  26. 26. Первый блин – комом...или опять неудача? Плюсы: • Паспорт работает назависимо от того есть ли покрытие сотовой сети • Персонализируется через бесконтактный интерфейс • Подтверждает концепцию Минусы: • Сертификация на безопасность невозможна в виду уязвимости
  27. 27. Android и NFC HCE API, не нонсенс ли?.. Если Android небезопасна, то зачем NFC HCE API?
  28. 28. Посмотрим на опыт ApplePay и SamsungPay Приложение APK Приложение в SE
  29. 29. Что такое Secure Element? Secure Element (SE) – микросхема аналогичная интеллектуальной карте, встраиваемая в мобильное устройство. Существуют SE, поддерживающие технологию Java Card. https://www.globalplatform.org/mediaguideSE.asp http://simalliance.org/se/se-educational-resources/
  30. 30. Plan B: Паспорт на SE Плюсы: • Паспорт работает назависимо от того есть ли покрытие сотовой сети • Персонализируется через SEAC и OMAPI в том числе и удаленно • Может быть сертифицирован на требования безопасности Минусы: • Необходимы взаимоотношения с производителями мобильных устройств
  31. 31. Что такое TEE и как оно может помочь? TEE – это Trusted Execution Environment, технология, предоставляющая приложению защищенное, изолированное пространство в памяти ПЗУ/ОЗУ, а также внутри процессора, гарантируя безопасное исполнения кода и целостность данных. https://trustedcomputinggroup.org/work-groups/trusted-platform-module/ https://www.globalplatform.org/mediaguidetee.asp
  32. 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. 33. Паспорт в TEE Плюсы: • Паспорт работает назависимо от того есть ли покрытие сотовой сети • Может быть сертифицирован на требования безопасности • Перспективная технология Минусы: • Малая популярность • Не разработаны методики проведения сертификации на безопасность
  34. 34. Опять тупик? Или посмотрим шире....
  35. 35. Паспорт в облаке NFC NFCHTTPS разве не так поступил Google при реализации своего AndroidPay?..
  36. 36. Паспорт в облаке Плюсы: • Облачное решение может быть сертифицировано на требования безопасности • Персонализация клиентского приложения не требуется, все данные в базе данных в облаке • Единственная возможность развертывания, будучи независимым от производителей устройств Минусы: • Паспорт работает только при покрытии сотовой сети
  37. 37. Подытог Мы рассмотрели четыре различных подхода реализации паспортного приложения на мобильном устройстве и провели анализ плюсов и минусов: • Паспорт как приложение APK из Play Market -> не отвечает требованиям безопасности • Паспорт на SE -> требуется авторизация производителем мобильного устройства • Паспорт в TEE -> технология недоступна для массового рынка • Паспорт в облаке -> способно решить аспекты безопасности, но будет работать только при доступе в сеть
  38. 38. Если не паспорт, то что? Зачем нам HCE? Ответ вытекает из анализа областей, в которых используются интеллектуальные карты: • Платежи • Карты лояльности • Модули ЭЦП • Медицинские карты • Транспортные карты • Удостоверения, несовместимые со стандартами паспорта ICAO
  39. 39. HCE: Android vs iOS Операционная система iOS не предоставляет API для работы с HCE
  40. 40. Выводы Несмотря на открытые вопросы в отношении аспектов безопасности, на сегодняшний день Android единственная операционная система, предоставляющая HCE API независимым разработчикам. Давайте поблагодарим ее за это!
  41. 41. Благодарю за внимание! Дмитрий Шорин dsh@kvelka.com

×