bonjour,

En cherchant un paquet npm pour chiffrer les mot de passe de ma base de données, j'ai constater que brcyptjs marche aussi cotés navigateur. Je comptais le faire cotés serveur par habitude mais du coup je me demande si il y a des contreindications à le faire cotés client.

J'espère avoir été clair

Merci d'avance

4 réponses


Draserwang
Réponse acceptée

D'un point de vue de la sécurité, cela n'apporte rien. Si la connexion n'est pas chiffrée, le hash sera connu en sniffant les paquets du client au serveur. Il suffira donc à l'attaquant de récupérer la valeur du hash et de la renvoyer. Si la connexion est chiffrée, cela n'est pas possible (le contenu du paquet n'est pas lisible sans déchiffrement). Mais cela n'apporte pas plus de sécurité que si tu envoyais le mot de passe (vu qu'il sera chiffré durant la communication chiffrée).
L'idée du salt est malheureusement mauvaise utilisée comme ça. En effet, quand le client demandera le salt, celui-ci sera passé en clair. L'attaquant connaitra donc le salt. Le salt n'est utile que si c'est un secret. Or ici, le client aura toutes les informations nécessaires pour le lire (même si envoyé chiffré, il faudra bien le déchiffré). Donc non, le salt comme ça ne protège en rien contre les attaques dictionnaires.

Les avantages de hash coté client sont:

  • Le hash est calculé du coté client et pas côté serveur. Ceci permet de soulager le CPU serveur (de pas grand chose, mais si tu es très juste, ça peut aider).
  • Le mot de passe ne voyage pas en clair sur le réseau. Si un pirate arrive à voir la valeur du hash, il pourra l'utiliser uniquement sur les autres site qui utilisent le même algorithme de haschage. (et encore, c'est discutable)

En conclusion: ceci n'augementera pas la sécurité de ton site.

Huggy
Réponse acceptée

Tous les navigateurs maintenant intègrent le Web Crypto Api
on y trouve toutes les méthodes de chiffrement.
Donc si on veut chiffrer son MP côté client (hors https) on peut passer par un système de clé privée / clé publique comme RSA.
le client chiffre le MP (salé) avec la clé publique et le serveur le déchiffre avec sa clé privée.

re,
merci à vous 3 pour votre réactivités et vos réponses.
je ne connaissais pas le Web Crypto Api, je pense que je vais me pencher la-dessus. A part mdn ou w3c, la doc est rare.
@Huggy, si tu as un lien/tuto ou deux je suis preneur.

Sur Web Cryptography Api j'avais écrit ça un moment, si ça peut t'aider ?