Openstuff Wiki : OTP

HomePage :: Categories :: PageIndex :: RecentChanges :: RecentlyCommented :: Login/Register

Revision [554]

Last edited on 2007-12-05 18:40:46 by StanKju
Additions:
One Time Password (OTP) est un système qui permet d'utiliser des mots de passe différents à chaque nouvelle connexion. Voici comment cela fonctionne:
~- L'utilisateur établit une connexion sur le serveur. Le serveur produit alors un //challenge// en affichant un numéro de séquence ainsi qu'une graine
~- L'utilisateur utilise un programme ou un composant physique et entre le triplet suivant: son mot de passe ainsi numéro de séquence et la graine précédemment fournie. Avec ces informations, un //résultat// est produit
Pour terminer, on estime OTP comme étant un système à deux facteurs d'authentification (//two-factor authentication//). Il se base sur quelque chose que l'on connait (le password) et quelque chose que l'on possède (le logiciel ou le composant physique).
Une fois la partie logicielle installée, il va falloir la paramétrer en définissant un utilisateur avec un mot de passe partagé:
L'option ''-n'' définis le nombre de login autorisés avant que le secret ne doive être réinitialisé.
Ceci a permis de créer l'utilisateur ''jstankiewicz'' et de définir son mot de passe associé. Le fichier ''opiekeys'' sur le serveur contient justement les informations sur les utilisateurs permettant d'authentifier ceux-ci:
Nous allons coder un script perl qui permet de s'authentifier. Celui est un exemple brut qui pourrait par exemple être utilisé pour un service Web. Pour cela nous allons utiliser le module Perl
[[http://search.cpan.org/%7Eeestabroo/Authen-OPIE-1.00/OPIE.pm Authen::OPIE]]. Celui n'est malheureusement pas packagé sous Debian, donc c'est parti pour une installation à la main.
Ici pour le ''make test'' nous utilisons l'utilisateur précédemment créé, et fournissons le résultat du challenge en utilisant le client:
=== 4.2 Création du script réalisant l'authentification ===
Deletions:
One Time Password (OTP) est un système qui permet d'utiliser des mots de passe différent à chaque nouvelle connexion. Voici comment cela fonctionne:
~- L'utilisateur établit un connexion sur le serveur. Le serveur produit alors un //challenge// en affichant un numéro de séquence ainsi qu'une graine
~- L'utilisateur utilise un programme ou un composant physique et entre le triplet suivant: son mot de passe ainsi numéro de séquence et la graine précédemment fournis. Avec ces informations, un //résultat// est produit
Pour terminer, on estime OTP comme étant un système à deux //facteur// d'authentification (//two-factor authentication//). Il se base sur quelque chose que l'on connait (le password) et quelque chose que l'on possède (le logiciel ou le composant physique).
Une fois la partie logicielle installé, il va falloir la paramétrer en définissant un utilisateur avec un mot de passe partagé:
L'option ''-n'' définit le nombre de login autorisé avant que le secret ne doit être réinitialisé.
Ceci à permis de créer l'utilisateur ''jstankiewicz'' et de définir sont mot de passe associé. Le fichier ''opiekeys'' sur le serveur contient justement les informations sur les utilisateurs permettant d'authentifier ceux-ci:
Nous allons coder un script perl qui permet de s'authentifier. Celui est un exemple brut qui pourrait par exemple être utiliser pour un service Web. Pour cela nous allons utiliser le module Perl
[[http://search.cpan.org/%7Eeestabroo/Authen-OPIE-1.00/OPIE.pm Authen::OPIE]]. Celui n'est malheureusement pas packagé sous Debian, donc c'est partie pour une installation à la main.
Ici pour le ''make test'' nous utilisons l'utilisateur précédemment créer, et fournissons le résultat du challenge en utilisant le client:
=== 4.2 Création du script réalisant l'autehtification ===


Revision [553]

Edited on 2007-12-05 13:53:28 by StanKju
Additions:
L'idée de cet article est de découvrir rapidement un exemple d'utilisation d'OTP. Après en avoir rappelé les principes, nous installerons un client et un serveur. Pour terminer, nous développerons un petit script Perl permettant de voir un exemple d'utilisation concret.


Revision [552]

Edited on 2007-12-05 13:49:01 by StanKju
Additions:
=====Mise en pratique d'OTP=====
====1. Principe====
====2. Installation des outils====
Nous allons considérer deux entités: la partie cliente (votre poste de bureautique) et la partie serveur (la machine finale). L'installation sous Linux Debian se fait de la façon suivante:
====3. Initialisation des mots de passe====
Une fois la partie logicielle installé, il va falloir la paramétrer en définissant un utilisateur avec un mot de passe partagé:
Sur le serveur:
Ici, nous allons aller sur le client et rentrer le challenge proposé:
Nous collons la réponse sur le serveur:
Ceci à permis de créer l'utilisateur ''jstankiewicz'' et de définir sont mot de passe associé. Le fichier ''opiekeys'' sur le serveur contient justement les informations sur les utilisateurs permettant d'authentifier ceux-ci:
Pour information, la commande ''opieinfo'' permet d'extraire le numéro de séquence ainsi que la graine pour le futur challenge:
====4. Développement d'un outil d'authentification en Perl ====
Nous allons coder un script perl qui permet de s'authentifier. Celui est un exemple brut qui pourrait par exemple être utiliser pour un service Web. Pour cela nous allons utiliser le module Perl
[[http://search.cpan.org/%7Eeestabroo/Authen-OPIE-1.00/OPIE.pm Authen::OPIE]]. Celui n'est malheureusement pas packagé sous Debian, donc c'est partie pour une installation à la main.
===4.1 Installation du module Perl Authen::OPIE ===
Récupération du tar.gz et compilation:
Ici pour le ''make test'' nous utilisons l'utilisateur précédemment créer, et fournissons le résultat du challenge en utilisant le client:
=== 4.2 Création du script réalisant l'autehtification ===
Voici le script:
die "Unknown OPIE user: $user\n" if (not defined $opiechalstr);
die "Unknown challenge type: $opiechalstr\n" if ($opiechalarr[0] ne "otp-md5");
die "Authentication FAILED\n";
L'utilisation est simple, voici ce qu'il se passe une fois lancé:
~- Erreur d'utilisateur:
user:jstankiewic
Unknown OPIE user: jstankiewic
~- Réussite de l'authentification
~- En cas d'échec
Authentication FAILED
Deletions:
Mise en place d'OTP
===Principe===
===Installation des outils===
===Initialisation des mots de passe===
Server:
===Vérification===
Le fichier //opiekeys// sur le serveur contient les informations sur les utilisateurs permettant d'authentifier ceux-ci:
Pour information, la commande ''opieinfo'' permet d'extraire le numéro de séquence ainsi que la graine pour les futurs challenge:
http://search.cpan.org/%7Eeestabroo/Authen-OPIE-1.00/OPIE.pm
Manifying blib/man3/Authen::OPIE.3pm
die "Unknown OPIE user: $user" if (not defined $opiechalstr);
die "Unknown challenge type: $opiechalstr" if ($opiechalarr[0] ne "otp-md5");
die "Authentication FAILED";
./opie_server.pl
Unknown OPIE user: jstankiewicz
testsecu2:~# vi ./opie_server.pl
testsecu2:~# ./opie_server.pl
testsecu2:~# ./opie_server.pl
Authentication FAILED at ./opie_server.pl line 30, line 2.


Revision [551]

Edited on 2007-12-05 13:28:26 by StanKju
Additions:
===Principe===
One Time Password (OTP) est un système qui permet d'utiliser des mots de passe différent à chaque nouvelle connexion. Voici comment cela fonctionne:
~- L'utilisateur établit un connexion sur le serveur. Le serveur produit alors un //challenge// en affichant un numéro de séquence ainsi qu'une graine
~- L'utilisateur utilise un programme ou un composant physique et entre le triplet suivant: son mot de passe ainsi numéro de séquence et la graine précédemment fournis. Avec ces informations, un //résultat// est produit
~- L'utilisateur copie ce //résultat// qui sera vérifié par le serveur
Ceci implique donc un secret partagé entre le serveur et le client. L'avantage de ce système et qu'il est insensible au rejeu: si une personne intercepte le résultat, il ne pourra pas l'utiliser, ce dernier étant valide qu'une seule fois. Par contre, il est toujours possible pour l'attaquant de brute forcer le mot de passe si celui-ci intercepte à la fois le challenge et le résultat.
Pour terminer, on estime OTP comme étant un système à deux //facteur// d'authentification (//two-factor authentication//). Il se base sur quelque chose que l'on connait (le password) et quelque chose que l'on possède (le logiciel ou le composant physique).
Pour plus d'information sur OTP, se référer à http://www.deer-run.com/~hal/ns2000/otp.pdf
# opiepasswd jstankiewicz -n 99
otp-md5 99 te6984
L'option ''-n'' définit le nombre de login autorisé avant que le secret ne doit être réinitialisé.
opiekey 99 te6984
AHEM ATOM SALE ARC LAP WIFE
Response: AHEM ATOM SALE ARC LAP WIFE
ID jstankiewicz OTP key is 99 te6984
AHEM ATOM SALE ARC LAP WIFE
jstankiewicz 0099 te6984 4989df57818233f7 Dec 05,2007 13:29:33
~- **login:** //jstankiewicz//
~- **numéro de séquence:** //0099//
~- **graine de l'utilisateur:** //te6984//
~- **dernière réponse de l'utilisateur:** //4989df57818233f7//
~- **date et heure du dernier changement:** //Dec 05,2007 13:27:33//
98 te6984
http://search.cpan.org/%7Eeestabroo/Authen-OPIE-1.00/OPIE.pm
# apt-get install libopie-dev
# wget "http://search.cpan.org/CPAN/authors/id/E/EE/EESTABROO/Authen-OPIE-1.00.tar.gz"
# tar zxvf Authen-OPIE-1.00.tar.gz
Authen-OPIE-1.00/
Authen-OPIE-1.00/OPIE.xs
Authen-OPIE-1.00/Makefile.PL
Authen-OPIE-1.00/Changes
Authen-OPIE-1.00/OPIE.pm
Authen-OPIE-1.00/MANIFEST
Authen-OPIE-1.00/test.pl
# cd Authen-OPIE-1.00/
# perl Makefile.PL
Writing Makefile for Authen::OPIE
# make
[...]
Manifying blib/man3/Authen::OPIE.3pm
# make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-Iblib/lib" "-Iblib/arch" test.pl
1..1
OPIE must be set up on your box in order for this test to work
You must be root in order to use the OPIE module (as root is the only one with permissions on the opiekey file)
ok 1
Login to test: jstankiewicz
I challenge you [jstankiewicz]: otp-md5 98 te6984 ext
your response? NAT WAIL BRIM WING WIFE CAP
ok 3: response was verified (you passed)
# make install
[...]
$ opiekey 98 te6984
NAT WAIL BRIM WING WIFE CAP
%%(perl)
#!/usr/bin/perl -w
use strict;
use Authen::OPIE qw(opie_challenge opie_verify);
# Get user name
print "user:";
my $user= ;
chomp($user);
# Create a challenge
my $opiechalstr = opie_challenge($user);
die "Unknown OPIE user: $user" if (not defined $opiechalstr);
my @opiechalarr=split(/ /, $opiechalstr);
die "Unknown challenge type: $opiechalstr" if ($opiechalarr[0] ne "otp-md5");
print "sequence: ",$opiechalarr[1],"\n";
print "seed: ",$opiechalarr[2],"\n";
# Verify the challenge
print "response:";
my $response = ;
chomp($response);
print "Empty response" if (not defined $response or $response eq "");
my $verifyval = opie_verify($user,$response);
if (not defined $verifyval or $verifyval != 0) {
die "Authentication FAILED";
}
else {
print "Authentication SUCCEEDED\n";
}
exit 0;
./opie_server.pl
user:jstankiewicz
Unknown OPIE user: jstankiewicz
testsecu2:~# vi ./opie_server.pl
testsecu2:~# ./opie_server.pl
user:jstankiewicz
sequence: 97
seed: te6984
response:ROAR JEAN MUFF LYON HIDE BARK
Authentication SUCCEEDED
testsecu2:~# ./opie_server.pl
user:jstankiewicz
sequence: 96
seed: te6984
response:ROAR JEAN MUFF LYON HIDE BARK
Authentication FAILED at ./opie_server.pl line 30, line 2.
Deletions:
# opiepasswd jstankiewicz
otp-md5 499 te6982
$ opiekey 499 te6981
DUCK TEET MYTH LESK HANG SUNG
Response: DUCK TEET MYTH LESK HANG SUNG
ID jstankiewicz OTP key is 499 te6983
DUCK TEET MYTH LESK HANG SUNG
jstankiewicz 0499 te6983 779d1b0556a937ca Dec 05,2007 13:07:09
~- **login name:** //jstankiewicz//
~- **user's sequence number:** //0499//
~- **user's seed:** //te6983//
~- **user's last response:** //79d1b0556a937ca//
~- **last change date and time:** //Dec 05,2007 13:07:09//
498 te6983


Revision [550]

Edited on 2007-12-05 11:17:06 by StanKju
Additions:
Mise en place d'OTP
===Installation des outils===
Serveur:
%%
# apt-get install opie-server
%%
Client:
%%
$ sudo apt-get install opie-client
%%
===Initialisation des mots de passe===
Serveur:
%%
# opiepasswd jstankiewicz
Updating jstankiewicz:
You need the response from an OTP generator.
New secret pass phrase:
otp-md5 499 te6982
Response:
%%
Client:
%%
$ opiekey 499 te6981
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase:
DUCK TEET MYTH LESK HANG SUNG
%%
Server:
%%
Response: DUCK TEET MYTH LESK HANG SUNG
ID jstankiewicz OTP key is 499 te6983
DUCK TEET MYTH LESK HANG SUNG
%%
===Vérification===
Le fichier //opiekeys// sur le serveur contient les informations sur les utilisateurs permettant d'authentifier ceux-ci:
%%
# cat /etc/opiekeys
jstankiewicz 0499 te6983 779d1b0556a937ca Dec 05,2007 13:07:09
%%
Voici l'explication des différents champs:
~- **login name:** //jstankiewicz//
~- **user's sequence number:** //0499//
~- **user's seed:** //te6983//
~- **user's last response:** //79d1b0556a937ca//
~- **last change date and time:** //Dec 05,2007 13:07:09//
Pour information, la commande ''opieinfo'' permet d'extraire le numéro de séquence ainsi que la graine pour les futurs challenge:
%%
# opieinfo jstankiewicz
498 te6983
%%
Deletions:
OTP


Revision [549]

The oldest known version of this page was created on 2007-12-05 11:01:32 by StanKju
Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by WikkaWiki
Page was generated in 0.0868 seconds