La aplicación de Android de mi banco permite a los usuarios realizar transacciones financieras sin el uso del generador físico de token (que requiere que se inserte una tarjeta de cajero automático y que se proporcione un PIN válido) que normalmente se requiere al usar la interfaz web del banco. Sin embargo, esto solo se admite cuando se utiliza la aplicación en un teléfono que viene con un elemento seguro de hardware en el que puede almacenar claves criptográficas y demás.
Inicialmente, me pareció una buena decisión, ya que los dispositivos sin un Elemento seguro tendrían que almacenar las claves en la memoria o en el almacenamiento persistente, y por lo tanto son vulnerables a los ataques de malware instalado en el mismo dispositivo.
Sin embargo, al pensar esto, tengo la impresión de que usar el Elemento seguro en realidad dejaría a uno tan vulnerable a estos ataques que cuando solo protege las claves a través del software ; compara estos dos enfoques:
- El sistema se basa en el sistema operativo para restringir el acceso a las claves: otras aplicaciones no pueden acceder a ellas mientras se encuentran en la zona de usuario, pero cuando un atacante logra obtener acceso de root al dispositivo, puede robar las claves y firmar o cifrar lo que sea. Ellos quieren, haciéndose pasar por la aplicación bancaria. Esto les permite forjar transacciones.
- El sistema almacena las claves en el SE y confía en el sistema operativo para restringir el acceso a este hardware: otras aplicaciones no pueden acceder a ellas mientras se encuentran en la zona de usuario, pero cuando un atacante logra obtener acceso de root puede instruirlo para firmar y cifrar lo que quieran , simulando ser la aplicación bancaria. Esto les permite forjar transacciones.
Debido a esto, el uso del chip de hardware para este propósito me parece bastante inútil. Lo mismo se aplica a aplicaciones similares que confían en él para almacenar material confidencial.
¿Me estoy perdiendo algo aquí? ¿Existe alguna situación en la que el elemento seguro ofrezca un beneficio de seguridad claro para esta aplicación bancaria, por lo que es razonable exigirlo?