Fuente confiable de tiempo para el applet JavaCard en SIM

Tengo un applet JavaCard trabajando en la tarjeta SIM de Gemalto en un teléfono inteligente. Me gustaría crear una billetera electrónica con validez a una fecha y hora especificadas.

Sé que esto es imposible usar una tarjeta inteligente clásica, que no tiene ningún reloj dentro debido a la ausencia de la batería. Sin embargo, con una tarjeta SIM puede ser posible: una tarjeta SIM debe tener acceso a la hora de red (no la hora del sistema local, que puede ser modificada por el usuario) cuando se conecta a la red y el último valor de tiempo de red conocido podría ser Probablemente almacenados en algún lugar de la tarjeta SIM.

¿Hay alguna forma de acceder a la última hora de red conocida desde mi applet de forma segura? (No confío en ninguna aplicación instalada en el teléfono, ya que podría ser fácilmente hackeado)

¿Crees que hay otra solución de mi problema?

EDITAR

No mencioné la razón por la que pienso en esto: tengo que resolver este problema sin la conexión a Internet , porque se supone que mis clientes utilizan mi cartera electrónica sin la conexión a Internet en sus teléfonos. Tienen que usarlo en el metro donde no hay señal y algunos de ellos no pagan por la conexión a Internet en absoluto. Así que mi aplicación debe ser capaz de averiguar el tiempo fuera de línea.

EDIT 2

En los teléfonos Android, existe una opción:

Configuración de la hora de red de Android

Eso significa que hay alguna fuente de tiempo independiente del usuario. La pregunta es si se puede acceder de alguna manera de forma segura desde un applet JavaCard en la tarjeta SIM. (O si se puede acceder al último valor conocido en el caso de que no haya conexión)

Depende de su proyecto. Tienes 3 soluciones. Uno es para los casos que usted tiene acceso a Internet en el teléfono y dos para los casos que no lo hacen.

Si tiene acceso a Internet:

  1. En el paso de instalación de la aplicación del teléfono, envía el IMSI de la tarjeta SIM a un servidor que ya estableció a través de un canal https (Opcional!).
  2. Su servidor registra ese IMSI y la fecha de instalación en una tabla de base de datos en el servidor.
  3. De aquí en adelante, cada vez que la aplicación de teléfono desea iniciar una sesión con el applet de SIM, debe enviar una solicitud a su servidor y el servidor responder esa solicitud con un cifrado (su fecha actual + IMSI_counter).
  4. Si la aplicación del teléfono recibe la respuesta con éxito la envía y la hora del teléfono (en llano) al applet de SIM.
  5. El applet de SIM cifra la "fecha de teléfono simple + contador IMSI +" con la misma clave secreta que usamos en el servidor y luego compara el resultado con el valor que su servidor envía al teléfono móvil.
  6. Si ambos son iguales, significa que el tiempo del teléfono es el mismo tiempo de su servidor.

Utilizando el procedimiento anterior, en los casos en los que no desea que el applet de SIM funcione ya, puede enviar un valor cifrado no válido en la respuesta a solicitudes de aplicación de teléfono.

Si no tiene acceso a Internet:

Todos los paquetes de SMS envueltos concatenados con el tiempo actual del servidor, pero normalmente, el operador envía sus paquetes a un applet especial en la tarjeta. Quiero decir que los paquetes tiene un encabezado que indica la AID de su applet en la tarjeta. La tarjeta SIM analiza y descifra estos datos de paquetes y el cuerpo del mismo vuelve al teléfono (para llamadas y SMS-s y no para sobres OTA) .En este procedimiento los datos (cifrados y descifrados) no se comparten en la tarjeta SIM. Por lo tanto, si instala un applet en la tarjeta SIM, no hay forma de obtener esos datos (incluida la hora actual de la red) y debe utilizar una de las siguientes opciones:

  1. Solicite a su operador de red que envíe un sobre de tiempo a su applet (es decir, el encabezado del paquete indique su applet AID) todos los días y automáticamente. (Utilizando este método ya no necesita hacer nada en su aplicación de teléfono)

o:

  1. Uso de la sección de tiempo de red de otros SMS-s en el teléfono mediante la aplicación del teléfono. (Utilizando este método necesitas requerir el privilegio de envío / recepción de lectura / escritura SMS desde el teléfono en la instalación de la aplicación del teléfono y no necesitas pedirle al operador que haga algo especial para ti!)
  • Obtener la hora del sistema en milisegundos en android
  • Cómo cambiar el tiempo del simulador Android interno
  • ¿Cómo hacer que el código se detenga por un par de segundos en android?
  • Compruebe si la hora actual es más de una hora desde el tiempo "last_updated"
  • Cómo obtener la hora actual de Internet en android
  • ¿Cuál es la curva de aprendizaje para Android?
  • Cómo encontrar el tiempo es hoy o ayer en android
  • Añadir una cierta cantidad de tiempo a una hora actual y escribirlo
  • Tiempo de volver a Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.