¿Cómo implementar la autenticación codificada de inicio de sesión de Android?

Tengo una base de datos de inicio de sesión, desde mi cliente Android tengo que pasar la contraseña de una manera segura. Quiero implementar una pantalla de inicio de sesión que es capaz de hacer cifrado.

¿Cómo implementar el cifrado de seguridad en mi aplicación?

Todavía es un poco vago lo que es lo que quieres lograr, ya que realmente no entiendo lo que quieres decir con "pantalla de inicio de sesión que es capaz de hacer cifrado".

Si te entiendo correctamente aunque estoy adivinando que desea tener una pantalla de inicio de sesión en su aplicación que sus usuarios necesitan para pasar a fin de utilizar su aplicación. Algo como una puerta en un edificio, o una cerca? Bueno, no puedo decir exactamente cómo lograrlo, pero tal vez aclarar algunos problemas.

Primer intento – ftp de Plaintext, o es?

El usuario introduce su nombre de usuario y una contraseña, comprueba si el usuario existe en la base de datos y compara la contraseña con la de la base de datos.

Simple, pero no tan seguro. En este caso necesitará almacenar las contraseñas en texto claro, lo que significa que alguien más ( vamos a llamar a su malvada Eva ) podría crear otra aplicación, leer de la base de datos y obtener las contraseñas.

Mitigación paso 1 – Hash

Para mitigar esto podría hash su contraseña (preferiblemente con una sal). Para hash una cadena, eche un vistazo a la clase MessageDigest , hay un ejemplo disponible a través del enlace. Ahora, usar un hash significa que usted (para citar Wikipedia)

Convertir una cantidad grande, posiblemente de tamaño variable de datos en un pequeño datum

Es decir, se obtienen algunos datos distintos de lo que se da la función hash. Un hash es una función rápida y unidireccional, por lo que no obtendrá la contraseña real una vez que la hasch. Pero no hay problema, almacenar el hash de la contraseña en la base de datos, y comparar el hash de la contraseña al iniciar sesión.

Esto es algo mejor que el texto sin formato, malvado Eve podría leer de la base de datos, pero no sería la contraseña que necesita para entrar en su aplicación para iniciar sesión. No se preocupe por Eve mal, "Voy a conseguir una mesa de Rainbow " Dice, "y comparar mi tabla de arco iris con la contraseña de su base de datos".

Mitigación paso 2 – Hashing con una sal

Tan cerca … Bueno, para mitigar un ataque de arco iris puedes usar una sal, en otras palabras otro valor añadido a la contraseña que creará un hash diferente. La belleza de los hashes son que sólo es necesario agregar una pequeña cantidad de datos adicionales para que el hash parezca casi aleatoriamente diferente del hash sin los bits adicionales de datos. Una simple sal puede ser el nombre de usuario, almacenar hash(username + password) lugar de hash(password) . Ahora, puesto que los hashes son rápidos de calcular, la sal debe ser ocultada de alguna manera. La forma en que lo haces depende de ti , pero debes enfatizar que lo tienes en secreto.

Evil Eve ya está bastante enojada, pero podría encontrar la sal, y en ese caso deja su computadora corriendo cuando duerme y cuando se despierte seguramente tendrá una contraseña agrietada.

Mitigación paso 3 – Las iteraciones son tu amigo

Dado que las funciones de hash son rápidas, ¿por qué no simplemente hash el hash de la contraseña, y ya que son rápidos, ¿por qué no hash el hash del hash de la contraseña? Hey, mientras estamos en ello, ¿por qué no hacerlo de esta manera. ¿Cuánto tiempo debe esperar el usuario antes de poder iniciar sesión? Si está bien esperar un segundo, ¿cuántas iteraciones puedes completar en ese segundo? La lectura de algunas respuestas en este hilo de stackoverflow podría dar algunas razones, cuanto más mejor. Combine esto con la mitigación de la sal y debe ser bastante sólido.

Bueno, Malvada Eva tendrá un tiempo difícil penetrar su pantalla de inicio de sesión por ahora, hashed contraseñas con sales e iteraciones y todo.

Otros asuntos

Pero recuerde, su defensa es tan fuerte como su eslabón más débil! Pregúntese esto también, ¿qué estoy tratando de proteger? ¿Protegerá mi pantalla de inicio de sesión? ¡Si los villanos no pueden romper la puerta, podrían simplemente pasar por el seto !

Puede leer más acerca de la seguridad en Java y la arquitectura de cifrado si desea obtener más información acerca de la seguridad en Java.

  • Cómo proteger la llamada a webservice en Android
  • ¿Qué problemas de seguridad puede causar SendBroadcast y qué es un enfoque mejor?
  • Cómo proteger la contraseña SFTP en APK?
  • Android: el resultado de AsyncTask no se devuelve a la actividad principal
  • ¿Hay análogos javax.smartcardio en Android?
  • Prevención de piratería de Android con solicitudes de servidor
  • Comprueba si la solicitud HTTP proviene de mi aplicación Android
  • ¿Debo ofuscar el secreto de consumidor de OAuth almacenado en la aplicación de Android?
  • La aplicación Detectar Android se está ejecutando en modo de depuración
  • XmlHttpRequest problema de publicación doble en Android
  • Seguridad de la carpeta de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.