2010-08-27 3 views
1

J'ai une application pour Android qui communique avec un back-end Google App Engine (GAE). Pour l'authentification, j'ai un nom d'utilisateur et un mot de passe, mais je ne veux pas stocker le mot de passe en texte brut sur le client et le transférer en texte brut sur un canal non sécurisé. Je pensais donc à hacher le mot de passe lorsque les utilisateurs le saisissent pour la première fois (enregistrement ou connexion) et le stocker sur le téléphone ainsi que sur la base de données GAE. Cependant, je ne suis pas sûr de la fonction de hachage cryptographique à utiliser, en pensant actuellement à sha1(), et si j'ai besoin de faire quelque chose d'autre ou juste un sha1(plainTextPassword).Crypter un mot de passe en texte clair pour GAE <> Communication Android

Des recommandations?

Répondre

5

Si vous voulez dire que vous allez envoyer le hachage du mot de passe du client au serveur, et le comparer à un hachage du mot de passe stocké sur le serveur, ce n'est pas sécurisé.

Toute personne qui intercepte le hachage peut l'utiliser pour se connecter à votre application. Pour votre application, le hachage est effectivement un mot de passe. L'authentification par mot de passe nécessite un canal privé vers un partenaire authentifié, par ex. SSH ou TLS. On pourrait argumenter qu'au moins, cela aide à protéger d'autres comptes de l'utilisateur qui pourraient partager le même mot de passe, mais un tour de SHA-1 sans sel laisse un mot de passe très sensible aux arc-en-ciel et aux attaques de dictionnaire. Utilisez une fonction de dérivation de clé de PKCS # 5 pour obscurcir correctement un mot de passe; 8 octets aléatoires de sel et quelques milliers d'itérations sont de bons paramètres pour PBKDF1.

+0

Merci pour votre réponse. Oui, je voulais en fait protéger les autres comptes de l'utilisateur. Se penchera sur les autres choses que vous avez écrites. – znq