Jump to content

Authentification par clé privée


Recommended Posts

Bonjour à tous !

Alors voici ma problématique.

J'aimerai créer un site web perso avec un espace personnel pour moi (admin) et quelques amis (photos ...).

J'aimerai bien évidemment que tout ça soit sécurisé. Et tout le monde sait qu'un login/mot de passe n'a rien de bien sécurisé (surtout quand on laisse des personnes tierces choisir ce mot de passe).

J'aimerai donc un système qui ressemble à celui de SSH avec les clés privées.

La personne irait sur un formulaire qui lui demanderait son login, de choisir un fichier (la clé privée), et une éventuelle passphrase.

Je ne veux pas forcément crypter l'envoi de données derrière, mais juste sécuriser l'authentification.

Y a-t-il des outils qui existent pour faire celà ?

Je suis ouvert à toutes les technos (PHP, J2EE ...).

Merci de votre aide !

Link to comment
Share on other sites

Regarde un peu du côté de https. Il se sert de SSL/TLS pour le chiffrement, comme SSH.

Une protection en .htacces + une connexion sur du https, tu devrais être bien.

Maintenant que j'y pense, comme SSH, https te permet la double authentification (serveur ET client). Il faudra que tu envoies des certificats à tes amis pour que leur navigateur puisse s'authentifier. Avec ça, tu pourrAIS te passer du .htacces (à vérifier)

++

Link to comment
Share on other sites

Le .htaccess peut protéger par mot de passe un répertoire une fois que le user est loggé.

Le SSL protège les données transférées entre le serveur et le client.

Mais rien n'empêche à un étranger (qq'un de non enregistré chez moi je veux dire :p ) d'aller sur ma page de login, et de tenter de se logger.

Si un de mes amis a mis un mot de passe à 2 balles, il y arrivera ! Le SSL et les .htaccess n'y changeront rien.

Je veux juste sécuriser un peu + le login.

Je me dirige donc vers une solution home-made. Je n'ai pas trouvé d'outil répondant à cette question.

L'idée serait donc de générer une paire de clés, laisser la clé publique sur le serveur, et envoyer la clé privée à un ami.

Ensuite, lorsque cet ami arrive sur la page de login, le serveur ne demanderait que son login. Puis il l'enverrai vers une nouvelle page dans laquelle serait inclue (une variable Javascript par exemple), un texte aléatoire crypté avec la clé publique.

Ensuite, un formulaire lui demanderait de renseigner le code contenu dans la clé privée. Une fois le formulaire validé, un code javascript pourrait décrypter le texte aléatoire, et le recrypter avec la clé privée.

Le résultat serait renvoyé au serveur.

Si le serveur peut décrypter le message avec la clé publique et qu'il retrouve le même message envoyé, c'est qu'on a bien à faire à notre ami !

Voilà, si vous voyez une faille dans cet algo, n'hésitez pas !

Link to comment
Share on other sites

Euh... :transpi::p:yes::transpi:

Tu crois vraiment que tu vas réussir à envoyer un truc plus balèze que https ? ;)

Parce que ya quand même de sacrés tronches qui ont bossés dessus.... c'est pas gagné :chinois:

Et bon j'ai pas tout saisi de la description de ton idée mais elle semble bien tordu :yes:

Tu te trompes de direction je pense, à ta place je me mettrai sur la piste du uzak (certificats).

Link to comment
Share on other sites

Euh, les gens, je crois que vous n'avez pas compris.

Un exemple :

 ssh copernic
Password:
theocrite@copernic

 ssh fermat
theo@fermat

Rien à voir avec le SSL, ça peut être en plus.

Ça se rapproche plus d'une identification à la .htaccess, mais sans taper le mot de passe.

Mais rien n'empêche à un étranger (qq'un de non enregistré chez moi je veux dire :iloveyou: ) d'aller sur ma page de login, et de tenter de se logger.

Ben dans le cas de ssh, rien n'empèche de tenter de taper un login/mot de passe quand même si la personne n'a pas la clé privée.
Voilà, si vous voyez une faille dans cet algo, n'hésitez pas !
Je suis ok pour la première étape :

Texte aléatoire, déchiffrement avec la clé privée.

Par contre je suis sceptique pour ce qui est de rechiffrer ça avec la clé privée. Je ne vois pas l'intérêt. Normalement il faut renvoyer le texte en clair, ça suffit. Au pire faire passer ça par une liaison SSL.

Link to comment
Share on other sites

Cet algorithme n'a absolument pas pour but de remplacer SSL ...

Ca n'a rien à voir avec SSL.

Tu peux prendre un serveur avec OS hyper sécurisé, du cryptage des transferts dans tous les sens, des limitations de droits partout mais si une personne étrangère se logge en tant que personne inscrite, toutes ces protections n'empêcheront pas l'étranger de rentrer. Car tu ne sauras pas qu'il est étranger au système.

Et la sécurité globale d'un système est celle du composant le moins sécurisé. En l'occurence l'étape de login.

Je sais bien que dans le cadre de mon utilisation c'est parfaitement disproportionné, mais je m'intéresse un peu à la sécurité, alors voilà :byebye:

C'est vrai que renvoyer le texte crypté ne sert à rien...

Enfin voilà, je suis étonné que personne n'ait encore mis un tel processus de login web en place ...

Je vous tiens au courant :byebye:

Link to comment
Share on other sites

C'est pas que c'est pas sécurisé, c'est que le niveau n'est pas suffisant.

Un mdp ça se devine. Le mec qui veut avoir un accès, ça lui prendra sûrement du temps, mais si c'est un mauvais mdp, il finira bien par le trouver (je pense pas le les comptes seraient vérouillés définitivement). De plus pour le propriétaire du compte ça peut être assez gênant si son compte est vérouillé à cause d'un Kevin.

Une clé c'est "un peu" plus compliqué à deviner.

Et puis comme l'a dit fabien29200 c'est aussi "pour le faire". Et je le comprends. :keskidit:

Link to comment
Share on other sites

Donc, en gros, c'est l'étape d'authentification qui te pose problème.

C'est en effet le maillon faible dans cette chaîne.

Regarde l'exemple de théo :


ssh copernic
Password:
theocrite@copernic

-----
ssh fermat
theo@fermat

Le premier login : quand il fait ssh copernic, le ssh interprete ça comme

ssh theocrite@copernic, parce que theocrite est le nom qu'il utilise sur sa machine., après ça passe par mot de passe et ça sous-entend que le possesseur du login theocrite est le SEUL à connaitre ce mot de passe.

Le second login :

theocrite a laissé sa clé publique sur fermat, et la clé privée chez lui. Ici, ça repose sur le fait que theocrite est le seul à posseder cette clé privée.

C'est pareil avec le .htacces ou le certificat :

le htacces se base sur un mot de passe et le ssl sur un couple clé privée/clé publique. Tes amis peuvent choisir un mot de passe 'simple', mais pas un couple clé publique/clé privée 'simple'. Donc tu enlèves cette incertitude.

@theocrite : SSL ne se cantonne pas à des échanges chiffrés mais gère aussi l'authentification des parties, même si c'est optionnel (comme SSL peut accepter un chiffrage 'identité' )

Link to comment
Share on other sites

C'est pas que c'est pas sécurisé, c'est que le niveau n'est pas suffisant.

Un mdp ça se devine. Le mec qui veut avoir un accès, ça lui prendra sûrement du temps, mais si c'est un mauvais mdp, il finira bien par le trouver (je pense pas le les comptes seraient vérouillés définitivement). De plus pour le propriétaire du compte ça peut être assez gênant si son compte est vérouillé à cause d'un Kevin.

Une clé c'est "un peu" plus compliqué à deviner.

Et puis comme l'a dit fabien29200 c'est aussi "pour le faire". Et je le comprends. :eeek2:

Mouais, enfin déjà, les risques qu'un kévin essaye de cracker un compte sur ton site perso que t'as fais pour toi et tes potes, il est déjà méga-faible.

Ensuite, un compte bloqué, ça se débloque quand même super vite (surtout que si j'ai bien compris, fabien29200 ne compte pas avoir des milliers de membres sur son site).

Enfin moi, j'dis ça, c'était surtout histoire de pas passer 10 ans à trouver un système ultra-sécurisé et très compliqué à mettre en oeuvre...

Link to comment
Share on other sites

Je ne connaissais pas cette fonctionnalité du SSL :eeek2:

Comment se passerait alors la procédure de login avec SSL ?

Je te renvoie à ce document : http://www.enseirb.fr/~vincent/RSR/RE-320-...006/SSL-TLS.pdf (en changeant l'extension, t'as aussi un .ps) et à celui là pour un résumé : http://www.enseirb.fr/~vincent/RSR/RE-320-...-TLS-slides.pdf

PS : C'est de moi (VL)

Link to comment
Share on other sites

Je lis qu'effectivement SSL répondrait à ce que je cherche.

Reste à savoir comment le mettre en oeuvre. Je génère des certificats pour les clients, bien.

Mais qu'est-ce que doit faire le client ?

Le certificat est enregistré au niveau du navigateur ? Donc si la personne change de machine, elle est toujours identifiable ?

Link to comment
Share on other sites

Non, si la personne change de machine, il faut qu'elle ait son certificat avec elle et qu'elle l'importe dans le navigateur.

Si tu es sous firefox, tu peux aller voir dans préférences->Avancé->Certificats

T'as un onglet vos certificats. Si tu as fait ta ddéclaration d'impôts en ligne, tu dois en avoir déjà un.

Après, je sais pas trop comment ça se génère (il en faudra un pour ton serveur aussi, car les navigateurs gueulent un peu si ils arrivent sur du https avec un serveur non authentifié) et il en faudra pour les clients (ou un pour chaque)

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...