S/Key est un système de mots de passe non réutilisables basé sur une fonction de hachage irréversible. FreeBSD utilise le hachage MD4 pour des raisons de compatibilité mais d'autres système utilisent MD5 et DES-MAC. S/Key fait partie du système de base de FreeBSD depuis la version 1.1.5 et est aussi utilisé sur un nombre toujours plus important d'autres systèmes d'exploitation. S/Key est une marque déposée de Bell Communications Research, Inc.
Depuis la version 5.0 de FreeBSD, S/Key a été remplacé par la fonction équivalente OPIE (“One-time Passwords In Everything” — Mots de passe non réutilisables dans toutes les applications). OPIE utilise le hachage MD5 par défaut.
Il existe trois types de mots de passe dont nous parlerons
dans ce qui suit. Le premier est votre mot de passe UNIX®
habituel ou mot de passe Kerberos; nous appellerons “mot
de passe UNIX®“. Le deuxième type est le mot de passe
généré par les programmes
S/Key key
ou
OPIE opiekey(1) et reconnu par les programmes
keyinit
ou opiepasswd(1) et l'invite
de session; nous appellerons ceci un “mot de passe non
réutilisable”. Le dernier type de mot de passe
est le mot de passe secret que vous donnez aux programmes
key
/opiekey
(et parfois
aux programmes
keyinit
/opiepasswd
) qui
l'utilisent pour générer des mots de passe non
réutilisable; nous l'appellerons “mot de passe
secret” ou tout simplement “mot de
passe”.
Le mot de passe secret n'a rien à voir avec votre mot de passe UNIX®; ils peuvent être identique, mais c'est déconseillé. Les mots de passe secret S/Key et OPIE ne sont pas limités à 8 caractères comme les anciens mots de passe UNIX®[8], ils peuvent avoir la longueur que vous désirez. Des mots de passe de six ou sept mots de long sont relativement communs. La plupart du temps, le système S/Key ou OPIE fonctionne de façon complètement indépendante du système de mot de passe UNIX®.
En plus du mot de passe, deux autres types de données sont importantes pour S/Key et OPIE. L'une d'elles est connue sous le nom de “germe” (“seed”) ou “clé”, formé de deux lettres et cinq chiffres. L'autre est ce que l'on appelle le “compteur d'itérations”, un nombre compris entre 1 et 100. S/Key génère un mot de passe non réutilisable en concaténant le germe et le mot de passe secret, puis en appliquant la fonction de hachage MD4/MD5 autant de fois qu'indiqué par le compteur d'itérations, et en convertissant le résultat en six courts mots anglais. Ces six mots anglais constituent votre mot de passe non réutilisable. Le système d'authentification (principalement PAM) conserve une trace du dernier mot de passe non réutilisable utilisé, et l'utilisateur est authentifié si la valeur de hachage du mot de passe fourni par l'utilisateur est la même que celle du mot de passe précédent. Comme le hachage utilisé est irréversible, il est impossible de générer de mot de passe non réutilisable si on a surpris un de ceux qui a été utilisé avec succès; le compteur d'itérations est décrémenté après chaque ouverture de session réussie, de sorte que l'utilisateur et le programme d'ouverture de session restent en phase. Quand le compteur d'itération passe à 1, S/Key et OPIE doivent être réinitialisés.
Il y a trois programmes impliqués dans chacun des
systèmes que nous aborderons plus bas. Les programmes
key
et opiekey
ont pour
paramètres un compteur d'itérations, un germe, et un
mot de passe secret, et génère un mot
de passe non réutilisable ou une liste de mots
de passe non réutilisable. Les programmes
keyinit
et opiepasswd
sont utilisés pour initialiser respectivement
S/Key et OPIE, et pour modifier les mots de passe, les compteurs
d'itérations, ou les germes; ils prennent pour
paramètres soit un mot de passe secret, soit un compteur
d'itérations, soit un germe, et un mot de passe non
réutilisable. Le programme keyinfo
ou
opieinfo
consulte le fichier d'identification
correspondant (/etc/skeykeys
ou
/etc/opiekeys
) et imprime la valeur du
compteur d'itérations et le germe de l'utilisateur qui l'a
invoqué.
Nous décrirons quatre sortes d'opérations. La
première est l'utilisation du programme
keyinit
ou opiepasswd
sur
une connexion sécurisée pour initialiser les mots
de passe non réutilisables pour la première
fois, ou pour modifier votre mot de passe ou votre germe.
La seconde opération est l'emploi des programmes
keyinit
ou opiepasswd
sur une connexion non sécurisée, en conjonction
avec key
ou opiekey
sur
une connexion sécurisée, pour faire la même
chose. La troisième est l'utilisation de
key
/opiekey
pour ouvrir
une session sur une connexion non sécurisée.
La quatrième est l'emploi de key
ou opiekey
pour générer
un certain nombre de clés qui peuvent être
notées ou imprimées et emportées avec vous
quand vous allez quelque part ou il n'y a aucune connexion
sécurisée.
Pour initialiser S/Key pour la première fois,
changer votre mot de passe, ou changer votre germe quand
vous êtes attaché sous votre compte par
l'intermédiaire d'une connexion sécurisée
(e.g., sur la console d'une machine ou via
ssh), utilisez la commande
keyinit
sans paramètres:
%
keyinit
Adding unfurl:
Reminder - Only use this method if you are directly connected.
If you are using telnet or rlogin exit with no password and use keyinit -s.
Enter secret password:
Again secret password:
ID unfurl s/key is 99 to17757
DEFY CLUB PRO NASH LACE SOFTPour OPIE, opiepasswd
est
utilisé à la place:
%
opiepasswd -c
[grimreaper] ~ $ opiepasswd -f -c
Adding unfurl:
Only use this method from the console; NEVER from remote. If you are using
telnet, xterm, or a dial-in, type ^C now or exit with no password.
Then run opiepasswd without the -c parameter.
Using MD5 to compute responses.
Enter new secret pass phrase:
Again new secret pass phrase:
ID unfurl OTP key is 499 to4268
MOS MALL GOAT ARM AVID COED
A l'invite Enter new secret pass phrase:
ou Enter secret password:
, vous devez entrer
un mot de passe ou une phrase. Rappelez-vous que ce n'est pas
le mot de passe que vous utiliserez pour ouvrir une session,
mais celui utilisé pour générer vos clés
non réutilisables. La ligne commençant par
“ID” liste les paramètres de votre instance:
votre nom d'utilisateur, la valeur de votre compteur
d'itérations et votre germe. Quand vous ouvrirez une
session, le système aura mémorisé ces
paramètres et vous les redonnera, vous n'avez donc
pas besoin de les retenir. La dernière ligne
donne le mot de passe non réutilisable correspondant
à ces paramètres et à votre mot de passe secret;
si vous devez vous reconnectez immédiatement, c'est ce
mot de passe que vous utiliseriez.
Pour initialiser ou changer votre mot de passe secret
par l'intermédiaire d'une connexion non
sécurisée, il faudra avoir déjà
une connexion sécurisée sur une machine
où vous pouvez exécuter key
ou
opiekey
; ce peut être
depuis une icone sur le bureau d'un Macintosh
ou depuis la ligne de commande d'une machine sûre.
Il vous faudra également donner une valeur au compteur
d'itération (100 est probablement une bonne valeur),
et indiquer un germe ou utiliser la valeur aléatoire
générée par le programme. Sur la connexion non
sécurisée (vers la machine que vous initialisez),
employez la commande keyinit -s
:
%
keyinit -s
Updating unfurl:
Old key: to17758
Reminder you need the 6 English words from the key command.
Enter sequence count from 1 to 9999: 100
Enter new key [default to17759]:
s/key 100 to 17759
s/key access password:
s/key access password:CURE MIKE BANE HIM RACY GORE
Pour OPIE, vous devez utiliser opiepasswd
:
%
opiepasswd
Updating unfurl:
You need the response from an OTP generator.
Old secret pass phrase:
otp-md5 498 to4268 ext
Response: GAME GAG WELT OUT DOWN CHAT
New secret pass phrase:
otp-md5 499 to4269
Response: LINE PAP MILK NELL BUOY TROY
ID mark OTP key is 499 gr4269
LINE PAP MILK NELL BUOY TROY
Pour accepter le germe par défaut (que le programme
keyinit
appelle key
,
ce qui prête à confusion), appuyez sur
Entrée. Ensuite avant d'entrer un mot de
passe d'accès, passez sur votre connexion
sécurisée et donnez lui les mêmes
paramètres:
%
key 100 to17759
Reminder - Do not use this program while logged in via telnet or rlogin.
Enter secret password: <secret password>
CURE MIKE BANE HIM RACY GOREOu pour OPIE:
%
opiekey 498 to4268
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase:
GAME GAG WELT OUT DOWN CHAT
Retournez maintenant sur votre connexion non sécurisée, et copiez le mot de passe non réutilisable généré par le programme adapté.
Une fois que vous avez initialisé S/Key ou OPIE, lorsque que vous ouvrez une session, une invite de ce type apparaîtra:
%
telnet example.com
Trying 10.0.0.1...
Connected to example.com
Escape character is '^]'.
FreeBSD/i386 (example.com) (ttypa)
login: <username>
s/key 97 fw13894
Password: Ou pour OPIE:
%
telnet example.com
Trying 10.0.0.1...
Connected to example.com
Escape character is '^]'.
FreeBSD/i386 (example.com) (ttypa)
login: <username>
otp-md5 498 gr4269 ext
Password: Les invites S/Key et OPIE disposent d'une fonction utile (qui n'est pas illustrée ici): si vous appuyez sur la touche Entrée lorsque l'on vous demande votre mot de passe, le programme active l'écho au terminal, de sorte que vous voyez ce que vous êtes en train de taper. Ceci est très utile si vous essayez de taper un mot de passe à la main, à partir d'un résultat imprimé par exemple.
A ce moment vous devez générer votre
mot de passe non réutilisable pour répondre à
cette invite de session. Cela doit être effectué
sur une machine de confiance sur laquelle vous pouvez
exécuter key
ou
opiekey
(il y a des versions de ces
programmes pour DOS, Windows et MacOS). Ces programmes
ont besoin du compteur d'itérations et du germe comme
paramètres. Vous pouvez les copier-coller de l'invite de
session de la machine sur laquelle vous voulez ouvrir une
session.
Sur le système sûr:
%
key 97 fw13894
Reminder - Do not use this program while logged in via telnet or rlogin.
Enter secret password:
WELD LIP ACTS ENDS ME HAAGPour OPIE:
%
opiekey 498 to4268
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase:
GAME GAG WELT OUT DOWN CHATMaintenant que vous disposez de votre mot de passe non réutilisable vous pouvez continuer et vous connecter:
<username>
s/key 97 fw13894
Password: <return to enable echo>
s/key 97 fw13894
Password [echo on]: WELD LIP ACTS ENDS ME HAAG
Last login: Tue Mar 21 11:56:41 from 10.0.0.2 ... Il faut parfois se rendre en des endroits où
vous n'avez pas accès à une machine de confiance
ou à une connexion sécurisée. Dans ce cas, vous
pouvez utiliser la commande key
ou
opiekey
pour générer plusieurs
mots de passe non réutilisables que vous pouvez imprimer
et transporter avec vous. Par exemple:
%
key -n 5 30 zz99999
Reminder - Do not use this program while logged in via telnet or rlogin.
Enter secret password: <secret password>
26: SODA RUDE LEA LIND BUDD SILT
27: JILT SPY DUTY GLOW COWL ROT
28: THEM OW COLA RUNT BONG SCOT
29: COT MASH BARR BRIM NAN FLAG
30: CAN KNEE CAST NAME FOLK BILKOu pour OPIE:
%
opiekey -n 5 30 zz99999
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase: <secret password>
26: JOAN BORE FOSS DES NAY QUIT
27: LATE BIAS SLAY FOLK MUCH TRIG
28: SALT TIN ANTI LOON NEAL USE
29: RIO ODIN GO BYE FURY TIC
30: GREW JIVE SAN GIRD BOIL PHIL'option -n 5
demande cinq clés en
séquence, l'option 30
indique quel doit
être le rang de la dernière itération. Notez que
les clés sont imprimées dans l'ordre
inverse de celui où elles seront
éventuellement utilisées. Si vous êtes
vraiment paranoïaque, vous pouvez les recopier à la main,
sinon vous pouvez les copier-coller vers la commande
lpr
. Remarquez que chaque ligne liste le
compteur d'itération et le mot de passe non
réutilisable; vous trouverez peut-être utile de rayer les
mots de passe au fur et à mesure de leur utilisation.
S/Key peut placer des restrictions sur l'utilisation des
mots de passe UNIX® en fonction des noms de machine,
d'utilisateur, de la ligne utilisée par le terminal ou de
l'adresse IP de la machine connectée à distance.
Ces restrictions peuvent être trouvées dans le
fichier de configuration
/etc/skey.access
. La page de manuel
skey.access(5) donne de plus amples informations sur le
format de ce fichier et elle détaille également
certains avertissements relatifs à la sécurité
qu'il faut lire avant de se fier à ce fichier pour sa
sécurité.
S'il n'y a pas de fichier
/etc/skey.access
(ce qui est le cas par
défaut sur les systèmes FreeBSD 4.X), tous les
utilisateurs pourront se servir de mots de passe UNIX®. Si le
fichier existe, alors tous les utilisateurs devront passer par
S/Key, à moins qu'ils ne soient explicitement
autorisés à ne pas le faire par des instructions du
fichier /etc/skey.access
. Dans tous les
cas l'usage des mots de passe UNIX® est autorisé sur
la console.
Voici un exemple de configuration du fichier
skey.access
qui illustre les trois types
d'instructions les plus courantes:
La première ligne (permit internet
)
autorise les utilisateurs dont l'adresse IP (ce qui rend
vulnérable en cas d'usurpation) appartient au
sous-réseau spécifié à employer les mots
de passe UNIX®. Cela ne doit pas être
considéré comme une mesure de sécurité,
mais plutôt comme un moyen de rappeler aux utilisateurs
autorisés qu'ils sont sur un réseau non
sécurisé et doivent utiliser S/Key pour
s'authentifier.
La seconde ligne (permit user
)
autorise l'utilisateur désigné, dans notre cas
fnord
, à employer n'importe quand
les mots de passe UNIX®. En général,
il faut se servir de cette possibilité si les personnes
soit n'ont pas moyen d'utiliser le programme
key
, s'ils ont par exemple des terminaux
passifs, soit s'ils sont définitivement réfractaires au
système.
La troisième ligne (permit port
)
autorise tous les utilisateurs d'un terminal sur une liaison
particulière à utiliser les mots de passe UNIX®;
cela devrait être employé pour les connexions
téléphoniques.
OPIE peut restreindre l'usage des mots de passe UNIX®
sur la base de l'adresse IP lors de l'ouverture d'une session
comme peut le faire S/Key. Le fichier impliqué est
/etc/opieaccess
, qui est présent par
défaut sous FreeBSD 5.0 et versions suivantes.
Veuillez consulter la page de manuel opieaccess(5) pour
plus d'information sur ce fichier et certaines
considérations sur la sécurité dont vous
devez être au courant en l'utilisant.
Voici un exemple de fichier
opieaccess
:
Cette ligne autorise les utilisateurs dont l'adresse IP (ce qui rend vulnérable en cas d'usurpation) appartient au sous-réseau spécifié à employer les mots de passe UNIX® à tout moment.
Si aucune règle du fichier opieaccess
ne correspond, le comportement par défaut est de
refuser toute ouverture de session non-OPIE.
Ce document, ainsi que d'autres peut être téléchargé sur ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Pour toutes questions à propos de FreeBSD, lisez la
documentation avant de contacter
<questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez
<doc@FreeBSD.org>.