• # Vague et contradictoire

    Posté par . En réponse à la dépêche La sécurité dans le développement. Évalué à 10.

    La plupart des conseils donnés sont flous, pas forcément applicables, potentiellement contradictoires, voire incitent à faire n'importe quoi. Plus précisément :

    Comme il est possible par bruteforce (ou des techniques plus raffinées) de retrouver le mot de passe en clair et qu'il existe des tables précalculées (Rainbow table) pour les principaux algorithmes, il est aussi conseillé de saler les mots de passe. Cela consiste à ajouter des bits aléatoirement générés à la création du login et les ajouter au mot de passe avant d'utiliser la fonction de hachage.

    Le bon conseil à donner et d'utiliser une fonction de dérivation de clé connue, de lire sa documentation et de comprendre son interface. Le conseil tel qu'il est formulé ici incite le lecteur à implémenter sa propre technique de salage, ce qui va certainement résulter en de mauvais choix peu sécurisés (en particulier si c'est utilisé avec un algorithme de hachage n'ayant pas les bonnes propriétés). Au lieu de jouer à l'apprenti cryptographe, il vaut mieux utiliser des solutions déjà conçues par des spécialistes. Ça n'empêche pas de décrire l'idée sous-jacente (autant en plus comprendre ce qui est fait), mais en insistant pour éviter les mises en œuvres manuelles.

    L'intérêt est de ralentir le déchiffrage de votre base de données, et, à moins que vous n'authentifiez des milliers d'utilisateurs par seconde (ce qui peut arriver en cas d'attaque DDoS, il est donc bon de s'en protéger), ça ne devrait pas poser de problème de performances sur votre serveur.

    Merci le conseil contradictoire, c'est non-clair au possible. Je dois utiliser des algorithmes couteux en ressource, ou plutôt essayer de me protéger des DDoS ? Tu veux dire qu'il ne faut pas faire ce que tu dis, ou qu'il faut faire autre chose que tu ne dis pas ? Ça pose problème ou pas finalement ?

    Les bibliothèques sont idéalement à inclure (mais cela représente certainement trop de travail pour être réellement fait)

    Donc il faut le faire ou il ne faut pas le faire ? Si ce n'est pas faisable en pratique, autant ne pas en parler, les gens ne le feront pas. Une bonne politique de sécurité doit prendre la faisabilité en compte.

    Et d'ailleurs ce conseil n'est-il pas contradictoire avec celui des distributions qui conseille au contraire d'utiliser les bibliothèques partagées, pour profiter des fixes de sécurité ? Tu parles d'autre chose, à un autre degré de la chaîne, qui s'applique dans d'autres circonstances ?

    L'usage de conteneurs dynamiques (listes chaînées, par exemple) permet de réduire drastiquement les risques de ce genre d'attaques, mais impliquent un coût en ressources (temps processeur et occupation mémoire notamment) plus élevé. Ces conteneurs ne sont donc pas la panacée.

    Donc je les utilise ou pas ? Si ce n'est pas la bonne solution, qu'est-ce qui est conseillé ici ?