Authentification système via téléphone Nokia e65 avec One Time Password et jeton tournant

Alors ça si c’est pas du titre bien poilu :-D

Le but de billet est de vous montrer comment mettre en oeuvre une Authentification forte via OTP et un téléphone portable qui générera des mots de passes aléatoires et jetables toutes les 60 secondes. Ces mots de passes étant bien sur, en plus du secret partagé, générés en fonction du temps UTC entre le serveur et le téléphone (ce qu’on appelle un token basé sur le temps).

Oui, je sais, ça tue… :-D

Si vous travaillez (allez travailler ;-) ) dans un grosse société qui vous offre un accès VPN externe, il y a de fortes chances que vous rencontriez ce genre de joujou :

 

RSA_id

ou plus proche de notre époque ;-) celui ci :

 

rsasecurid

 

On appelle cela des « OTP Token basé sur le temps réel ».

NB: j’ignore si ses images sont libres de droits, et si tel n’est pas le cas, merci de m’avertir (en même temps je fais de la pub pour RSA SecurID alors bon…)

 

Je ne vais pas détailler ici que qu’est l’Authentification forte et les tokens basés sur le temps car il existe un excellent article sur Wikipédia qui vous expliquera tout et que je vous invite fortement a lire avant de continuer. Lire ICI.

Ce schéma résume l’ensemble :

 

AuthForte

 

Pour simplifier, lorsque vous vous connectez, vous devez taper le mot de passe qu’affiche le Token dans les 60 secondes avant qu’il change. Une fois utilisé, ce mot de passe n’est plus valable.

Utilisant ce produit professionnellement, je me demandais si je pouvais monter la même chose à titre personnel.

 

La première question était « Qu’est ce qui pourrait bien remplacer l’afficheur Token, qui ne soit pas trop encombrant que j’ai toujours sur moi ?… » Réponse : mon téléphone portable.

 

Ni une, ni deux, fouille laborieuse du nain ternet ou je trouvais quelques projets dont le plus important : Mobile OTP.

J’utilise déja l’authentification OTP chez moi (via OPIE) et ce programme s’en rapproche mais je voulais encore plus ressemblant au clé RSA SecurID.

 

Ce projet existe et s’appelle FreeAuth.

La seule chose que l’on peut reprocher est son manque de documentation et d’explication.

 

Voici donc un petit tuto pour mettre en place cette solution.

 

D’abord, le plus important, synchroniser l’heure du serveur et du téléphone via NTP.

 

  • Synchronisation NTP du serveur

La partie surement la plus simple. Installer le package ntpdate. Puis une crontab « ntpdate serveur de temps ». (exemple : ntpdate fr.pool.ntp.org)

  • Synchronisation NTP du téléphone

Après quelques recherches sur le net, j’ai découvert un logiciel permettant une synchronisation NTP d’un téléphone équipé de Symbian S60 r3.

Ce soft s’appelle FreeTimeSync et vous le trouverez sur le site du développeur ICI .

 

Par contre son installation demande quelques manipulations, le logiciel étant toujours en développement.

 

- Télécharger l’application.

Ensuite il vous faut signer l’application (Certificat Symbian Open Signed).

 

- Rendez vous sur le site de Symbiansigned :
https://www.symbiansigned.com/app/page/public/openSignedOnline.do

 

- Récupérer le numéro IMEI de votre téléphone (séquence *#06# sur la plupart des téléphones).

- Renseigner un email valide, puis le chemin où vous avez sauvegarder l’appli.

- Dans le champ « Capability information » , cliquez sur « select all »

Puis enfin, taper les lettres aléatoires qui s’affichent (une horreur :-( complètement illisible et j’ai du essayer 4 ou 5 fois avant d’avoir bon).

 

Vous recevrez un email de confirmation avec une URL qu’il faudra valider et quelques minutes plus tard, vous recevrez un nouvel email avec le lien pour télécharger votre application signée.

 

ATTENTION : la synchronisation NTP ne peut se faire qu’en WiFi, par un accès Data ou GPS, le WAP ne laisse pas passer les requètes NTP.

 

Quelques captures d’écrans :

 

ntp1

ntp2

ntp3

ntp4

ntp5

ntp6

 

  • Installation de FreeAuth sur le nokia e65

Télécharger le programme FreeAuth MIDLet sur le site :

http://www.freeauth.org/site/wiki/FreeAuth%20MIDLet

 

Personnellement, j’ai téléchargé le .JAD et le .JAR sur :

http://wap.freeauth.org/2.4/

 

Puis j’ai édité le .JAR (qui est un fichier de paramètres) ou j’ai remplacer « networking Y » par « N ».

Il existe une solution de backup/restore en MD5 intégré à l’application mais j’ai du mal a saisir son fonctionnement en mode backup. En mode DB Restore, en traçant les trames réseaux, je le vois bien essayer de recuperer le fichier .bin sur le serveur que j’ai mis en paramètres dans le .JAD mais il échoue (je n’ai pas trop compris la mise en forme de la clé RSA privée :-( )

Ayant peu fouillé cette fonctionnalité, je n’en parlerais pas ici, bien qu’elle me paraisse fortement prometteuse et intéressante.

 

Ensuite, transférer les 2 fichiers sur le nokia e65 (via bluetooth, wifi, cable usb… ce que vous voulez quoi) et avec le navigateur de fichiers du téléphone, lancer le FreeAuth.JAD.

 

L’installation se passe sans soucis et vous pouvez lancer le programme (options, Next pour la page suivante) :

 

Tout d’abord entrer un code pin qui vous servira a protéger votre configuration :


freeauth1

 

freeauth2

Vous devez maintener taper aléatoirement 20 fois sur différentes touches afin de génerer l’entropie de cryptage :

freeauth3

 

Donner un nom de configuration :

freeauth4

 

Le programme affiche maintenant le code d’initialisation :

 

freeauth5

 

On reste à cette étape pour l’instant !!!

  • Installation de FreeAuth sur le Serveur Linux

Il vous faut les headers pam (libpam-dev)

apt-get install libpam0g-dev

Récupérer ensuite pam_freeauth sur le site :

 

wget http://www.freeauth.org/images/pam_freeauth.tgz
tar xzvf pam_freeauth.tgz

cd pam_freeauth
make clean
make install

Cela installe le module pam freeauth dans /lib/security.

Copier le fichier de conf :

cp -a freeauth.conf /etc/security
chmod 600 /etc/security/freeauth.conf

Créer un répertoire de cache

 

mkdir -p /var/cache/freeauth/
chmod 700 /var/cache/freeauth/

 


Ensuite dans /etc/pam.d, modifier le service PAM associé (ici SSH):

- commenter « @include common-auth »

- Ajouter

auth required pam_freeauth.so

Je vous laisse peaufiner votre configuration PAM (google est votre ami…), si vous préférer directement modifier votre common-auth et common-password, c’est vous qui voyez.

Modifier le /etc/sshd_config pour positionner la variable ChallengeResponseAuthentication avec YES
Redémarrer le service SSH.

 

Ensuite, avec le code d’initialisation donné par le nokia e65 plus haut, éditer le fichier :

/etc/security/freeauth.conf

Virer la ligne de test et remplacer par vos valeurs :

user code_initialisation

 

Exemple ici :

 

root D58]Nmaa-vdZ-m!P

 

Pour le compte root (vous pouvez avoir plusieurs code d’initialisation pour un utilisateur, utile si vous avez plusieurs FreeAuth ;-) )

 

Sur le téléphone, on peut lancer les séquences :

 

freeauth6

freeauth7

 

Connectez vous en ssh sur le serveur:

 

ssh root@192.168.0.111
passcode:

Il vous reste qu’à taper le code afficher sur le téléphone :-D

La classe :-D :-D

 

Si cela ne fonctionne pas, vérifier que le serveur et le télephone nokia sont à la même heure UTC (en Epoch time) :

freeauth9

freeauth8

Sur le serveur :

 

echo « `date +%s` / 60″ | bc

20261111

 

Sinon, modifier UTC en + ou en – et surtout mettez vous à l’heure NTP (entre nous, rien ne vous interdit d’être en UTC+12 :-) )

 

 

Et voila comment monter un système d’authentification forte digne d’une offre commerciale chère avec « peu » de moyens :-D

Ne vous méprenez pas, cette solution est largement aussi satisfaisante pour peu que vous construisiez votre architecture en conséquence.

Si maintenant je vous annonce que l’on peut coupler tout cela avec un serveur RADIUS… (avec XTRadius que vous trouverez ICI ) vous vous dites « omg » et je vous comprends…

Vous verrez qu’a force de fouiller le sujet, les possiblités sont nombreuses.

 

NB: Il subsiste encore quelques bugs dans l’appli FreeAuth sur le nokia e65, surtout pour le backup. La bidouille que j’ai trouver est de toujours cliquer sur « About » avant de faire un « DB backup » et surtout, être cool….

 

 

 

Ce billet a été posté dans geekerie, sécurité et taggé , , , , , , , . Bookmark ce permalink.

Un commentaire sur “Authentification système via téléphone Nokia e65 avec One Time Password et jeton tournant

  1. Vous pouvez bien sur utiliser le FreeAuth.jar sur votre ordinateur via le toolkit Sun JavaME.
    Rendez vous sur cette page : http://java.sun.com/javame/downloads/
    Et télécharger le Sun Java Wireless Toolkit 2.5.2 for CLDC.
    Indiquez lui le .jad du package FreeAuth et hop, un émulateur de téléphone portable lancera l’application :-)