Надежный источник времени для апплета JavaCard на SIM-карте

У меня есть апплет JavaCard, работающий на SIM-карте Gemalto в смартфоне. Я хотел бы создать электронный кошелек со сроком действия до указанной даты и времени.

Я знаю, что это невозможно, используя классическую смарт-карту, в которой нет часов внутри из-за отсутствия батареи. Однако с SIM-картой возможно: SIM-карта должна иметь некоторый доступ к сетевому времени (а не к местному системному времени, которое может быть изменено пользователем) при подключении к сети, и последнее известное значение времени сети может быть Вероятно, хранится где-то на SIM-карте.

Есть ли способ получить доступ к последнему известному сетевому времени из моего апплета безопасным способом? (Я не доверяю никакому приложению, установленному в телефоне, потому что его можно легко взломать)

Как вы думаете, есть ли другое решение моей проблемы?

РЕДАКТИРОВАТЬ

Я не упоминал причины, почему я думаю об этом: мне нужно решить эту проблему без подключения к Интернету , потому что мои клиенты должны использовать мой электронный кошелек без подключения к Интернету в своих телефонах. Они должны использовать его в метро, ​​где нет сигнала, а некоторые из них вообще не платят за подключение к Интернету. Поэтому мое приложение должно быть в состоянии найти время в автономном режиме.

EDIT 2

На телефонах Android есть опция:

Настройки времени сети Android

Это означает, что есть независимый от пользователя источник времени. Вопрос в том, можно ли каким-либо образом безопасно получить доступ из апплета JavaCard на SIM-карте. (Или если последнее известное значение можно получить в случае отсутствия соединения)

Это зависит от вашего проекта. У вас есть 3 решения. Один для случаев, когда у вас есть доступ к Интернету по телефону, и два для случаев, которые у вас нет.

Если у вас есть доступ в Интернет:

  1. На этапе установки телефонного приложения он отправляет IMSI SIM-карты на сервер, который вы установили уже через канал https (необязательно!).
  2. Ваш сервер регистрирует IMSI и дату установки в таблице базы данных на сервере.
  3. В дальнейшем, каждый раз, когда телефонное приложение хочет начать сеанс с помощью апплета SIM, он должен отправить запрос на ваш сервер, и сервер ответит на этот запрос с зашифрованным (его текущая дата + IMSI_counter).
  4. Если телефонное приложение получает ответ успешно отправляет его и время телефона (в обычном порядке) на SIM-апплет.
  5. Апплет SIM шифрует «обычную дату телефона + счетчик IMSI +» с тем же секретным ключом, который мы использовали на сервере, а затем сравниваем результат со значением, которое его сервер отправил на мобильный телефон.
  6. Если оба они равны, это означает, что время телефона совпадает с временем вашего сервера.

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

Если у вас нет доступа в Интернет:

Все пакеты SMS, окутанные конкатенацией с текущим временем сервера, но обычно, оператор отправляет свои пакеты на специальный апплет на карте. Я имею в виду, что у пакетов есть заголовок, который указывает AID его апплета на карточке. SIM-карта анализирует и расшифровывает эту пакетную информацию, а ее тело возвращается на телефон (для вызовов и SMS-сообщений, а не для конвертов OTA). В этой процедуре данные (как зашифрованные, так и дешифрованные) не используются на SIM-карте. Поэтому, если вы устанавливаете апплет на SIM-карте, невозможно получить эти данные (включая текущее время сети), и вы должны использовать один из следующих вариантов:

  1. Попросите вашего оператора сотовой сети отправлять конверт времени вашему апплету (т. Е. Заголовок пакета указать вашу Аппликационную АД) каждый день и автоматически. (Используя этот метод, вам больше не нужно ничего делать в своем телефонном приложении)

или:

  1. Использование раздела сетевого времени других SMS-сообщений на телефоне с помощью вашего телефонного приложения. (Используя этот метод, вам необходимо потребовать от СМС отправки / получения прав на чтение и запись с телефона в настройке вашего телефона, и вам не нужно просить оператора сделать что-нибудь особенное для вас!)