[JAVA] Générateur de mot de passe de hachage

Une histoire sur la façon de gérer en toute sécurité des mots de passe complexes sur divers sites.

Il existe divers logiciels et applications pour la gestion des mots de passe, et de nombreuses personnes les géreront avec eux. Cependant, s'appuyer sur un logiciel particulier soulève des inquiétudes quant à savoir si le développeur de ce logiciel peut être digne de confiance, si le mot de passe est sécurisé ou si le logiciel devient soudainement inutilisable et le mot de passe est inaccessible.

Certains diraient qu'ils créent une liste de mots de passe et stockent les fichiers cryptés.

Génération de mot de passe de hachage

Ici, j'écrirai sur la méthode de sauvegarde de la "graine de mot de passe spécifique au site" dans un fichier et de génération du mot de passe du site à chaque fois à partir de l'algorithme de hachage déterminé comme le "mot de passe principal mémorisé".

C(H(M + S)) = P

H: fonction de hachage C: Fonction pour convertir le hachage en chaîne de mot de passe M: mot de passe principal mémorisé S: mot de passe spécifique au site P: mot de passe du site

Cette méthode est plus résistante aux attaques à tour de rôle que la méthode «chiffrer et stocker le mot de passe». En effet, lorsque vous entrez un mot de passe principal approprié pour la tentative, vous ne pouvez pas dire si le mot de passe généré est correct ou non, à moins que vous n'essayiez réellement de vous connecter au site.

Programme de la version Python 3

J'ai publié un tel programme écrit en Python 3.

Générateur de mot de passe

Écrivez et utilisez le «mot de passe spécifique au site» directement dans le programme. À titre d'exemple, des «semences de mots de passe spécifiques au site» de google, amazon et twitter sont incluses.

Enregistrez ce programme comme mot de passe et enregistrez-le quelque part dans votre chemin

password google

Quand a commencé comme

Veuillez saisir le mot de passe principal.

S'affiche, alors entrez le mot de passe principal que vous avez décidé ici, et le mot de passe sera affiché. Vous pouvez également le configurer pour copier dans le presse-papiers (voir le code source).

Les informations de chaque site sont utilisées comme objet dictionnaire au début du programme.

sitekey = {
    "google" : ["sha512", "an", 16, "kKkMqYDUIivWLi3WSt3VndHci"], 
    "amazon" : ["sha3_384", "an", 16, "stBuQIQgT9Yp84RBK3HdllnUK"],
    "twitter" : ["sha3_512", "an", 14, "UmhvSHT72smO4aI1LMYt7H2el"]
}

Puisqu'il est défini comme, réécrivez ici. Ici, non seulement le type de mot de passe spécifique au site, mais également l'algorithme de hachage, le type de caractère de mot de passe (an est un alphabet et un nombre) et la longueur du mot de passe sont spécifiés. De plus, si vous ajoutez un élément, ces informations seront affichées, afin que vous puissiez écrire des informations telles que l'ID utilisateur de chaque site, l'adresse e-mail enregistrée et le numéro de téléphone défini pour l'authentification en deux étapes. Voir les commentaires du code source pour plus de détails.

Si vous pouvez programmer avec beaucoup d'efforts, il est préférable de créer un tel programme dans votre langue préférée et de le gérer à votre guise. Je gère tous mes propres scripts dans un référentiel Git privé et les utilise via le chemin d'accès à ce répertoire, mais j'y gère également mes propres scripts de génération de mot de passe.

Version JavaScript du programme

J'ai créé la version JavaScript de ce programme. Lorsque vous entrez le mot de passe principal dans "Master", le mot de passe est généré en temps réel et copié dans le presse-papiers par "Copier". J'utilise jsSHA pour calculer SHA. Le même mot de passe est généré à partir du même mot de passe principal dans la version Python et la version JavaScript. La version JavaScript utilise des tableaux associatifs

var sitekey = new Object({
    "google" : ["sha512", "an", 16, "kKkMqYDUIivWLi3WSt3VndHci", "https://www.google.co.jp/",  "Identifiant d'utilisateur: xxx", "Certification en deux étapes: "], 
    "amazon" : ["sha3_384", "an", 16, "stBuQIQgT9Yp84RBK3HdllnUK", "https://www.amazon.co.jp/", "Email: xxx"],
    "twitter" : ["sha3_512", "an", 14, "UmhvSHT72smO4aI1LMYt7H2el", "https://twitter.com", "https://twitter.com/seki/"]
});

La définition étant la suivante, les informations de chaque site peuvent être utilisées en copiant la définition Python telle quelle. Pour les mots de passe qui doivent être accessibles depuis un mobile, il est pratique de pouvoir générer des mots de passe même dans la version JavaScript.

J'ai écrit cet article pour les programmeurs, mais je l'ai écrit pour le grand public dans À propos de la gestion des mots de passe.

Recommended Posts

Générateur de mot de passe de hachage
Générateur de mots de passe à motifs
Notes de création du générateur de mots de passe
Générateur
Générateur
hashlib hash
Mémo du générateur.