El problema con las claves codificadas es que puedes encontrarlas (como lo hiciste). Como se ha dicho, el cifrado y descifrado de los datos es trivial. El aislamiento del proceso de Android es sólido (no perfecto), pero proporciona un buen grado de separación entre aplicaciones.
Hay tres escenarios en los que puedo pensar que una amenaza podría aprovechar.
- Aplicación de Android malintencionada con raíz
- Compromiso físico del teléfono
- La aplicación tiene acceso completo a sus datos
Hay muchas aplicaciones y 3 aplicaciones rd por ahí que requieren de root para realizar todas de su funcionalidad. Si su teléfono está rooteado y descarga una aplicación malintencionada, el aislamiento del proceso no marcará la diferencia. Los datos privados se pueden leer, descifrar y filtrar.
Si su teléfono es robado, puede ocurrir lo mismo. Se puede utilizar un exploit para rootear el teléfono y descargar los datos de la aplicación privada. Con las claves codificadas, los datos se pueden descifrar.
Esto no quiere decir que sea trivial de realizar. El bloqueo de su teléfono (con suerte) forzará al atacante a rootear el teléfono por USB. No conozco los detalles específicos de todos los métodos para reiniciar un teléfono, pero creo que la mayoría de ellos eliminará cualquier información útil del teléfono. Como usuario paranoico de Android, evitaría usar las aplicaciones que sé que tienen claves codificadas, pero si no fuera paranoico no me importaría tanto. El nivel de esfuerzo para realizar la explotación es bastante alto. Quieren pasar por todos esos problemas para ver mi puntuación de Candy Crush ... ve por ello 1 .
El tercer escenario es probablemente más preocupante. Si usan claves codificadas, lo que impide que los propietarios de la aplicación envíen la información confidencial (podría estar encriptada) a su propio servidor privado. Ellos conocen la clave codificada, por lo que solo pueden descifrar a voluntad sus datos.
El modelo de amenaza aquí realmente depende del tipo de datos que protegen estas aplicaciones. Si prefieres recibir notificaciones ... entonces tal vez no te importe. Si se trata de conversaciones privadas, contactos, mensajes, imágenes, etc., entonces esta sería una amenaza mayor.
Por necesidad, la aplicación en sí misma tiene la clave para cifrar y descifrar.
No necesariamente. Hay varias formas en que la aplicación podría cifrar datos privados de forma segura sin necesidad de una clave codificada. La aplicación podría requerir una contraseña de usuario que genere la clave de cifrado o descifre una clave privada que luego se usa para descifrar datos. O las aplicaciones solo podrían usar el almacenamiento seguro de Android, ya que usted sabe ... está provisto, documentado y es fácil.
1 No estoy tratando de decir que las claves codificadas son una buena idea o no afectan la seguridad. Solo trato de señalar que el nivel de dificultad para explotarlo sería alto.