Securiser vos wallets
-
Alors j’ai du mal à voir le lien entre AES et les blockchain au sens large.
AES est un mécanisme de chiffrement (ie. c’est réversible) alors que les blockchains utilisent autant que je sache, des mécanismes de hachage (ie. c’est non réversible).Mais pour revenir à nos moutons, AES reste quelque chose de robuste et même si des voies d’attaque existent sur le plan théorique / conceptuel, elles ne sont pas praticables. AES256 est largement suffisant pour protéger votre argent ou vos cryptomonnaies.
Par contre, le diable est dans les détails : il n’est pas rare qu’un développeur se plante dans l’implémentation qu’il fait d’un mécanisme de cryptographie (néglige un paramètre, se trompe sur son usage, fait l’impasse sur une partie de la documentation, etc.) aboutissant alors à une application qui utilise une très bonne fonction cryptographique mais avec des paramètres mal choisis qui en annulent tout ou partie du bénéfice.
N’oublions pas non plus l’utilisateur : si il choisi un mot de passe de mauvaise qualité, AES ne pourra rien pour lui. En fait, pour être tout à fait clair : si l’utilisateur choisi son mot de passe, alors le mot de passe est mauvais. Game over. -
En effet c’est different mais un hash aussi est cassable (MD5, SHA1).
“si l’utilisateur choisi son mot de passe, alors le mot de passe est mauvais. Game over.”
Tout depend de la complexité.
La difference entre un mot de passe faible et un mot de passe fort, c’est le temps qu’il faut pour le casser.
Tout les mots de passe sont cassable sans exception. On considere un mot de passe fiable si le temps pour le casse ce compte en milliard d’annee.
-
@anubis901 a dit dans Securiser vos wallets :
En effet c’est different mais un hash aussi est cassable (MD5, SHA1).
ça n’a pourtant rien à voir. Si tu casses une clé de chiffrement, alors tu peux déchiffrer tout ce qui a été ou sera chiffré par elle. Si tu casses un hash tu ne fais que retrouver ce qui est hashé dans le meilleur des cas, et dans le pire des cas tu vas tomber sur une collision qui te donne donc un résultat moins utile (mais en effet pouvant mettre un gros foutoir dans une blockchain).
“si l’utilisateur choisi son mot de passe, alors le mot de passe est mauvais. Game over.”
Tout depend de la complexité.
non, ça ne dépend pas
si tu choisis ton mot de passe toi-même, alors ton mot de passe est dicté ou influencé par le facteur humain. Et donc ton mot de passe est mauvais. Il ne faut pas choisir son mot de passe, il faut laisser un générateur aléatoire s’en charger pour soi.La différence entre un mot de passe faible et un mot de passe fort, c’est le temps qu’il faut pour le casser.
Tout les mots de passe sont cassable sans exception. On considere un mot de passe fiable si le temps pour le casse ce compte en milliard d’annee.
C’est faux, à plusieurs niveau. La résistance à la casse pour un mot de passe est majoritairement due à la manière dont le mot de passe est stocké. Un stockage de faible qualité (md5, ou sha1 pour reprendre ceux que tu cites plus haut) va mal protéger les mots de passe et l’attaquant pourra tester des millions ou des milliards de candidats par secondes. Dans ce cas de figure même des mots de passe qui semblent bons vont être cassés. Moi même en attaquant les mots de passe d’un active directory j’en casse régulièrement au delà de 40 caractères de long.
À l’inverse un mot de passe qui serait stocké dans un format robuste comme PBKDF2 avec 100K itérations ou plus, Argon2, bcrypt, etc. pourrait faire 10 caractères de long, je serais incapable de le casser si il est purement aléatoire. Si c’est un mot du dictionnaire ça pourrait se faire moyennant une puissance de calcul importante.
Donc tu pourrais avoir un mot de passe d’une qualité absolument ridicule mais très bien protégé qui serait plus compliqué à casser qu’un bon mot de passe stocké dans un format moisi.
Pour finir il est absolument impossible d’estimer correctement le temps nécessaire pour casser un mot de passe car cela dépend du matériel, de la manière dont est stocké le mot de passe, du savoir faire de l’attaquant et de comment a été généré le mot de passe. Donc cette métrique dont tu penses qu’elle est au centre de tout, n’existe tout simplement pas. -
@patpro a dit dans Securiser vos wallets :
“si l’utilisateur choisi son mot de passe, alors le mot de passe est mauvais. Game over.”
Tout depend de la complexité.non, ça ne dépend pas
si tu choisis ton mot de passe toi-même, alors ton mot de passe est dicté ou influencé par le facteur humain.?? ca depend
Une grande partie de mes mdp crypto ressemble à :
f6556Rzn,bv::ERETdfsGFD5(-7_$$f8d"é’hgsè-(s/.RDonc du hazard…en gros je tape un paquet de caractére au pif, ce que fais un générateur de Mdp non ?!
Je ne les trouve pas influencé par mon facteur humain non ?!
L’enfer c’est quand tu dois taper ca sur un smartphone…
-
Ce message a été supprimé !
-
Mes doigts qui parcours le clavier sans un rythme précis. de l’aléatoire,
Je me repositionne ensuite dessus et rajoute en plusieurs endroits d’autres caractère au pif (Maj/min ou symbole) -
Dans ce cas :
-
@Raniva a dit dans Securiser vos wallets :
Une grande partie de mes mdp crypto ressemble à :
f6556Rzn,bv::ERETdfsGFD5(-7_$$f8d"é’hgsè-(s/.RDonc du hazard…en gros je tape un paquet de caractére au pif, ce que fais un générateur de Mdp non ?!
Nop. Tu n’as pas de vrai aléa là dedans, la probabilité de chaque caractère est dictée par tes habitudes (comme la position de tes mains sur le clavier, le nombre de doigts que tu utilises spontanément pour taper, etc.) et la structure de ton clavier (connue et totalement fixe).
Alors je te l’accorde, il est particulièrement long et une attaque en force brute exhaustive est probablement vouée à l’échec.Maintenant, prends un paquet de tes mots de passe générés de la même manière, et examine-les bien : tu vas retrouver des blocs communs, des enchaînements de 2 ou 3 caractères qui peuvent se répéter plus souvent que ce que tu obtiendrais dans une génération aléatoire.
Rien que dans ton exemple :f6556Rzn,bv::ERETdfsGFD5(-7_$$f8d"é’hgsè-(s/.R
6556 : pattern de type “keyboard walk”
ERET : idem
n,bv : grosse proximité
dfs : idem
GFD : keyboard walk
5(-7_ : idemT’es un peu sauvé par le dernier tiers du mdp, mais voilà, tu as pigé l’idée je pense.
Ces patterns sont soient connues et déjà intégrées dans les logiciels de casse de mots de passe, soient absentes mais analysables avec des outils comme les chaînes de Markov ou mieux la PCFG (programmatic context-free grammar). Dans ce type d’outils tu vas mettre en entrée des exemples de chaînes de caractères à titre d’exemple, et ils vont te sortir un paquet de chaînes de caractères qui reprennent les caractéristiques des exemples tout en étant différentes. C’est à dire qu’ils vont te permettre de créer des milliers ou millions de variations crédibles basées sur le modèle statistique déduit des exemples que tu as fournis en entrée.
C’est pour ça que les seuls mots de passe valables sont ceux qu’on ne choisi pas et qui sont fabriqués aléatoirement par des machines : si l’aléa est de bonne qualité (au sens mathématique) alors il est impossible d’en tirer un modèle statistique et la seule attaque possible reste la force brute, c’est à dire l’énumération de chaque possibilité, ce qui est globalement ingérable au delà d’une longueur assez courte. -
C’est bien pour ca que je replace ensuite mon curseur à différents endroits dans le premier jet du mot de passe pour ensuite rajouter des bouts par ci par la.
J’ai justement pris l’habitude de regarder un peu mes mots de passe afin d’éviter un placement de doigts en particulier , je me force à changer , en général j’essaye de mettre un petite trentaine de caractères, donc oui je suis conscient des patterns récurrente (lettre proche , c’est pour ca que je me replace dans le Mdp pour en rajouter)
-
Tu te fais du mal
Utilise un générateur de mots de passe (souvent intégré aux gestionnaires de mots de passe notamment) pour te fabriquer des vrais MDP aléatoires. Ils seront de meilleure qualité tout en étant plus courts si tu le souhaites : tu gagnes sur les deux tableaux. -
Tu sais quoi, voila le vault cree avec mon app.
qJNWqCTFdy71G24j+yy/2T8y6fIWwrYMjQb8TSVgv3fXYLP2TtrhZc15OBU/wiXr+U6lncX7Z7a+uZQNAX1RIRCIzTyUxJblcpR3Yj0QAz+TN+9lBl9H3LFR4m65/ZSA7RzSZHw4WZlMmKvcua4vY2Hx1ang7aDLfH8nA+aiVq8sWD4rXriX6Oh0NAEyXu6vrAr04WBL2iVIvFRhDgsz/w==
C’est la string en base64. chiffrement comme dit au dessus : aes-256-cbc
Casse le et tu as acces a mon wallet.
La cle publique c’est celle sur le screenshot :
0x5b89A6822D0C8a17c4A6F90375C31fE76Ca87954
Ya quelques euros a ce faire :
https://bscscan.com/address/0x5b89A6822D0C8a17c4A6F90375C31fE76Ca87954Si tu y arrive, je veux que tu m’explique comment tu as fait )
J’ai hate de me reveiller un matin et de voir que mon wallet vide hahahahahaha
-
@anubis901 tu te souviens de ma longue phrase quelques posts plus haut ? ->
“Par contre, le diable est dans les détails : il n’est pas rare qu’un développeur se plante dans l’implémentation qu’il fait d’un mécanisme de cryptographie (néglige un paramètre, se trompe sur son usage, fait l’impasse sur une partie de la documentation, etc.) aboutissant alors à une application qui utilise une très bonne fonction cryptographique mais avec des paramètres mal choisis qui en annulent tout ou partie du bénéfice.”
Ton petit défi m’a titillé, alors je suis allé voir le code de ton appli. En gros tu coches toutes les cases. Ton implémentation d’AES n’est pas sûre. Tu as négligé des paramètres, tu n’as pas compris comment utiliser correctement AES. Bref, voilà, la sécurité de ton application est sous-optimale. Ça ne veut pas dire qu’il suffit de claquer des doigts pour casser ton mot de passe, mais tu donnes toutes les cartes à l’attaquant pour lui faciliter la tâche.
Tu ne devrais pas utiliser le mot de passe fourni par l’utilisateur comme clé privée, tu devrais passer par une fonction de dérivation avant, type PBKDF2. Sans cela, ta clé de chiffrement est bien trop faible et “devinable”.
Ton code utilise un initialisation vector nul : 16 fois le chiffre 0, alors que l’IV devrait être aléatoire et changer à chaque utilisation. Là ton IV ne sert à rien, tu perds une protection importante.
-
Quel silence assourdissant
On aurait pu croire que quelqu’un d’aussi intéressé par la sécurisation de ses clés privées aurait quelque chose à répondre aux défauts d’implémentation de son code… Dommage.
On en revient aux prémices initiales : un bon gestionnaire de mot de passe à la sécurité éprouvée fera le travail avec de meilleures garanties.
-
@patpro
Le gestionnaire de mots de passe où l’utilisation de dés.
Y’a que ça de vrai !!
Mais c’est un peu plus chiant avec les dés !!
🤟 -
@Herc je vois ce que tu veux dire mais pour le coup c’est hors sujet : tu ne peux pas stocker tes clés privées (de crypto-actifs ou autre) en utilisant des dés
Dans le contexte de ce fil de discussion, le gestionnaire de mot de passe te permet de stocker de manière sûre une clé privée de la même manière qu’elle le fait habituellement pour un mot de passe. -
Pareil, j’utilise des générateurs de mots de passe et c’est hyper simple
-
@patpro les dés servent juste à créer le password. J’étais sur le côté entropie.
Pour le stockage c’est une autre histoire ! -
@Herc oh je sais parfaitement tout ça, mais c’est bien du stockage dont il est question ici (l’appli dont l’OP fait la promotion), même si avec @Raniva on s’est aventuré du côté de l’aléa dans les mots de passe.
Les dés pour générer des mots de passe c’est gentil, ça apprend le concept, mais sincèrement c’est pas trop praticable pour obtenir des mots de passe vraiment très variés car en général l’utilisateur va se baser sur une liste de mots trop courtes (ie. gérable avec quelques dés).
En dessous d’un dictionnaire de 200000 ou 300000 mots c’est compliqué d’avoir une “phrase de passe” pas trop longue ET en même temps appartenant à un “keyspace” très large.
Pour résumer, plus ton dictionnaire de départ est court, plus ta phrase de passe doit être longue et les dés ne permettent pas facilement d’adresser un dictionnaire très long. -
rahhh ptain
https://github.com/Anubis901/SafeCrypto/commit/ff0eb465782fa8a28ecbbf0d4a886fc244d26ceb
Il aurait été bien inspiré de passer par ici avant de faire semblant de corriger son code. La modif dans la gestion du mot de passe n’apporte rien.
Et cette modif fait perdre la compatibilité avec les vaults créées sur l’ancienne version, si bien qu’elles ne sont plus lisibles avec la nouvelle version de l’appli.
Aussi, c’est length, pas lenght. Bref. -
Pareil, j’utilise des générateurs de mots de passe et c’est hyper simple