You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2008-11-12 16:31:35

Noran
Member
Registered: 2007-06-28
Posts: 95

Amélioration du plugin Compte

Utilisateur de longue date du plugin compte, j'ai pu voir arriver une fonction attendue : le cryptage des mots de passe en base.

Seulement, le plugin connait du coup quelques limitations :

1- Un cryptage côté serveur qui implique une latence importante à la création d'une entrée.
2- Une clé privée stockée directement dans le script PHP sur le serveur ce qui diminue l'interêt d'avoir des mots de passe cryptés en base (puisque quelqu'un qui récupère le mot de passe crypté a de forte chance d'avoir compromis le serveur et donc la clé privée).

Aussi dans l'esprit du libre "Si tu sais faire, fais et partage, dans le cas contraire, demande (gentillement)", je me propose d'améliorer ce plugin.

Voici mes idées pour résoudre les problèmes ci dessus :

- Etant donné qu'une bibliothèque AES Javascript existe, porter le travail effectué en javascript en laissant le soin à l'utilisateur d'entrer la clé (au cryptage et au décryptage).

- Pour gérer les coquilles de l'utilisateur à la création d'une entrée (mauvais clé privée entrée au cryptage), je propose de stocker sur le serveur uniquement le hash (SHA par exemple) de la clé privée (et donc le mécanisme de cryptage vérifira en local si la clé entrée est la bonne).

En déportant la sécurité côté client, on évite de tout faire reposer sur le serveur (qui peut avoir des failles).
Ainsi pour récupérer le mot de passe, un pirate doit avoir accès au serveur et à l'information d'un utilisateur alors que pour l'instant, il lui suffit du serveur.


Pour la petite histoire, chez nous, on utilise un certificat SSL (avec passphrase perso) par utilisateur pour accéder à l'interface GLPI.

Donc un utilisateur doit avoir pour accéder aux mots de passe :

1- Un certificat avec sa passphrase (révocable)
2- Un login/password dans GLPI
3- La fameuse clé privée


Que pensez vous de ce nouveau modèle ?

Si ça vous semble une bonne idée, je m'y colle volontier et vous retournerez les modifications pour inclusion dans le trunk (note : je travaille en v1.4 pour GLPI 0.71.2)

Offline

#2 2008-11-12 18:39:47

tsmr
GLPI-DEV
From: Rennes
Registered: 2005-08-26
Posts: 11,632
Website

Re: Amélioration du plugin Compte

et les certificats sont générés ou ?


Xavier Caillaud
Blog GLPI Infotel

Offline

#3 2008-11-12 18:59:23

Noran
Member
Registered: 2007-06-28
Posts: 95

Re: Amélioration du plugin Compte

Par une pki scriptée qui utilise openssl (en fait c'est la pki d'openvpn qui nous génère des certificats utilisables sous openvpn et apache).
Mais les certificats, c'est purement optionnel. Seul le cryptage par clé privée sera développé.

Offline

#4 2008-11-12 19:02:39

tsmr
GLPI-DEV
From: Rennes
Registered: 2005-08-26
Posts: 11,632
Website

Re: Amélioration du plugin Compte

ok donc moi je suis partant. Vu que cela améliore la sécurité du cryptage big_smile

Si cette facon est générique pour que toutes les confs possibles puissent l'utiliser, alors allons-y.


Xavier Caillaud
Blog GLPI Infotel

Offline

#5 2008-11-28 17:03:20

Noran
Member
Registered: 2007-06-28
Posts: 95

Re: Amélioration du plugin Compte

Quelques nouvelles :

- Le plugin modifié fonctionne et nécessite maintenant un nettoyage du code (effacement de la partie cryptage du code php, tout étant fait en javascript).

- Le plugin utilisé est le 1.4 (pour glpi 0.71.2). N'ayant pas de version trunk pour modifier la version trunk de comptes, je ne pourrais pas travailler dessus mais je mettrais en évidence les modifications quand je rendrais disponible le code et vous laisserez le soin d'intégrer tout ça ;-)

- Voulant éviter un maximum de requête au serveur, la vérification du hashage se fait côté client

Offline

#6 2008-11-28 19:43:00

tsmr
GLPI-DEV
From: Rennes
Registered: 2005-08-26
Posts: 11,632
Website

Re: Amélioration du plugin Compte

Merci pour ces nouvelles big_smile

La version trunk est dispo ici (ce sera plus simple smile):

https://dev.indepnet.net/tarballs-plugins/compte.tar.gz


Xavier Caillaud
Blog GLPI Infotel

Offline

#7 2009-04-27 15:35:53

Noran
Member
Registered: 2007-06-28
Posts: 95

Re: Amélioration du plugin Compte

Bon, j'ai un peu laisser tomber le nettoyage avancé car je suis une bille en PHP mais j'en ai profité pour porter mes modifications à la version trunk de GLPI.

Néanmoins, il y a pas mal de choses qui vont pas encore :

- La migration depuis la version précédente n'est pas gérée :

J'ai voulu voir pour créer une fonction d'update qui utilise l'ancienne fonction de cryptage (en php) pour remettre les mots de passe en clair avant de les recrypter avec ma fonction javascript mais l'utilisation d'une variable php en javascript est compliqué (il semble qu'il faille des connaissances en ajax que je n'ai pas).

- Je n'ai pas réussi à sortir le code javascript du fichier "plugin_compte.compte.classes.php". Donc c'est du old school programing. Si vous pouvez y jeter un oeil ;-)

- J'ai du laisser un bouton "Hash de la clé" qui permet de calculer un Hash de la clé pour les vérications de clé entrée valide (stocké et utilisé à des fins de comparaisons dans "plugin_compte.compte.classes.php").

- Les traductions sont inexistantes ou à revoir.

- Les alert javascript devraient etre refait en window.open stylé façon GLPI.

Le plus gros des modifications sont dans les fichier "plugin_compte.compte.classes.php" et  "plugin_compte.functions_setup.php" mais y a quelques modifications (suppression de l'ancien mécanisme surtout) ailleurs.

Sinon, j'ai trouvé une fonction prepareInputForAdd qui n'est pas utilisé par le plugin lui meme (peut etre que glpi l'appelle en construisant le nom de la fonction dynamiquement...).

En gros, c'est utilisable par notre instance mais pas viable pour tous tel quel.
Donc à tester avec une base vierge et à corriger avant éventuel merge avec le trunk :-\


P.S : Je cherche comment vous fournir l'archive...

Last edited by Noran (2009-04-27 15:36:36)

Offline

#8 2009-04-27 16:03:24

tsmr
GLPI-DEV
From: Rennes
Registered: 2005-08-26
Posts: 11,632
Website

Re: Amélioration du plugin Compte

Mail envoyé big_smile


Xavier Caillaud
Blog GLPI Infotel

Offline

#9 2009-04-27 16:19:17

Noran
Member
Registered: 2007-06-28
Posts: 95

Re: Amélioration du plugin Compte

Merci
Je rajoute un petit détail pour le hash (en fait double hash), il est stocké dans le fichier "plugin_compte.compte.classes.php". Il doit etre calculé (d'ou la présence de la calculette en frontend qui fait pas très userfriendly :-\) avant l'ajout d'un compte car il détermine le cryptage (il est impossible de changer la clé après coup sans mettre les mains dans le camboui, comme l'ancienne version du plugin).

J'utilise un double hash stocké pour comparer avec celui de la clé entrée (pour éviter que le formulaire envoie un password crypté avec la mauvaise clé et avoir une clé unique définie au départ) et juste le simple hash de la clé pour crypter. Celà évite que quelqu'un qui trouve le double hash (ce qui est facile, il est stocké dans le script php ;p).

En gros, le plus gros des problèmes viendra des mises à jour depuis d'anciennes versions ou de mise à jour de la clé. Ce sont des cas complexes.

Finalement, faudrait peut etre déporter dans la partie admin du plugin, un script de mise à jour paramètrable par formulaire, ainsi que la fameuse calculatrice double SHA256. Je testerais peut etre des petits trucs la dessus.

Last edited by Noran (2009-04-27 16:25:09)

Offline

#10 2009-04-27 16:33:00

tsmr
GLPI-DEV
From: Rennes
Registered: 2005-08-26
Posts: 11,632
Website

Re: Amélioration du plugin Compte

Tu peux venir sur irc ?


Xavier Caillaud
Blog GLPI Infotel

Offline

#11 2009-04-28 12:33:34

tsmr
GLPI-DEV
From: Rennes
Registered: 2005-08-26
Posts: 11,632
Website

Re: Amélioration du plugin Compte

Je viens de commiter ce beau cryptage pour la nouvelle version de glpi. Les betas testeurs sont les bienvenus pour tester l'upgrade / install. (tarball dispo demain matin).

Merci pour ta contrib Noran


Xavier Caillaud
Blog GLPI Infotel

Offline

Board footer

Powered by FluxBB