N-PN White-Hat Project
Changement de mot de passes constant ? || Plus sécurisant ? - Version imprimable

+- N-PN White-Hat Project (https://dev.n-pn.fr/forum)
+-- Forum : Questions (https://dev.n-pn.fr/forum/forumdisplay.php?fid=11)
+--- Forum : Security (https://dev.n-pn.fr/forum/forumdisplay.php?fid=24)
+--- Sujet : Changement de mot de passes constant ? || Plus sécurisant ? (/showthread.php?tid=3596)



Changement de mot de passes constant ? || Plus sécurisant ? - EpicOut - 13-03-2014

Hey, je me suis posé une question il y a quelques minutes sur les sécurités contre le bruteforce, est-ce que vous pensez que ça serait plus secure contre le brute force de faire système de changement de mdp constant, je m'explique:

Etape 1:
Le client demande une connexion au sytème -> Le serveur répond, et remet en place le hash du mdp de passe de l'utilisateur.


Etape 2:
Le client se déconnecte du système -> Le serveur déconnecte l'utilisateur, et il enregistre quelque part le hash du mdp du client.

Etape 3:
Aucune connexion = Le serveur met en route le système de protection contre le bruteforce, Le serveur procède a un changement de mdp constant toute les x secondes jusqu'à qu'une requête de connexion soit demandée. Et à ce moment là ça devient une loop.

Est-ce vraiment sécurisé ? Qu'en pensez-vous ? Il y aurait-il une autre manière de procéder moins coûteuse ?
A vous les studios.


RE: Changement de mot de passes constant ? || Plus sécurisant ? - b0fh - 15-03-2014

Hello,

Je ne sais pas si c'est pertinent ou si ça correspond à ton idée, mais il y a un mécanisme de One-Time Password dont l'idée de base fonctionne comme ça:

Pré-requis: une fonction de chiffrement symétrique C, avec c = C(k,p) (p=plaintext, k=key, c=ciphertext), sécure contre les attaques a texte clair connu.

Initialisation:
le client choisit aléatoirement une valeur secrète x0 et un sel s. Puis il calcule et stocke itérativement plein de valeurs x1 = C(x0, s), x2 = C(x1, s), ...., x(n+1) = X(xn, s). Il envoie au serveur xn et s.

Authentification: le serveur connait xn et s, le client envoie au serveur comme mot de passe la valeur x(n-1). Le serveur applique la fonction de chiffrement et vérifie que C(x(n-1), s) = xn. Si ce n'est pas le cas, le serveur rejette le login; sinon le serveur remplace xn par x(n-1), et le client efface la valeur x(n-1) et décrémente son compteur n de 1.

Quand le compteur arrive à 0, c'est la merde, et le client doit refaire une initialisation avec le serveur pour générer de nouveaux codes.

Preuve de sécurité: supposons que l'adversaire, ayant intercepté la ligne, aie obtenu les valeurs s et xn. si l'adversaire est capable de calculer une valeur x(n-1) telle que C(x(n-1),s) = xn, alors il est capable de résoudre l'équation c = C(k,p) lorsque k est inconnu. Il dispose donc d'une attaque a texte clair connu contre l'algo de chiffrement. Donc, si l'algo de chiffrement résiste aux attaques a texte clair connu, cet algorithme est sûr.