Как хранить данные в Secure Element Android? Ссылка: Эмуляция хост-карты

  1. С момента запуска Kitkat Android утверждает, что Secure Element не требуется для эмуляции Host Card. Если это не требуется, то как кто-нибудь может хранить данные карты в Android?

  2. Существует также служба OffHostApdu, на которую, по словам разработчиков.android.com, ссылаются в случае, если наше приложение для Android имеет доступ к Secure Element. Может ли кто-нибудь объяснить

  3. Кроме того, есть ли ограничение на объем памяти для данных Secure Element?


person Vny Kumar    schedule 20.03.2014    source источник


Ответы (1)


С момента запуска Kitkat Android утверждает, что Secure Element не требуется для эмуляции Host Card. Если это не требуется, то как кто-нибудь может хранить данные карты в Android?

В Android Kitkat у вас есть два возможных способа эмуляции карты:

  1. Эмуляция карты на основе хоста. В этой эмуляции вы пишете службу Android, которая эмулирует карту, отвечающую на команды APDU ISO7816-4. Сервис может хранить данные так же, как и любой другой сервис или намерение Android.

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

Каждая эмуляция карты должна быть зарегистрирована с помощью AID (идентификатора приложения). Эти AID могут быть зарегистрированы либо для эмуляции карты на основе хоста, либо для эмуляции карты вне хоста.

Если считыватель NFC начнет разговаривать с вашим телефоном, он отправит команду SELECT APPLICATION, содержащую AID, с которым он хочет поговорить. Как только чип NFC получит такую ​​команду, он проверит свой внутренний реестр зарегистрированных эмуляций карт и направит все, что зарегистрировано для защищенного элемента, в защищенный элемент. Все остальные коммуникации направляются на хост. Хост проверит собственный реестр доступных эмуляций карт вне хоста и запустит/активирует службы эмуляции карт вне хоста, если найдет соответствующий AID.

Кроме того, есть ли ограничение на объем памяти для данных Secure Element?

Да, конечно, есть предел. Если бы не было предела, можно было бы просто забыть о жестких дисках и дорогих хранилищах, купить один защищенный элемент и хранить на нем все данные мира :-)

Точный объем свободной памяти на защищенном элементе зависит от того, какой защищенный элемент встроен в ваш телефон. Различные марки и модели поставляются с разными объемами памяти. Также ограничена память, если на защитном элементе предустановлены апплеты. Обычно вам не нужно беспокоиться об этом, потому что в любом случае маловероятно, что вы когда-либо получите ключи для установки апплета на защищенный элемент.

В общем, возможно все, от 64 КБ памяти до нескольких гигабайт.

person Nils Pipenbrinck    schedule 21.04.2014
comment
Привет, Нильс, ты дал достаточно информации. Но когда вы говорите, что служба может хранить данные, как и любая другая служба или намерение Android. Что это значит и как хранить данные? означает ли это обычные механизмы хранения, такие как sqllite/SharedPref? Или это просто временные данные для одноразовой транзакции между двумя устройствами NFC? Спасибо большое чувак.... - person Vny Kumar; 22.04.2014
comment
это означает обычное хранилище, такое как sqlLite/SharedPref и другие. Вы также можете подключиться к Интернету и хранить данные на каком-либо веб-сервере или в облаке. - person Nils Pipenbrinck; 22.04.2014
comment
Спасибо, Нильс, за хороший ответ. Есть еще один вопрос: как программная эмуляция карты сохраняет конфиденциальные данные? Например, если я использую HCE для мобильного кошелька, как я могу гарантировать, что никто не изменит баланс кошелька, хранящийся в приложении mWallet? - person Gupta; 27.04.2014
comment
Не храните данные на телефоне. Сохраните его на каком-нибудь интернет-сервере и надейтесь, что никто не сможет взломать сервер :-) - person Nils Pipenbrinck; 27.04.2014