Questions courantes

La réponse aux questions les plus courantes sur bcrypt ?



Faut-il utiliser bcrypt pour stocker ses mots de passe ?

Oui, aujourd'hui est l'algorithme le plus simple à utiliser et un des plus sur. Scrypt est réputé encore plus résistant aux attaques, mais il est difficile de l'utiliser dans les languages de programmation courant (Java, C#, .Net, PHP, etc.).

Bcrypt utilise un grain de sel interne ? Comment cela marche ?

Basiquement, l'algorithme fonctionne ainsi : Générer un grain de sel aléatoire. Un facteur coût a été préconfiguré (10 par défault en PHP). Générer le hash.

Le hash est la concétanation du cout, du grain de sel et du mot de passe "encodé". Quand quelqu'un essaye de se connecter, on récupére son mot de passe hashé pour savoir le grain de sel et le cout utilisé, et on génère un hash de la même manière. Si le hash est identique, le mot de passe est bon.

Un hash bcrypt ressemble à cela :

$2y$10$0IexiTnFtZ6BeARkfVvidemnnAuPydkcH2tEpVbnE60o97K3UZn26

Vous pouvez distinguer trois champs, délémité par des "$" :

  • 2y identifie la version de l'algorithme bcrypt qui a été utilisé.
  • 10 est le facteur cout utilisé (par défault en PHP).
  • 0IexiTnFtZ6BeARkfVvidemnnAuPydkcH2tEpVbnE60o97K3UZn26 est le grain de sel et le texte encodé, concaténé et encodé via une fonction Base64 personnalisé par l'algorithme. Les 22 premiers caractères décode une valeur sur 16 bits pour le grain de sel. Les caractères restants sont le mot de passe encodé et vérifier l'authentification.

Quels sont les bons moyens de gérer un mot de passe ?

Ne jamais :

  • Limiter le nombre de caractère maximum d'un mot de passe
  • Limiter les caractères possibles d'un mot de passe
  • Stocker les mots de passe en clair
  • Envoyer son mot de passe par mail à un utilisateur
  • Loguer les mots de passe dans les fichiers de log
  • Utiliser MD5, SHA1 ou SHA256 pour hasher un mot de passe

Toujours :

  • Hasher avec bcrypt
  • Utiliser un grain de sel
  • Réinitialiser tous les mots de passe si vous soupsconnez une faille de sécurité
  • Demandez une taille de mot de passe de 8 à 10 caractères minimum

Pourquoi faut-il hasher les mots de passe ?

L'objectif est simple : prévenir des accès frauduleux aux comptes de vos utilisateurs en cas de faille de sécurité. Le but est donc simple : que cela soit le plus couteux (en temps et/ou en argent) pour un hacker to décoder les mots de passe. Une autre raison d'utiliser un système robuste et de vous donner le temps de patcher votre système, réinitialiser tous les mots de passe, et demandez à vos utilisateurs de le faire aussi, en cas d'intrusion.

Qu'est qu'un bon mot de passe ?

L'entropie ! En clair, c'est le nombre de variation possible pour un mot de passe d'une taille donnée. Un mot de passe de 6 caractères minuscules, c'est 26^6 = 308 millions de possibilité. Un mot de passe de 10 caractères, dont des majuscules, chiffres, caractères spéciaux, c'est 96^10 = 66 milliars de milliars de possibilité. Simplement 216 milliars plus long à déchiffer... Pour résumer, un mot de passe comme "tINtiN1" est bien plus simple à deviner pour une machine que "merciHerged'avoircrééTintin!". Pensez-y pour vos prochains mot de passe !

Comment utiliser bcrypt en PHP ?

$text = 'mon mot de passe';
$text_hashed = password_hash($text, PASSWORD_BCRYPT)

Comment utiliser bcrypt en Node.JS ?

var bcrypt = require('bcrypt');
bcrypt.genSalt(10, function(err, salt) {
    bcrypt.hash("mon mot de passe", salt, function(err, hash) {
        // Store hash in your password DB.
    });
});
bcrypt.compare("un autre mot de passe", hash, function(err, res) {
    // res == false
});

Comment utiliser bcrypt en JAVA ?

Vous pouvez utiliser la librairie jBCrypt.

// Hacher un mot de passe
String hashed = BCrypt.hashpw(password, BCrypt.gensalt());

// Tester si un mot de passe est identique à un autre
if (BCrypt.checkpw(candidate, hashed))
	System.out.println("It matches");
else
	System.out.println("It does not match");

Comment utiliser bcrypt avec Spring ?

import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

public class PasswordEncoderGenerator {
	public static void main(String[] args) {
		String password = "mon mot de passe";
		BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
		String hashedPassword = passwordEncoder.encode(password);

		System.out.println(hashedPassword);
	}
}

Comment utiliser bcrypt en Python ?

import bcrypt
import random

password = "mon mot de passe"
print bcrypt.hashpw(password,bcrypt.gensalt())

Retour à l'accueil

Une production In Media Veritas | Réseau : md5.fr - sha1.fr - sha256.fr - sha512.fr - bcrypt.fr - htpasswd.fr