estudio de Fraunhofer en la seguridad llavero iOS:
Por lo que puedo decir, hay dos niveles de encriptación que usa el llavero iOS. El primer nivel usa el código de acceso de la pantalla de bloqueo como clave de cifrado. El segundo nivel usa una clave generada y almacenada en el dispositivo.
Los investigadores de Fraunhofer han descubierto cómo moverse en el segundo nivel. Este es el nivel "más fácil" para moverse, ya que la clave de cifrado está almacenada en el dispositivo. Por lo tanto, en iOS4, su método solo funciona con las entradas de llavero que NO usan kSecAttrAccessibleWhenUnlocked o kSecAttrAccessibleWhenUnlockedThisDeviceOnly, porque esas entradas residen en la memoria con el primer nivel descifrado, incluso cuando el teléfono está bloqueado.
- A partir de IOS 4, llaves con kSecAttrAccessibleWhenUnlocked y kSecAttrAccessibleWhenUnlockedThisDeviceOnly están protegidos por un nivel adicional de cifrado
- En iOS 3.x y versiones anteriores, todas las teclas pueden ser descifrados usando el método de Fraunhofer, independientemente de atributo de accesibilidad utiliza
- dispositivos que no tienen claves de acceso en todo seguirá siendo vulnerable
- Los dispositivos con códigos de acceso débiles (menos de seis dígitos) seguirán siendo algo vulnerable
≈50ms por contraseña try; → ≈20 intentos por segundo; → ≈1.7 años para un 50% cambio de adivinar el código correcto para un código alfanumérico de 6 dígitos con base 36. El código simple estándar de 4 dígitos numéricos sería forzado en menos de 9 minutos. Basado en el supuesto de que el contador de intentos incorrectos en el IOS se puede omitir, ya que no es
Apple Inc. WWDC 2010 basada en hardware, Core OS, Sesión 209 "Protección de Datos", corredera 24
Resultado final: Si debe almacenar datos confidenciales, utilice mejor su propio cifrado. Y no almacene la clave en el dispositivo.
Editar: Hay numerosos news articles la que citar el estudio del Instituto Fraunhofer y tranquilizar a sus lectores que no se preocupe menos que se roban sus dispositivos, ya que este ataque sólo se puede hacer con el acceso físico al dispositivo.
Estoy de alguna manera dudoso. El hecho de que los investigadores hicieron sus pruebas con el acceso físico al teléfono parece haber sido solo una forma de simplificar el problema, en lugar de ser una limitación. Esta es la descripción de lo que hicieron para descifrar las entradas Llavero:
Después de usar una herramienta de jailbreak, para obtener acceso a una consola de comandos, que ejecutar un pequeño script para acceder y descifrar las contraseñas que se encuentran en la llavero. El descifrado se realiza con la ayuda de las funciones proporcionadas por el sistema operativo .
Como cualquiera que haya utilizado jailbreak.me sabe, jailbreaking no requiere física acceso al dispositivo. En teoría debería ser trivial para modificar el código jailbreak.me y lo han automatizar los siguientes:
- Realizar la fuga de la cárcel de forma normal (todo esto requiere es que el usuario abra un archivo PDF creado de manera malintencionada)
guiones
- de ejecución de Fraunhofer después de la fuga de la cárcel se ha completado
- Enviar las contraseñas a través de la red a una ubicación que el atacante puede leer desde
Así, una vez más, tenga cuidado con lo que pone en el llavero.
Esta pregunta sería apropiada en http://security.stackexchange.com –
Aún así, muy relevante para todos nosotros desarrolladores de iOS que frecuentan Stack Overflow. Quizás todos deberíamos visitar security.stackexchange.com con más frecuencia? :) –