Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

PKI ? Token ? Gina.dll ? Quelle methode utiliser pour de l'authentification Physique ?

44 réponses
Avatar
Imochon
Bonjour a tous,

Je me renseigne actuellement sur une methode d'authentification permettant
de rendre accessible un pc uniquement si un clé USB est connecté avec un
fichier dauthentification dessus.

Il y a des déjà des offres comme celle de Placoot par exemple qui correspond
parfaitement a ce que je souhaite :
http://fr.palcott.com/products/naturallogin/screenshots.php

par contre je me dis que l'on peut peut-etre créer soit mm une telle
solution avec des bases de de développement et un cle usb ;)

J'ai effectué qq recherches mais rien de bien top mis a part le fait que
tout part de la gina.dll pour l'ouverture de sessiosn. par apres je ne sais
comment faire ..

Des idées ? Avis ? Suggestiosn ?

D'avance merci.

10 réponses

1 2 3 4 5
Avatar
Sylvain
Imochon wrote on 03/08/2005 08:28:

Je me renseigne actuellement sur une methode d'authentification permettant
de rendre accessible un pc uniquement si un clé USB est connecté avec un
fichier dauthentification dessus.



le modèle de login M$-kerberos utilisé par les 2K, XP, 2003 connectés à
un controleur de domaine, nécessite un module cryptographique pour
stocker une clé RSA et générer une signature (réaliser un CSP de
signature soft serait une mauvaise idée).

le login est réalisé par winlogon (process lancé au démarrage avant
l'ouverture de session utilisateur) qui affiche le dialogue standard M$
ou une GINA custom puis donne la main à un CSP pour obtenir une
signature pour laquelle vous disposez d'un certificat contenant
l'attribut propriétaire M$ d'ouverture de session.

une GINA (Graphical Identification and Authentication) n'est qu'un
module graphique permettant d'afficher votre image (si vous êtes une
société commerciale) ou de réaliser les traitements nécessitant une
interface et l'action de l'utilisateur (sélection d'un device USB,
saisie de passphrase compliqué, etc, etc), elle est optionelle et ne
communique pas directement avec votre CSP.


dans le cas d'une machine hors réseau, le login est réalisé en local
(forcément) en présentant simplement le user ID + password d'un compte
local valide, pour remplacer le prompt standard de saisie par une
lecture depuis un device quelconque (dont clé USB) vous implémenterez
juste une GINA qui relira en clair et stockera en clair ces paramètres
dans les zones d'échanges avec winlogon, le système faisant le reste.

vous trouverez toute les infos sur msdn.microsoft.com pour écrire votre
GINA ... prévoyer simplement une machine multi-OS pour ne pas passer
plus de temps à réinstaller un système bloqué qu'à developper.

Sylvain.

Avatar
Imochon
le modèle de login M$-kerberos utilisé par les 2K, XP, 2003 connectés à
un controleur de domaine, nécessite un module cryptographique pour
stocker une clé RSA et générer une signature (réaliser un CSP de
signature soft serait une mauvaise idée).

le login est réalisé par winlogon (process lancé au démarrage avant
l'ouverture de session utilisateur) qui affiche le dialogue standard M$
ou une GINA custom puis donne la main à un CSP pour obtenir une
signature pour laquelle vous disposez d'un certificat contenant
l'attribut propriétaire M$ d'ouverture de session.

une GINA (Graphical Identification and Authentication) n'est qu'un
module graphique permettant d'afficher votre image (si vous êtes une
société commerciale) ou de réaliser les traitements nécessitant une
interface et l'action de l'utilisateur (sélection d'un device USB,
saisie de passphrase compliqué, etc, etc), elle est optionelle et ne
communique pas directement avec votre CSP.


dans le cas d'une machine hors réseau, le login est réalisé en local
(forcément) en présentant simplement le user ID + password d'un compte
local valide, pour remplacer le prompt standard de saisie par une
lecture depuis un device quelconque (dont clé USB) vous implémenterez
juste une GINA qui relira en clair et stockera en clair ces paramètres
dans les zones d'échanges avec winlogon, le système faisant le reste.

vous trouverez toute les infos sur msdn.microsoft.com pour écrire votre
GINA ... prévoyer simplement une machine multi-OS pour ne pas passer
plus de temps à réinstaller un système bloqué qu'à developper.

Sylvain.



Merci bcp sylvain pour votre réponse.

N'étant pas "technique" comme personnage, votre réponse me fait un peu peur
;)

L'idée était simplement de savoir si un tel outil peut etre developper sans
grande difficulté pour qqun qui s'y connait ou bien est ce tout de meme long
et compliqué. j'ai entendu dire que créer sa propre Gina n'était pas bien
simple et non sans risque ..

Quand pensez vous ?

Merci infiniment.

jérémy

Avatar
Johann.D
dans le cas d'une machine hors réseau, le login est réalisé en local
(forcément) en présentant simplement le user ID + password d'un compte
local valide, pour remplacer le prompt standard de saisie par une
lecture depuis un device quelconque (dont clé USB) vous implémenterez
juste une GINA qui relira en clair et stockera en clair ces paramètres
dans les zones d'échanges avec winlogon, le système faisant le reste.

vous trouverez toute les infos sur msdn.microsoft.com pour écrire votre
GINA ... prévoyer simplement une machine multi-OS pour ne pas passer
plus de temps à réinstaller un système bloqué qu'à developper.

Sylvain.



Merci bcp sylvain pour votre réponse.

N'étant pas "technique" comme personnage, votre réponse me fait un peu
peur

;)

L'idée était simplement de savoir si un tel outil peut etre developper
sans

grande difficulté pour qqun qui s'y connait ou bien est ce tout de meme
long

et compliqué. j'ai entendu dire que créer sa propre Gina n'était pas bien
simple et non sans risque ..

Quand pensez vous ?


De mémoire le Platform SDK fournis 1 ou 2 exemples pour faire une GINA. On
va supposer que tu souhaites faire une ouverture de session locale. Comme te
l'as précisé Sylvain, l'ouverture de session réseau c'est une autre paire de
manches.

Le plus simple c'est de faire une verrue qui "enrobe" la msgina.dll
(pass-thru stub) sans avoir à en réécrire les fonctions existantes. On se
contente de rajouter dans notre enrobage la possibilité de lire les
paramètres à passer à Winlogon (user, domain et password). J'ai fait ça il y
a bien longtemps sur un NT4, je crois que sous 2k et XP on peut toujours
utiliser le même principe, mais au delà ?

Par contre niveau sécurité il faut réfléchir à 2 fois sur les conséquences
de ce genre de gadgets :
- soit tu passes complètement du clavier, et il faut que tu retrouves le
password dans un fichier sur ta clé USB, ce qui est rarement une bonne
idée...
- soit tu fais une double authentification (le password est accepté par
Winlogon + le password ouvre bien la clé privée du certificat présent sur la
clé USB), et il faut que tu fasses attention à bien garder les 2
synchronisés.
Dans les 2 cas, que ce passe-t-il si on fait une copie du contenu de la clé
USB ?

--
Johann.D


Avatar
Sylvain
Imochon wrote on 04/08/2005 08:11:

L'idée était simplement de savoir si un tel outil peut etre developper sans
grande difficulté pour qqun qui s'y connait ou bien est ce tout de meme long
et compliqué. j'ai entendu dire que créer sa propre Gina n'était pas bien
simple et non sans risque ..



il vaut mieux savoir coder en C/C++ ...

il existe des samples et contrairement à un CSP votre Gina n'a pas
besoin d'être signée par M$ pour être utilisée, donc ça tombe en marche
assez vite.

conservez toutefois toujours l'option de saisir le user + password via
des input fields pour ne pas rester coincé - Johann, il me semble bien
que le 'domain' est inexistant en *local* ;-)

puis ajouter la lecture d'un fichier en clair sur votre clé USB et
recopiez les valeurs lues dans ces champs de saisies.

ensuite vous pourrez chiffrer le fichier contenant vos infos de login en
PBE (password based encryption) ou avec un truc-pas-trop-moche-à-vous
pour prévenir la copie de votre clé; etc, etc, à vous de jouer.

le problème de synchro est en effet pas tout à fait trivial, mais c'est
votre Gina qui gérera l'option "modifier le mot de passe", vous mettrez
donc à jour la base système (le pass-thru est le plus simple) *et* votre
clé.

Sylvain.

Avatar
Imochon
il vaut mieux savoir coder en C/C++ ...

il existe des samples et contrairement à un CSP votre Gina n'a pas
besoin d'être signée par M$ pour être utilisée, donc ça tombe en marche
assez vite.

conservez toutefois toujours l'option de saisir le user + password via
des input fields pour ne pas rester coincé - Johann, il me semble bien
que le 'domain' est inexistant en *local* ;-)

puis ajouter la lecture d'un fichier en clair sur votre clé USB et
recopiez les valeurs lues dans ces champs de saisies.

ensuite vous pourrez chiffrer le fichier contenant vos infos de login en
PBE (password based encryption) ou avec un truc-pas-trop-moche-à-vous
pour prévenir la copie de votre clé; etc, etc, à vous de jouer.

le problème de synchro est en effet pas tout à fait trivial, mais c'est
votre Gina qui gérera l'option "modifier le mot de passe", vous mettrez
donc à jour la base système (le pass-thru est le plus simple) *et* votre
clé.

Sylvain.


Merci Bcp bcp Sylvain.

Une quetsion, pour developper un outil comme celui de palcott, selon vous,
un developpeur ni mauvais ni trop bon mettrait combien de temps ?

Question peut etre bete car cela depend des competences j'en suis conscient
mais a la louche ? ;o)

Merci d'avance

Avatar
Johann.D
"Sylvain" a écrit dans le message de
news:42f2797d$0$3101$
conservez toutefois toujours l'option de saisir le user + password via
des input fields pour ne pas rester coincé - Johann, il me semble bien
que le 'domain' est inexistant en *local* ;-)


C'est pas faux...

Vivement les vacances...


(Quoiqu'à y réfléchir, il faut bien s'occuper de la liste déroulante qui va
bien, pour sélectionner un login local et non un login sur le domaine sur
une machine qui propose les 2. Mais si je laisse le domaine sélectionné, je
crois bien que le service "ouverture de session réseau" va transmettre le
tout au contrôleur sans se poser de questions, non ? Enfin, avec NT4 je
crois que ça ne posait pas de problème).

--
Johann

Avatar
Sylvain
Johann.D wrote on 05/08/2005 08:58:

il me semble bien
que le 'domain' est inexistant en *local* ;-)


C'est pas faux...

(Quoiqu'à y réfléchir, il faut bien s'occuper de la liste déroulante qui va
bien, pour sélectionner un login local et non un login sur le domaine sur
une machine qui propose les 2.


un machine _connectée à un controleur de domaine_ propose les "2" (en
fait le controleur descends la liste de toutes les forêts définies et
l'alternative "local" vs "network" correspondrait à un seul controleur
primaire sans aucun sous-domaine). on peut alors utiliser un jeton
réseau (qui permets d'accéder directement aux ressources réseau) ou se
loger en local (le réseau reste visible mais l'authentification par un
crédential réseau (le nom de compte réseau) devra être utilisé pour
accéder aux ressources partagées); dans les 2 cas, la machine est bien
connectée au réseau (elle utilise une IP du serveur DHCP par exemple).

une machine non-déclarée dans un réseau (en "workgroup") ne peut
utiliser que des comptes locaux (sinon il suffirait de dériver un brin
et d'usurper une identité, par protection la machine doit être
préalablement déclarée), donc le popup domaine n'est pas présent.

Sylvain.


Avatar
Sylvain
Imochon wrote on 05/08/2005 08:31:

Une quetsion, pour developper un outil comme celui de palcott, selon vous,
un developpeur ni mauvais ni trop bon mettrait combien de temps ?



pour faire un code qui marche 2 ou 3 jours (implémentation partielle des
points d'entrée GINA et gestion des events plug&play liés au
périphérique USB).

mais vous serez surement loin du produit palcott dont j'ignore tout et
donc dont je ne parlerais pas; de manière standard, si vous imaginez un
produit complet (qu'il faut coder/tester), validé sur différents OS
(tester/retester), en différentes langues (pas que roman, mais Kandji,
Chinois, Arabe, etc) avec plein de beaux écrans (qu'il faut dessiner),
un install propre, un user guide, et qlq features commerciaux comme des
emergency back-doors (?!) ça prends beaucoup plus de temps (3 à 6
mois/homme).

Sylvain.

Avatar
YBM
Imochon wrote on 05/08/2005 08:31:


Une quetsion, pour developper un outil comme celui de palcott, selon
vous,
un developpeur ni mauvais ni trop bon mettrait combien de temps ?



pour faire un code qui marche 2 ou 3 jours (implémentation partielle des
points d'entrée GINA et gestion des events plug&play liés au
périphérique USB).

mais vous serez surement loin du produit palcott dont j'ignore tout et
donc dont je ne parlerais pas; de manière standard, si vous imaginez un
produit complet (qu'il faut coder/tester), validé sur différents OS
(tester/retester), en différentes langues (pas que roman, mais Kandji,
Chinois, Arabe, etc) avec plein de beaux écrans (qu'il faut dessiner),
un install propre, un user guide, et qlq features commerciaux comme des
emergency back-doors (?!) ça prends beaucoup plus de temps (3 à 6
mois/homme).


Je découvre ce machin dans votre discussion (j'avais un peu bricolé
avec une Gina pour openldap sans succès ceci dit). Vous voulez dire
que le développement d'une simple procédure internationalisable de
login sous Windows prend entre 3 et 6 mois pour un dévelopeur qualifié,
alors que qu'avec un .dm quelconque sous Linux et un bête module PAM
on s'en tire en deux semaines (dans le pire des cas) sous UNIX/Linux ??

Si vous avez raison, vous venez d'expliquer pourquoi Windows n'existera
plus dans dix ans, sinon comme traces.


Avatar
Sylvain
YBM wrote on 06/08/2005 04:30:

Vous voulez dire que le développement d'une simple procédure
internationalisable de login sous Windows prend entre 3 et 6
mois pour un dévelopeur qualifié.



non, j'ai indiqué que je ne connais pas ce produit, ni son périmêtre, ni
ses développeurs, ni leur expertisse; mais simplement que proposer un
produit commercial (ce qui devrait être synonyme de pertinence et
fiabilité) prends plus d'une semaine.

cet aspect étant hors chartre, des génaralités suffisaient.

Sylvain.

1 2 3 4 5