Archive for the ‘Uncategorized’ Category

Un 24 septembre

Tuesday, June 22nd, 2010

Cle d’authentification YubiKey

Sunday, February 28th, 2010

Pour ce premier post qui parle d’informatique, je vais vous presenter la YubiKey : c’est une cle d’authentification forte a base d’One-Time Password (ou mot de passe jetable), empechant les attaques par rejout. On peut utiliser cette cle avec une double authentification : le possesseur doit egalement saisir un autre mot de passe traditionnel, permettant une securite encore plus forte.

Malheureusement, il y a un defaut, cette cle est vu comme un peripherique de saisie standart ( HID ), ce qui ne cadrait pas avec mon utilisation de la cle : je voulais pouvoir modifier l’etat d’un service (le wifi ou surveillance video par exemple) sans avoir a ouvrir une session, ou dans le cas d’un routeur a base de firmware nihiliste extremiste libre, sans avoir a se connecter a une interface web).

Apres un peu de recherche, lors de l’insertion de la cle, grace a une regle udev, je lance mon programme :

ACTION=="add", SUBSYSTEM=="input", ATTRS{idVendor}=="1050", ATTRS{idProduct}=="0010", KERNEL=="event*", RUN+="/bin/yubico"

Je reclame ensuite le peripherique indique par la variable d’environnement DEVNAME:

fd = open( getenv("DEVNAME"), O_RDONLY );

A ce stade, j’obtiens copie de tout les evenenements claviers de la cle, mais cette derniere reste attache a l’entree standart du PC. Il faut alors reclamer le peripherique (un plongeon dans /usr/include/linux/input.h a ete necessaire).

ioctl( fd, EVIOCGRAB, 1 );

A ce stade, il suffit d’attendre une structure input_event (toujours le meme fichier input.h ainsi que Documentation/input/input.h). Une gestion de tampon et de timeout et me voila pret a verifier l’OTP.

A ce stade, j’ai joue la solution de facilite et j’attaque le WebService de Yubico pour verifier la cle OTP fourni par la cle. J’ai prevu trois hooks : en cas de succes, en cas d’echec et lorsque la cle est retire, le programme quitte automatiquement.

La suite du travail se passera sur une Alix PC-Engines avec OpenWRT pour verifier si tout marche correctement avec mdev, le remplacement d’udev fourni par BusyBox. Il reste aussi plusieurs bricoles comme indique dans l’archive.

Le progamme est telechargeable a http://www.murlock.org/utils/yubikey.tar.bz2. Ma machine, un Aspire One, tourne sur une Debian (mi testing / mi stable) avec le noyau 2.6.32.

PS: ce billet est entierement realise sur un clavier qwerty, donc pas d’accent dans un premier temps.