¿Es seguro sincronizar claves privadas entre dispositivos iOS usando iCloud?

11

Mi aplicación iOS tiene que manejar el almacenamiento de claves privadas para el usuario. Normalmente solo usaría Keychain Services para esto como I sería una contraseña, pero sería genial si pudiera sincronizar las claves entre los dispositivos del usuario.

documentación de iCloud dice que no debe usar iCloud para contraseñas, pero ¿es seguro usarlo para claves privadas? Aparentemente , los datos de iCloud se cifran en tránsito y en el servidor.

¿Existe algún riesgo de seguridad al sincronizar las claves privadas en el almacén de valor-clave de iCloud?

    
pregunta Nathan G. 17.03.2013 - 19:57
fuente

3 respuestas

9

Desecharía la opción de sincronización directa y simplemente permitiría al usuario exportar su clave privada a una ubicación de su elección, por ejemplo. iCloud, DropBox, almacenamiento interno, etc., en un formato cifrado.

En la exportación, haría algo como esto:

  • Pídale al usuario una contraseña para usar. No les imponga restricciones, ¡es su trabajo usar una buena contraseña!
  • Use un algoritmo de derivación de clave fuerte como PBKDF2 para generar una clave de almacenamiento. Usa un número decente de rondas.
  • Prefije el blob de clave privada en la memoria con cuatro bytes conocidos (un número mágico), por ejemplo. 'NATG', para formar su texto plano.
  • Cifre el texto simple con AES-128 o un cifrado de bloque similar, en modo CBC, usando la clave de almacenamiento y un IV generado aleatoriamente.
  • Exportar el texto cifrado y IV en un archivo.

En la importación:

  • Extraiga el texto cifrado y el IV del archivo.
  • Pídale al usuario la contraseña y genere la misma clave usando PBKDF2.
  • Descifre el texto cifrado usando la IV y la clave.
  • Verifique que los primeros cuatro bytes del texto simple coincidan con sus bytes conocidos. Si no, es la contraseña incorrecta. Si es así, ¡estamos en el dinero!
  • Elimine los primeros cuatro bytes y tendrá la clave privada!

Esto permite a los usuarios sincronizar claves privadas rápida y fácilmente a través del servicio de comunicaciones que desean, ya sea iCloud o DropBox o incluso correo electrónico, con un nivel de seguridad razonable. Si su cuenta se rompe, el atacante aún tiene que descifrar su contraseña. Si han usado uno decente, PBKDF2 debería hacer un trabajo decente para hacer que su intento de craqueo sea inviable.

    
respondido por el Polynomial 17.03.2013 - 21:06
fuente
3

Las claves privadas son esencialmente lo mismo que las contraseñas. Para ser un dispositivo de seguridad eficaz, deben mantenerse en secreto. Entonces, no, si la documentación dice que no debería ser para contraseñas, es lógico pensar que tampoco es lo suficientemente seguro como para ser usado para claves privadas.

    
respondido por el Xander 17.03.2013 - 21:02
fuente
1

A diferencia de la sugerencia de Polynomial, no me gusta exportar a DropBox o correo electrónico, ya que la mayoría de los usuarios finales usan aplicaciones de terceros que tienen acceso a todo el almacén de datos usando aplicaciones vinculadas.

DropBox en particular hace que sea demasiado fácil para una aplicación obtener acceso completo a todo el almacenamiento (claves y todo).

Actualmentemeestoyinclinandopor iCloud , donde ninguna otra aplicación tiene la capacidad de leer los datos que guardo en el almacenamiento privado. Me tomó un minuto entender esta tecnología, donde cada aplicación de iOS tiene su propio contenedor.

Un contenedor por aplicación consta de

  • Una base de datos pública que pueden leer / escribir en
  • Una base de datos privada por usuario de iCloud

En general, solo hay un contenedor por aplicación, lo que significa que cada aplicación iOS está aislada una de otra.

Además, el desarrollador no puede leer directamente el contenido de la base de datos iCloud de un usuario. Esta es una característica que DropBox OAuth, y otro almacenamiento de productos básicos no tiene.

(sin mencionar, es casi gratis )

Dicho esto, seguiría encriptado como sugiere Polinomio, sin importar a dónde vaya.

    
respondido por el random65537 15.05.2016 - 23:37
fuente

Lea otras preguntas en las etiquetas