Una tarjeta SIM es una tarjeta inteligente. Sigue todos los estándares relevantes para tarjetas inteligentes, es producido por proveedores de tarjetas inteligentes.
Una tarjeta inteligente es "solo" una computadora a prueba de manipulaciones. Tiene su propia CPU, RAM, ROM, área de almacenamiento (a menudo EEPROM). La potencia y el reloj se proporcionan desde el exterior. Se supone que el dispositivo es resistente a la extracción física de los datos almacenados internamente: está equipado con una gran cantidad de sensores que detectan una violación de la cubierta exterior, operaciones en condiciones fuera de rango (temperatura demasiado baja o demasiado alta, reloj tasa que se aleja de la frecuencia esperada ...), y, en última instancia, debería autodestruirse si es avanzado ingeniería inversa se intenta en él.
Por supuesto, todo esto es una cuestión de dinero. Se dice que la inspección directa con un microscopio electrónico y láseres cuesta unos miles de dólares; en los últimos años, fue una gran industria entre los piratas informáticos de televisión de pago por satélite (especialmente en países que recibieron la señal del satélite pero no pudieron suscribirse legalmente por falta de una infraestructura comercial; lo vi mucho en el norte de África, con Televisión europea). Además, los métodos académicos y la industria han estudiado seriamente los métodos de investigación para la extracción de la clave secreta de una tarjeta inteligente . Finalmente, una tarjeta inteligente es una computadora pequeña por derecho propio, utiliza software y, por lo tanto, tiene errores , algunos de los cuales son explotables.
Recientemente he trabajado con ese tipo de producto . Esta es una tarjeta inteligente que puede caber en el "formato SIM" y, sin embargo, puede almacenar y usar docenas de claves RSA. Las claves se generan a bordo, y el rendimiento es bastante aceptable para muchos usos (menos de 1 segundo para una firma RSA de 2048 bits). La tarjeta ha sido certificada para cumplir con FIPS 140-2 Nivel 3 y EAL 5+, que son bastante impresionantes (no garantizan que la tarjeta sea irrompible, pero demuestran que el vendedor había invertido menos esfuerzos y dinero para ese objetivo).
Lo que explico anteriormente es que es tecnológicamente posible tener una tarjeta similar a SIM que almacena y usa claves asimétricas para la criptografía, con una resistencia a la extracción de claves privadas que no es despreciable.
Ahora, por supuesto, el problema es que las tarjetas SIM implementadas y existentes no son necesariamente capaces de hacerlo. La funcionalidad principal de una tarjeta SIM es almacenar una clave simétrica y usarla para un protocolo de autenticación con la red del proveedor del teléfono. Esto se denomina A3 / A8 en el mundo GSM. Esto es solo para la criptografía simétrica, que es mucho más fácil desde el punto de vista de la computación y se puede realizar con una CPU básica de 8 bits, que no requiere ningún circuito acelerador. Estas tarjetas son bastante más baratas que las tarjetas inteligentes compatibles con RSA, y se sabe que las compañías telefónicas siempre intentan reducir sus costos lo más posible (el orden de magnitud del costo de producción de una tarjeta individual es de alrededor de 5 $ para una tarjeta compatible con RSA , menos de 1 $ por una tarjeta que solo realiza criptografía simétrica).
Algunas empresas han implementado tarjetas SIM que pueden calcular firmas , pero no creo que puedas espérelo de la mayoría de las tarjetas SIM existentes (todavía). La tecnología está ahí, ahora se necesita un incentivo comercial .
Otra complicación es si se permitiría el acceso desde una aplicación de Android. Dentro de un teléfono, la tarjeta SIM está bastante aislada, ya que se usa como la base legal para la facturación de la comunicación: si la tarjeta puede ser secuestrada desde una aplicación de malware, es demasiado fácil para los clientes afirmar que su teléfono fue pirateado y luego se niegan a pagar sus cuentas.
Usted no "cifra con la clave privada". Con una clave privada, usted descifra o firma . Supongo que su caso de uso es el de la autenticación: desea asegurarse, desde el servidor, de que un usuario específico esté en el otro extremo de la línea.