[Ex] Sécurité par triple mot de passe

Partagez vos scripts, et vos applications AutoIt.
Règles du forum
.
Avatar du membre
Fish
Niveau 5
Niveau 5
Messages : 178
Enregistré le : sam. 23 oct. 2010 19:28
Localisation : Devant mon ordinateur.
Status : Hors ligne

[Ex] Sécurité par triple mot de passe

#1

Message par Fish »

Bonsoir (bonjour pour les retardataires :) ).

J'ai eu une petite idée ce soir en bricolant quelques lignes de code, je m'explique :

Le but est de sécuriser un programme par une série de 3 mots de passe. Ils doivent être entrés 1 par 1, dans l'ordre. Si un mot de passe est erroné, le programme redemande les 3 mots de passe. Jusque la rien de bien difficile me direz vous, et vous avez raison!
La difficulté est la : Il n'y a aucune manière de savoir si un mot de passe est juste ou pas, et aucun moyen donc de savoir si c'est le premier, le deuxième ou le troisième mot de passe qu'on est en train d'essayer de trouver!

Imaginez que le premier code soit 1, le second 24 et le dernier 0.
Si un bruteforcer met 0, 1, 2 etc... Il va trouver le premier mot de passe au bout de 2 essais, va passer au second, va forcement échouer et ne va pas trouver les autres puisque lors d'une attaque par dico', une solution n'est essayée qu'une seule fois. Cela augmente donc considérablement les possibilités d’échecs.

Bien-sur on peut étendre ça à l'infini. La seule limite est l'usure de vos doigts : taper 25 mots de passes corrects d’affilée pour ouvrir un programme, ça fatigue!


Si je me suis trompé, merci de me le dire, que je ne me fasse pas de fausses joies. ^^

Source :
► Afficher le texte
Pour plus de facilité, je vous donne directement les mots de passes? Aller, je suis gentil!

Mot de passe 1 : test1
Mot de passe 2 : test2
Mot de passe 3 : test3

Bonne soirée!





Image
This work is licensed under a Creative Commons Attribution 2.5 Generic License.
Fichiers joints
Code source.rar
L'exe et le code source au format au3
(336.11 Kio) Téléchargé 241 fois
Cordialement,
Fish-panai.
P.S (Pas Salé): Vive le poisson pané.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [Ex] Sécurité par triple mot de passe

#2

Message par jchd »

Et l'avantage par rapport à la vérification du mot de passe unique "test1test2test3" est ?

(Surtout que vérifier des mots de passe directement en AutoIt procure un faux sentiment de sécurité de premier calibre)
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
Fish
Niveau 5
Niveau 5
Messages : 178
Enregistré le : sam. 23 oct. 2010 19:28
Localisation : Devant mon ordinateur.
Status : Hors ligne

Re: [Ex] Sécurité par triple mot de passe

#3

Message par Fish »

Comme je l'ai dit plus haut, un bruteforcer trouvera plus vite "test1test2test3" que les trois mots de passes à la suite demandés séparément.

De plus, si l'on utilise le système à un mot de passe, il est très facile d'éliminer des possibilités alors que la c'est carrément plus dur puisqu'il est impossible de savoir si le mot de passe rentré est faux ou juste.

Après c'est sur que la sécurité et autoIT font plus que deux, mais je voudrais avoir votre avis sur la pensée globale du projet, l'idée, la fiabilité, et si il est possible de l'adapter dans un autre langage par exemple, pour protéger efficacement un programme. :)

Merci de votre réponse.
Cordialement,
Fish-panai.
P.S (Pas Salé): Vive le poisson pané.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [Ex] Sécurité par triple mot de passe

#4

Message par jchd »

Fish a écrit :Comme je l'ai dit plus haut, un bruteforcer trouvera plus vite "test1test2test3" que les trois mots de passes à la suite demandés séparément.
Non. L'espace des clés est rigoureusement le même.
De plus, si l'on utilise le système à un mot de passe, il est très facile d'éliminer des possibilités alors que la c'est carrément plus dur puisqu'il est impossible de savoir si le mot de passe rentré est faux ou juste.
???
Non, cf supra.
... je voudrais avoir votre avis sur la pensée globale du projet, l'idée, la fiabilité, et si il est possible de l'adapter dans un autre langage par exemple, pour protéger efficacement un programme. :)
Non. Ta question telle que posée appelle une réponse brutale : il n'existe aucun (zéro, niet, ketchi) moyen de protéger "efficacement" un programme sans intervention extérieure et secret partagé.

Tu dois penser la sécurité (informatique ou autre) en ces termes : si je dois protéger un secret (ou objet) valant 17 M€, il faut prouver que violer ce secret (voler cet objet) coûtera à l'attaquant significativement plus que 17 M€. Toute autre approche est de l'auto-suggestion.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
Fish
Niveau 5
Niveau 5
Messages : 178
Enregistré le : sam. 23 oct. 2010 19:28
Localisation : Devant mon ordinateur.
Status : Hors ligne

Re: [Ex] Sécurité par triple mot de passe

#5

Message par Fish »

Excusez moi de vous contredire mais mon système empêche effectivement le bruteforce si il est utilisé une attaque par dictionnaire. Dans ce cas, la chaîne de caractère est testé une seule fois. Si cette dite chaîne est le bon mot de passe, et que la suivante est un mauvais, le premier mot de passe ne sera jamais plus trouvé.
Même dans le cas ou un humain voudrais le trouver : comment savoir si une chaîne de caractère entrée correspond à un mot de passe, et auquel??

Je ne parle pas de l'inviolabilité du système en entier, mais logiquement, si vous deviez trouver un mot de passe simplement en l'entrant jusqu'à ce que ça marche, vous trouveriez plus vite en sachant quels mots de passes sont erronnés. Dans le cas d'un seul mot de passe, vous procédez par élimination. Dans ce cas la, prendriez vous le risque d'éliminer un mot de passe potentiellement juste? :)
Cordialement,
Fish-panai.
P.S (Pas Salé): Vive le poisson pané.
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [Ex] Sécurité par triple mot de passe

#6

Message par TommyDDR »

dans le cas du mot de passe test1test2test3 en une seule fois, on ne peut pas non plus savoir que test1 est une partie du mot de passe.

Je rejoins jchd sur ce point, il est autant "sécurisé" de mettre 3 mot de passe qu'un seul contenant ces 3 là.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
Fish
Niveau 5
Niveau 5
Messages : 178
Enregistré le : sam. 23 oct. 2010 19:28
Localisation : Devant mon ordinateur.
Status : Hors ligne

Re: [Ex] Sécurité par triple mot de passe

#7

Message par Fish »

Un mot de passe testé comme étant "test1test2" par le bruteforcer peut bien être testé sur le 1er mot de passe (de valeur x), le bruteforcer ne va pas s’amuser à remarquer exactement plus tard "test1test2", bien que la chaine de caractère "test1test2" pourrait être le mot de passe 2, auquel cas il ne le trouvera pas. Ou alors il faut dire au bruteforcer que tout est permis, même les répétitions (tester plusieurs fois la même chaine) ce qui n'est pas nécessaire dans le cas d'un système à un mot de passe. Un système à 3 mots de passe est donc plus long à cracker. Non?
Cordialement,
Fish-panai.
P.S (Pas Salé): Vive le poisson pané.
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [Ex] Sécurité par triple mot de passe

#8

Message par TommyDDR »

Hum au temps pour moi, après réflexion il y a bel et bien un léger avantage avec votre technique.

Avec 1 mot de passe test1test2, il faut "simplement trouver ce mot.
Avec 2 mots de passes test1 et test2, il faut trouver le même mot (test1test2) mais en plus, il faut trouver la "coupure" entre ces 2 mots.
tes et t1test2 ne marchera pas par exemple alors que dans le cas d'un seul mot de passe, cela marchera.

Cependant, un clavier compte au moins 104 caractères pouvant servir de caractère de mot de passe.

pour tester "test1test2", en sachant qu'il y a 10 caractères, il y à donc 104^10 possibilités (148 024 428 491 834 392 576)
Admettons qu'on puisse tester 100 000 mots de passe par seconde (il me semble que ce nombre est au delà du réel), cela nous fait : 1 480 244 284 918 344 secondes -> 46938238 années

En gardant 100 000 mots de passe par seconde :

Code : Tout sélectionner

Nb caractères | Temps
1             | < 1sec
2             | < 1sec
3             | 11 sec
4             | 19 min
5             | 33 heures
6             | 146 jours
7             | 41 ans
8             | 4339 ans
9             | 451329 ans
10            | 46938238 ans
Avec un mot de passe d'au moins 7 caractères, vous devriez être tranquille.

Edit : Si de plus c'est pour l'un de vos programmes, mettez simplement un Sleep(1000) si le mot de passe est faut, vous tomberez alors à 1 mot de passe par seconde en bruteforce ;) et là... ça sera trèèèèès long.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
Fish
Niveau 5
Niveau 5
Messages : 178
Enregistré le : sam. 23 oct. 2010 19:28
Localisation : Devant mon ordinateur.
Status : Hors ligne

Re: [Ex] Sécurité par triple mot de passe

#9

Message par Fish »

C'est sur, il y à bien le temps de chercher quelque soit la méthode que l'on utilise. ^^
Après je pense que le problème niveau sécurité c'est le contournement de la demande de mot de passe ou le décryptage du mot de passe stocké en local.

C'est pour ça que même si je l'ai fait sous autoIT, le mot de passe est stocké avec un chiffrement non symétrique : Il est crypté par lui-même. Pour vérifier le mot de passe, on crypte l'entrée de l'utilisateur par lui-même et on le compare. Ça évite que le passe soit marqué en clair dans une variable et donc dans la RAM.

Edit : Je ne comptait pas m'en servir pour un de mes programmes, je sais très bien qu'il y a des solutions super simples pour contourner la demande de mot de passe en elle-même. Mais si ça peux donner des idées ou servir à des gens, c'est toujours utile. ^^

Edit 2 :
Un léger avantage? En y repensant, c'est pas qu'un léger avantage!
Si je calcule bien, pour un mot de chaine "test1test2test3", et un système à mot de passe DOUBLE, il y a les solutions suivantes :
► Afficher le texte
Donc : pour un mot de passe de x caractères, les possibilités sont x^2+1, 2 étant le nombre de mots de passes utilisés. Ça en ajoute du temps de calcul si c'est 15 caractères comme ici... :)
La formule : N SIGMA(i=0) 37^n-i*37^i
Le tout sans oublier avec un système à mot de passe double! Imaginez avec un triple, quadruple ou quintuple! :D

Pour x mots de passes, et une chaine de taille N on a N^x+1 possibilités de découpage et à chaque possibilités de découpage on a 37^n donc :
N^x SIGMA(i = 1)37^N
Cordialement,
Fish-panai.
P.S (Pas Salé): Vive le poisson pané.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [Ex] Sécurité par triple mot de passe

#10

Message par jchd »

Vous semblez partir du principe supérieur que "bruteforce" = "dictionnaire sans remise".
C'est gentil, c'est naïf et c'est complètement faux (et de plus en plus).

Une fois ceci démonté, vous verrez peut-être clair. Sans ça vous êtes dans la panade (de poisson ou pas).

Allons, si mon mot de passe est jchd que je bruteforce en entrant une lettre à la fois ou en un seul coup ne change strictement rien ! L'espace des clés est le même.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
Fish
Niveau 5
Niveau 5
Messages : 178
Enregistré le : sam. 23 oct. 2010 19:28
Localisation : Devant mon ordinateur.
Status : Hors ligne

Re: [Ex] Sécurité par triple mot de passe

#11

Message par Fish »

Hors de question, vous avez l'esprit trop concentré sur la somme des chaines. ^^

Votre mot de passe est Jchd. Okay.
Vous rentrez une lettre à la fois, okay.
Voici un exemple :
Pass1 : j
Pass2 : c
Pass3 : h
Pass4 : d

Si l'on change ça, et l'on dit que l'on doit mettre :
Pass1 : j
Pass2 : ch
Pass3 :
Pass4 : d

Que ce passe-il? C'est pourtant simple, la façon dont est découpée le mot de passe change le nombre de possibilités, car le programme prends en compte chaque bout de mot de passe, chaque coupure. Il est haché. Si on hache un mot de passe en 8, on aura plus de choix à faire pour le découper!

C'est comme si je vous demandait de ranger 10 billes. i vous avez à votre disposition 1 seul sac, pas le choix, 10 billes dans 1 sac. Mais si en revanche je vous demande de placer ces 10 billes dans 3 sacs, il y a plus de possibilités, et une seule de ses possibilités va être correcte, et si vous changez le nombre de billes, ce sera également faux. Mon programme rajoute un critère, qui est le hachage du mot de passe. Ça démultiplie les possibilités.

Revenons à l'exemple.

Seul :
Pass1 : j
Pass2 : ch
Pass3 :
Pass4 : d

marchera, et la chaine complète :
Pass1 :
Pass2 : j
Pass3 : ch
Pass4 : d
aura beau donner "jchd", le programme vous refusera l'accès, mauvais découpage.
Relisez mes formules.


Edité à 13h29.
Cordialement,
Fish-panai.
P.S (Pas Salé): Vive le poisson pané.
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [Ex] Sécurité par triple mot de passe

#12

Message par TommyDDR »

Bon, après mure réflexion, j'ai peut être une réponse qui mettra d'accord tout le monde.
Le fait d'avoir plusieurs mot de passe ne change finalement pas grand chose, cela revient à rajouter un caractère.
On va prendre pour exemple que le caractère ¥ signifie "valide la partie et passe à la suivante"

On à alors le mot de passe (en 3 parties) :
Partie 1 : j
Partie 2 : ch
Partie 3 : d

Qui équivaut à j¥ch¥d. il suffira simplement d'indiquer au bruteforceur qu'il faut ajouter un "caractère virtuel" qui signifiera de passer au mot de passe suivant.

Au final, votre technique équivaut à ajouter un caractère.
Et c'est plus simple qu'un caractère normal car on SAIT d'avance qu'il sera dans le mot de passe et on sait aussi combien de fois il sera présent. Il reste juste les positions à trouver.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
Fish
Niveau 5
Niveau 5
Messages : 178
Enregistré le : sam. 23 oct. 2010 19:28
Localisation : Devant mon ordinateur.
Status : Hors ligne

Re: [Ex] Sécurité par triple mot de passe

#13

Message par Fish »

C'est pas exactement ça vu que le nombre de caractère contenu entre deux de tes signes sont variables, et non prévisibles. Ca ne colle pas avec les formules que j'ai fait mais le principe est la.
Donc au final jchd, je pense que vous avez tort car on voit bien ici avec l'exemple de Tommy que le nombre de "caractères" au sens ou vous l'entendez est différent si le mot de passe est haché ou non.
Cordialement,
Fish-panai.
P.S (Pas Salé): Vive le poisson pané.
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [Ex] Sécurité par triple mot de passe

#14

Message par Iste »

Je pense egalement qu'on y gagne un peu, mais seulement, il s'agit comme bien trop souvent d'une sécurité basée sur le secret au lieu de la complexité.
Au final, cela ne fait qu'un mot de passe classique qui doit contenir 3 caractères "validé"
Une foi analysé comme tel, comme l'a fait TommyDDR, le tout tombe a l'eau pour toujours.
Signez ici
Avatar du membre
Fish
Niveau 5
Niveau 5
Messages : 178
Enregistré le : sam. 23 oct. 2010 19:28
Localisation : Devant mon ordinateur.
Status : Hors ligne

Re: [Ex] Sécurité par triple mot de passe

#15

Message par Fish »

En quoi cela tombe à l'eau? Il y a beaucoup plus de mots de passe à tester pour trouver le bon, et surtout comment savoir ou vont ces caractères "valider" puisque aucune indication n'est donnée et on ne sait jamais si c'est un bon ou mauvais mot de passe qui a été rentré?
Cordialement,
Fish-panai.
P.S (Pas Salé): Vive le poisson pané.
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [Ex] Sécurité par triple mot de passe

#16

Message par TommyDDR »

Fish, relisez mon dernier post, le fait de changer de champ n'est rien d'autre qu'un ajout de caractère.

admettons qu'il n'y ai que des chiffres de 0 à 1 sur un clavier (histoire de ne pas faire un post avec 3513541354 lignes).

Mot de passe à trouver (en 2 parties) (j’admets aussi qu'on sache que le total est long de 4 caractère):
Partie 1 : 01
Partie 2 : 10

Bruteforce :
(On sait que le mot de passe est en 2 parties donc un seul ¥ possible)
► Afficher le texteBruteforce
On voit bien dans cet exemple que le fait de faire le mot de passe en 2 fois consiste simplement à rajouter un caractère dans la liste des caractères possible.
Ce n'est bien évidement pas un vrai caractère, le programme de bruteforce devra surement appuyer sur "ENTER" lorsqu'il rencontrera celui-ci.

Mais dans l'idée c'est exactement ça.

Si on reprend ma formule plus haut, vous transformer

Code : Tout sélectionner

104 ^ $NbLettreMDP en (104 + 1) ^ ($NbLettreMDP + $NombreMDP)
Pour info, ajouter une lettre au mot de passe "test" -> "test1" ou avoir 2 mot de passes "te" et "st" :

Code : Tout sélectionner

(105) ^ (5) = 12762815625

Code : Tout sélectionner

(104) ^ (5) = 12166529024
Pour conclure, oui votre technique améliore la protection mais au final, c'est peu gagner comparé à simplement ajouter $NombreMDP caractère(s) de plus dans votre mot de passe.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
Fish
Niveau 5
Niveau 5
Messages : 178
Enregistré le : sam. 23 oct. 2010 19:28
Localisation : Devant mon ordinateur.
Status : Hors ligne

Re: [Ex] Sécurité par triple mot de passe

#17

Message par Fish »

Vous avez oubliés une chose malheureusement... Lors du bruteforce, quand votre programme va appuyer sur entrée suite à la rencontre avec votre caractère spécial, je rappelle que le système se remet à ZERO si "la partie" mot de passe (ce qui est entre deux caractères spéciaux) est fausse. Par exemple, si le bruteforcer échoue une fois dans la première partie du passe, il va écrire ce qui devrait se trouver dans la deuxième partie à la place de la première, et tout se décale comme ça. Ce système allonge encore plus la procédure de bruteforce et nécessite que le programme de bruteforce répète certaines chaines.

Il faut encore chercher plus loin je pense avant de trouver une solution... :)
Cordialement,
Fish-panai.
P.S (Pas Salé): Vive le poisson pané.
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [Ex] Sécurité par triple mot de passe

#18

Message par Iste »

Bah une foi de plus c'est une donne qui est connu, aussi on peut donc remettre le script a 0 avec une entrée fausse entre chaque test.
Je ne parle même pas des soft qui permettent de sauvegarder l’état d'un programme pour l'y remettre après.

Alors oui, cette donnée fausse est peut être dans la liste des codes, mais les chances sont extrêmement faible, surtout si elle est choisie au hasard par le bruteforcer.

Au final, le seul vrai avantage de ce genre de protection c'est qu'il faut réécrire un bruteforcer au moins en partie pour l'attaquer.
Signez ici
Avatar du membre
Fish
Niveau 5
Niveau 5
Messages : 178
Enregistré le : sam. 23 oct. 2010 19:28
Localisation : Devant mon ordinateur.
Status : Hors ligne

Re: [Ex] Sécurité par triple mot de passe

#19

Message par Fish »

1) Je ne suis pas d'accord avec vous dans le sens ou il y a la majorité des cas ou il y aura une erreur dans la première partie du passe...

2) Dans l'hypothèse ou il faut remettre le script à zéro ou modifier le contenu du programme vers un instant antérieur, je craint fort que le temps mis pour un test ne grimpe en flèche et que cela devienne vite impossible à bruteforcer...

3) Et si ma méthode se révèle efficace en tout points et que certains fabricants l'intègrent par exemple au BIOS d'une carte mère par exemple? Comment faites vous? Il n'y a pas de possibilités de remettre le script à 0 (à part éteindre l'ordi...)ou de le modifier.

4) Comment savoir en combien de parties est découpé le code?
Cordialement,
Fish-panai.
P.S (Pas Salé): Vive le poisson pané.
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [Ex] Sécurité par triple mot de passe

#20

Message par Iste »

1) normal, c'est le principe meme du bruteforce de se tromper

2) Pour le raz il suffit de valider une valeur fausse, donc soit c'est instantané et donc rapide, soit vous avez appliqué la protection anti-bruteforce de base qui demande d'attendre un peu et c'est long. Mais en rien votre protection agit la dessus.

3) Comme dit, de par sa spec il se remet a 0 de lui même sur une valeur fausse. Même pas besoin de hack ou autre. Toute foi, sachez que cela serait quand même possible, a moins de mettre un gros cadenas au matos !

4) Comment savoir combien de caractère a un mot de passe ? En testant tout. C'est le principe du bruteforce.

Encore une foi, essayez de comprendre la tres bonne analyse qu'a fait TommyDDR et vous comprendrez qu'on ne se retrouve au final avec un gros mdp dans le quel on nous force a introduire x valeur "validation" au milieu.
Si vraiment vous voulez contrer les bruteforce, la solution est d'espacer les demande de 1secondes, et d'incrémenter ce temps avec le nombre d’échec.
Signez ici
Répondre