background image

Rozwiązania

Mechanizm haseł jednorazowych

62

styczeń 2010

Rozwiązania

Mechanizm haseł jednorazowych

63

www.lpmagazine.org

   

lin

ux

@

so

ftw

ar

e.

co

m

.p

l

Mechanizm 

haseł jednorazowych

Od wielu lat hasła są najpopularniejszą metodą uwierzytelniania użytkownika w systemach komputerowych. 
Metoda ta, z punktu widzenia bezpieczeństwa nie jest pozbawiona wad. Najczęściej najsłabszym ogniwem 
jest tutaj czynnik ludzki. Pozyskanie lub odgadnięcie hasła przez nieuprawnioną osobę pozwala niepowołanej 
osobie na dostęp do zasobów. Aby zapobiec takim sytuacjom i znacząco zwiększyć bezpieczeństwo, 
opracowano mechanizmy haseł jednorazowych. Jak sama nazwa wskazuje, hasło jednorazowe może być 
wykorzystanie w procesie uwierzytelniania tylko jeden raz, po czym traci ważność. W artykule przedstawię 
jak działają takie mechanizmy od środka oraz jak zaimplementować je w systemie GNU/Linux.

Bartłomiej Bergier

P

omimo  ciągłego  postępu,  klasyczne  hasła 
(wielokrotnego  wykorzystania)  posiadają 
wiele wad. Często zdarza się, że przechowy-
wane w bazie danych hasła nie są szyfrowa-

ne, skąd mogą być z łatwością odczytane. Sprawę dodat-
kowo ułatwia czynnik ludzki, a więc skłonność ludzi do 
posiadania słabych haseł (słownikowych) jak np. imiona 
osób najbliższych. 

Inna  metodą  pozyskania  haseł  jest  podsłuchiwanie 

sieci w momencie logowania się użytkownika do syste-
mu.  Protokoły  takie  jak  FTP,  HTTP  czy  telnet  przesy-
łają hasła w czystej postaci. Obecnie praktycznie wszę-
dzie, gdzie dba się o bezpieczeństwo wykorzystuje się 
silne mechanizmy szyfrowania (protokoły TLS i SSL dla 
usług webowych) oraz SSH (ang. Secure Shell) jako za-
miennik  usługi  telnet. To  uniemożliwia  przechwycenie 
haseł poprzez podsłuch. Jednak i te mechanizmy moż-
na obejść, wykorzystując np. bezpośrednie podsłuchiwa-
nie klawiatury poprzez złośliwie umieszczone w syste-
mie keyloggery, czy też bardziej przyziemne podgląda-
nie haseł przez ramię podczas wpisywania. Duże znacze-
nie ma tutaj czynnik ludzki. Inną często spotykaną prak-

tyką, szczególnie, gdy ktoś posiada wiele haseł do wielu 
usług jest po prostu ich zapisywanie na kartkach gdzieś 
w pobliżu miejsca pracy.

W  systemie  Linux  standardowo  hasła  kont  użyt-

kowników przechowywane są w pliku /etc/shadow. Są 
one zaszyfrowane, a sam plik ma prawa roota. Jednak, 
gdy wpadnie w niepowołane ręce można na nim spró-
bować wcześniej wspomnianych metod słownikowych 
czy bruteforce (np. za pomocą narzędzia John The Rip-
per).

Zasada działania 

mechanizmu haseł jednorazowych

Uwierzytelnianie za pomocą haseł jednorazowych opie-
ra się na autentykacji dwuczynnikowej (ang. two-factor 
authentication
). Polega to na tym, iż do poprawnej au-
tentykacji wymagane są dwa elementy: 

•   to co użytkownik wie (jego sekretne hasło)
•   to co użytkownik ma (może to być lista haseł jedno-

razowych na papierze, specjalne urządzenie lub pro-
gram zwane kalkulatorem)

background image

Rozwiązania

Mechanizm haseł jednorazowych

62

styczeń 2010

Rozwiązania

Mechanizm haseł jednorazowych

63

www.lpmagazine.org

Na początku użytkownik musi ustalić sekret-
ne hasło, które pamięta. Hasło to zna również 
serwer. W procesie autentykacji użytkownik 
otrzymuje od serwera wyzwanie (ang. chal-
lenge
).  Jest  to  określony  rodzaj  ciągu  zna-
ków.  Wprowadza  go  wraz  ze  swoim  zapa-
miętanym  sekretnym  hasłem  do  kalkulato-
ra  (urządzenia  sprzętowego  lub  programu). 
Kalkulator,  stosując  znane  sobie  algorytmy, 
oblicza  odpowiedź,  którą  użytkownik  prze-
syła  do  serwera.  Serwer  zna  sekretne  hasło 
użytkownika, więc oblicza spodziewaną od-
powiedź  i  porównuje  z  tą,  którą  wprowa-
dził  użytkownik.  Każdorazowo  użytkownik 
otrzymuje  inne  wyzwanie.  Dzięki  podejściu 
dwuczynnikowej autentykacji wejście w po-
siadanie jednego z elementów na nic się nie 
zda atakującemu.

Rodzaje systemów 

haseł jednorazowych

Przedstawiony  powyżej  system  haseł  opie-
ra się o mechanizm wyzwania i odpowiedzi 
(ang. challenge-response). Systemy tego ty-
pu  zwane  są  również  asynchronicznymi. 
W  tego  typu  systemach  odpowiedź  na  we-
zwanie generowana jest przy pomocy kalku-
latora. Kalkulatorem może być albo dedyko-
wane  urządzenie  (sprzętowy  token),  który 
użytkownik zawsze przy sobie nosi lub też 
odpowiednie  oprogramowanie,  instalowane 
na komputerze użytkownika, w jego telefo-
nie komórkowym czy na pendrive'ie. Inny-
mi metodami generowania odpowiedzi, sto-
sowanymi szczególnie w bankach do prze-
prowadzania  operacji  są  pregenerowane  li-
sty  haseł  jednorazowych  jak  również  hasła 
dostarczane za pośrednictwem SMSów. Po-
lega to na tym, iż początkowo, po ustaleniu 
sekretnego hasła, na jego podstawie specjal-
ny  program  generuje  określoną  ilość  haseł 
jednorazowych.  Lista  ta  zostaje  wydruko-
wana i użytkownik cały czas nosi ją przy so-
bie. Z każdą nową operacją czy też logowa-
niem  do  systemu  jako  wyzwanie  użytkow-
nik otrzymuje numer hasła z listy haseł jed-
norazowych i wprowadza go wraz ze swoim 
sekretnym hasłem. Tak się dzieje aż do wy-
czerpania zbioru haseł. Wtedy należy wyge-
nerować nową listę haseł.

Innym rodzajem systemów haseł jedno-

razowych są systemy oparte na synchroniza-
cji czasu serwera i użytkownika (ang. clock-
based
), zwane synchronicznymi. W tego ty-
pu  rozwiązaniach  serwer  OTP  synchronizu-
je token sprzętowy i zdalną maszynę, do któ-
rej użytkownik chce się zalogować. Nowe ha-
sło generowane jest przez token przeważnie 
co 30-60 sekund. Sekretne hasło użytkowni-

ka jest tutaj wykorzystywane albo do aktywa-
cji tokenu, albo do permutowania hasła gene-
rowanego przez token. Wadą systemów syn-
chronicznych jest szybkie wyczerpywanie się 
baterii sprzętowych tokenów, gdyż cały czas 
muszą pozostać włączone jak również ryzy-
ko  rozsynchronizowania  się  na  skutek  róż-
nych czynników zewnętrznych (np. pogody) 
tokenu  i  serwera.  Można  to  korygować  po-
przez zwiększenie okna ważności hasła, jed-
nak kosztem bezpieczeństwa.

Podatność na ataki

Niestety  nie  ma  rzeczy  doskonałych.  Ha-
sła  jednorazowe  również  podatne  są  na  kil-
ka  rodzajów  ataków.  Jednym  z  nich  jest  po 
prostu atak polegający na kradzieży listy ha-
seł lub tokenów sprzętowych. By temu zapo-
biec  stosuje  się,  jak  już  napisano  wcześniej 
dodatkowy sekret (hasło), które stanowi dru-
gi element konieczny do poprawnej autenty-
kacji. Nie zapominajmy jednak, że gdy ata-
kujący wejdzie w posiadanie listy haseł, mo-
że próbować zdobyć sekretne hasło użytkow-
nika, używając wcześniej opisanych technik 
na zwykłe hasła.

Innym  atakiem,  na  jaki  podatne  są  sys-

temy OTP jest atak Man-in-The-Middle. Jest 
to atak polegający na podsłuchu i modyfika-
cji wiadomości przesyłanych przez dwie stro-
ny, bez ich wiedzy, przez osobę trzecią (ata-
kującego).  Atakujący  przekierowuje  ruch 
przez swój komputer, co jest możliwe dzię-
ki słabości protokołów DNS czy ARP. Moż-
na się przed tym bronić łącząc jednorazowe 
hasła  z  technologiami  bezpiecznej  warstwy 
gniazdowej  (szyfrowanie  dzięki  protokołom 
SSL/TLS),  mechanizmu  klucza  publicznego 
czy bezpiecznej powłoki (SSH).

Jeszcze  innym  atakiem,  wymyślonym 

specjalnie w celu przechwytywania haseł jest 
atak na ostatni znak (ang. LCA – Last Cha-
racter Attack
).  Polega  on  na  tym,  że  ataku-
jący podsłuchuje klawiaturę użytkownika do 
momentu aż ten wpisze wszystkie znaki ha-
sła oprócz ostatniego. W tym momencie stara 
się wykonać atak DoS na stację użytkownika, 
uniemożliwiając mu ukończenie wprowadza-
nia hasła. Próbuje wtedy nawiązać wiele jed-
noczesnych połączeń i w każdej sesji wpro-
wadza znaną mu część hasła zakończoną in-
nym znakiem. Przedstawiona później imple-

Rysunek 1. 

Generowanie haseł algorytmem S/KEY

������������������������������

����������������

���������

����������������

���������

����������������

���������

���������������������������

����

���������������������������

�������

���������������������������

���

�������������������������

���������

Listing 1. 

Fragment wygenerowanej listy haseł jednorazowych

000 g6Jk bpJk  056 eO%D ZmhZ  112 dG6F PRO3  168 7KE6 x53Q  224 bk5+ 22xk 
001 FC%8 MhZq  057 u3SR 84Vf  113 w%wy e9cA  169 rROf LD6c  225 v5Zg uMaQ 
002 UeWE mDk%  058 noB7 mKCM  114 Cmxv vLE+  170 t%mY TLkr  226 %Cz9 74er 
003 wMsi rd:b  059 4Gi/ Vk:b  

115

 =s+v xquF  171 OuCJ EBjy  227 J9o7 UdMG 

004 in3% mmGw  060 JZR3 96Pn  116 

3H

=L 

D

=%r  172 Xr3s cbn+  228 Gv5q Ofzv 

005 

SyV

= eWgp  061 DkdH fDzI  117 8Vd7 tBPz  173 59U5 kBBI  229 %HW4 R2uJ 

background image

64

styczeń 2010

Rozwiązania

Mechanizm haseł jednorazowych

65

www.lpmagazine.org

Rozwiązania

Mechanizm haseł jednorazowych

mentacja OTPW chroni się przed tym tak, iż 
w przypadku wykrycia równoczesnych sesji 
prosi o wprowadzenie nie jednego lecz zlep-
ku trzech różnych haseł jednorazowych.

Implementacje

Jedną z pierwszych implementacji haseł jed-
norazowych dla systemów typu Unix był sys-
tem autentykacji S/KEY opracowany pod ko-
niec lat 80-tych przez firmę Bellcore. Korzy-
sta  on  z  algorytmu  Leslie  Lamporta. Algo-
rytm  ten  bazuje  na  pseudolosowym  ziarnie 
i wielokrotnym wywoływaniu kryptograficz-
nej funkcji skrótu. Na początku sekretne ziar-
no  jest  dostarczane  przez  użytkownika  lub 
generowane przez komputer. Na ziarnie wy-
konywana  jest  określoną  ilość  razy  funkcja 
skrótu,  tworząc  pewną  ilość  haseł  jednora-
zowych. Ziarno jest odrzucane, a użytkownik 
otrzymuje listę haseł, wydrukowanych w od-
wrotnym kierunku niż były generowane. Na 
serwerze jest przechowywane tylko pierwsze 
hasło z listy haseł użytkownika. Użytkownik, 

mając  ziarno  i  odpowiednie  oprogramowa-
nie, jest natomiast w stanie obliczyć hasło o 
żądanym numerze (lub podać z listy już obli-
czone). Serwer nie prosi o podanie tego hasła, 
które pamięta, lecz o poprzednie. Użytkow-
nik przesyła je, a serwer na podanych danych 
wykonuje raz jeszcze funkcję skrótu, porów-
nując wynik z zapamiętanym sekretem. Jeśli 
rezultaty są zgodne, serwer pozwala się zalo-
gować i zapamiętane rozwinięcie zostaje za-
stąpione przez wartość ostatnio podaną przez 
użytkownika.  Funkcją  skrótu  w  przypad-
ku  S/KEY  jest  MD4.  Wewnętrznie  S/KEY 
używa liczb 64-bitowych, jednak dla wygo-
dy użytkownika każda liczba jest mapowana 
na sześć angielskich słów (każde o długości 
od 1 do 4 liter). Bezpieczeństwo systemu ba-
zuje na nieodwracalności funkcji haszującej. 
Jednak jest ona podatna na opisywane ataki 
man-in-the middle oraz wszelkie ataki oparte 
na sytuacji wyścigu (ang. race condition) ta-
kie jak LCA. Jeśli zostanie poznane sekretne 
ziarno, cały system zostaje skompromitowa-

ny. Wadą algorytmu jest również to, że znając 
dowolne hasło z listy, możemy wygenerować 
na jego podstawie wszystkie poprzednie ha-
sła. System S/KEY dokładnie opisany jest w 
dokumencie RFC 1760. Mechanizm genero-
wania haseł dla algorytmu S/KEY przedsta-
wia Rysunek 1.

Kontynuacją  rozwiązań  zastosowanych 

w S/KEY jest implementacja o nazwie OPIE 
(One Time Password In Everything). Bazuje 
ona na funkcji haszującej MD5. Dla systemu 
Linux dostępna jest w formie modułów PAM. 
Niestety, jako że również opiera się o algo-
rytm Leslie Lamporta, posiada wszystkie wa-
dy  swojego  poprzednika.  System  bazuje  na 
założeniach  przedstawionych  w  dokumen-
cie  RFC  2289.  Strona  projektu  jest  niestety 
martwa, należy liczyć więc jedynie na pacz-
ki dla konkretnych dystrybucji. Jako, że du-
żo lepszą alternatywą z punktu widzenia wy-
gody użytkowania i bezpieczeństwa jest im-
plementacja  OTPW,  w  artykule  nie  będzie-
my  zajmować  się  integracją  systemu  OPIE 
z usługami systemu GNU/Linux.

OTPW

Projekt OTPW, w przeciwieństwie do OPIE 
nie bazuje na algorytmach określonych w do-
kumencie RFC 2289. Jest o wiele prostszym 
systemem, a przy tym bardziej bezpiecznym. 
Autorem projektu jest Markus  Kuhn  z Uni-
wersytetu Cambrigde.

Zasada działania

OTPW  bazuje  na  generowanej  liście  ha-
seł  jednorazowych.  Pierwszym  etapem  jest 
utworzenie listy haseł jednorazowych za po-
mocą komendy otpw-gen. Program zapyta o 
hasło, które będzie podstawą wygenerowania 
listy haseł jednorazowych. Fragment listy ha-
seł jednorazowych przedstawia Listing 1.

Domyślnie  hasła  jednorazowe  przed-

stawiane  są  w  postaci  ciągów  wygenero-
wanych funkcją base64. Spacje są widoczne 
tylko dla czytelności i nie należy ich wpro-
wadzać w procesie logowania. Dla wygody 
użytkownika  znaki,  które  można  łatwo  po-
mylić ze sobą są zastępowane innymi (0,1,l 
przez :,=,%). 

Przełącznik 

-p1

 programu otpw-gen po-

zwala  na  wygenerowanie  mniej  bezpiecz-
nych,  ale  bardziej  czytelnych  haseł  jedno-
razowych,  gdzie  każde  jest  sekwencją  pię-
ciu  angielskich  słów  czteroliterowych.  Ha-
sła takie szybciej się wpisuje, jednak są bar-
dziej podatne na podglądanie, gdyż o wiele 
łatwiej podejrzeć ciąg słów niż przypadko-
we znaki. Każde hasło jednorazowe posiada 
unikalny numer porządkowy na liście. Pro-

Rysunek 2. 

Generowanie listy haseł jednorazowych z parametrem -p1

background image

64

styczeń 2010

Rozwiązania

Mechanizm haseł jednorazowych

65

www.lpmagazine.org

Rozwiązania

Mechanizm haseł jednorazowych

ces generowania listy widoczny jest na Ry-
sunku 2.

Oto fragment listy haseł wygenerowanej 

z parametrem -p1:

Możemy  formatować  listę  haseł  za  po-

mocą  przełączników 

-h

  oraz 

-w

.  Przełącz-

nik 

-h

 określa ilość linii (wraz z nagłówkiem, 

który zajmuje 4 linie). Przełącznik 

-w

 nato-

miast określa liczbę znaków w poziomie.

Innymi przełącznikami są -s, pozwalają-

cy na określenie liczby stron wysyłanych na 
wyjście oraz 

-e

, określający entropię. Czym 

jego wartość większa, tym większa możliwa 
liczba kombinacji haseł – dokładnie możliwa 
liczba haseł to 2 do potęgi określonej przez 
ten parametr.

Lista haseł jest zapisywana w pliku .otpw 

znajdującym się w katalogu domowym użyt-
kownika.  Skasowanie  tego  pliku  powodu-
je  wyłączenie  korzystania  z  OTPW  dla  da-
nego użytkownika. W momencie logowania 
użytkownik po podaniu loginu zamiast stan-
dardowego monitu o hasło otrzymuje monit 
o wprowadzenie hasła jednorazowego o da-
nym numerze z listy haseł. Prezentuje to Ry-
sunek  4.  Teraz  musi  wprowadzić  swoje  se-
kretne  hasło  sklejone  z  hasłem  z  listy  haseł 
o podanym numerze. 

OTPW od środka

Hasła  znajdujące  się  w  pliku  .otpw  są  ge-
nerowane przy pomocy funkcji mieszającej 
RIPEND160, dającej 160 bitowy skrót. Ge-
nerator haseł jest inicjowany poprzez haszo-
wanie wyniku działania kilku komend shel-
lowych.  Pierwsze  72  bity  skrótu  są  prze-
puszczane  przez  zmodyfikowany  algorytm 
base64, pozostałe 88 stanowią wewnętrzny 
stan  losowego  generatora.  Modyfikacja  al-
gorytmu base64 polega na zastąpieniu zna-
ków,  które  się  mylą,  innymi.  Przykładowy 
plik .otpw prezentuje poniższy Listing.

Pierwsza linia określa format pliku. Dru-

ga zawiera po kolei:

•   liczbę wygenerowanych haseł
•   liczbę  cyfr  składających  się  na  numer 

hasła (3)

•   liczbę znaków na zakodowany hash ba-

se64 (12)

•   liczbę znaków hasła jednorazowego (8)

Każda  kolejna  linia  zawiera  3  cyfrowy  nu-
mer hasła, po którym następuje hasz wygene-
rowany  z  połączenia  sekretnego  hasła  użyt-
kownika i hasła jednorazowego. Po wykorzy-
staniu danego hasła jest ono zastępowane cią-
giem myślników by nie można go było użyć 
powtórnie.

Bezpieczeństwo

System  OTPW  minimalizuje  w  znacznym 
stopniu ryzyko ataku na ostatni znak (LCA). 
W  momencie,  gdy  zostanie  wykryta  więcej 
niż jedna sesja dla danego użytkownika, wy-
zwanie składa się nie z jednego, ale z trzech 
numerów  haseł  jednorazowych.  Przypadek 
taki przestawiony jest na Rysunku 5. Wyglą-
da to w ten sposób:

berdzi@debian:~$ ssh localhost 
Password 180/258/048: 

Wtedy  użytkownik  musi  wprowadzić  swo-
je  sekretne  hasło,  połączone  z  trzema  skle-
jonymi ze sobą hasłami z listy haseł. To po-
woduje, że wykonanie ataku LCA wymaga-
łoby  nawiązania  wielu  tysięcy  połączeń,  co 
czyni go bardzo trudnym, a w praktyce nie-
wykonalnym.

Jeśli z jakichś względów logowanie zo-

stanie  przerwane  (np.  w  wyniku  załamania 
się  systemu),  w  katalogu  domowym  użyt-
kownika  tworzony  jest  link  symboliczny 
o  nazwie  .otpw.lock  wskazujący  na  numer 
hasła  jednorazowego,  o  które  pytał  system 
w  momencie,  gdy  logowanie  zostało  prze-
rwane. Wygląda on tak:

$ ls -al
lrwxrwxrwx  1 berdzi berdzi     3 
paź  8 16:06 .otpw.lock -> 081

OTPW  korzysta  z  dwuczynnikowego  uwie-
rzytelniania – do poprawnej autentykacji wy-
magane jest jedno z haseł z listy, poprzedzo-
ne  sekretnym  hasłem  użytkownika  (prefik-
sem). To zapewnia, że  kradzież samej listy 
haseł  jednorazowych  lub  tylko  podsłucha-
nie  sekretnego  hasła  nie  pozwoli  na  dostęp 
do systemu.

System  OTPW  ,  inaczej  niż  opisywana 

implementacja S/KEY, nie bazuje na algoryt-

mie Lamporta, w którym każde hasło jednora-
zowe jest haszem powstałym poprzez haszo-
wanie hasła następnego. Tak więc, podejrzenie 
ostatniego hasła na liście, nie umożliwia ata-
kującemu odtworzenia poprzednich haseł. 

Jeśli  chodzi  o  podglądanie  haseł  to 

OTPW wykazuje się tutaj większą odporno-
ścią,  stosując  zmodyfikowany  algorytm  ba-
se64. To znacznie utrudnia szybkie podejrze-
nie i zapamiętanie hasła.

Instalacja

Źródła  możemy  pobrać  ze  strony  projektu 
http://www.cl.cam.ac.uk/~mgk25/download/
otpw-1.3.tar.gz
.  Kompilacja  sprowadza  się 
do  rozpakowania  i  zbudowania  za  pomocą 
komendy 

make

:

$ wget http://www.cl.cam.ac.uk/
~mgk25/download/otpw-1.3.tar.gz
$ tar zxvf otpw-1.3.tar.gz
$ cd otpw
$ make

W  naszym  przypadku  skorzystamy  jed-
nak  z  gotowych  pakietów  dystrybucji  De-
bian.  Pobieramy  i  instalujemy  odpowied-
nie paczki:

•   $ wget http://ftp.pl.debian.org/debian/pool/

main/o/otpw/otpw-bin_1.3-2_i386.deb

•   $ su -c 'dpkg -i otpw-bin_1.3-2_i386.deb'
•   $ wget http://ftp.pl.debian.org/debian/pool/

main/o/otpw/libotpw-dev_1.3-2_i386.deb

•   $ su -c 'dpkg -i 'libotpw-dev_1.3-2_i386.deb'

Całość  składa  się  w  zasadzie  z  dwóch  ele-
mentów:

•   otpw-gen – polecenie służące do genero-

wanie list haseł jednorazowych

•   pam_otpw  –  moduł  PAM,  pozwalają-

cy wykorzystywać OTPW w połączeniu 

Rysunek 3. 

Logowanie z użyciem systemu OTPW

background image

66

styczeń 2010

Rozwiązania

Mechanizm haseł jednorazowych

67

www.lpmagazine.org

Rozwiązania

Mechanizm haseł jednorazowych

z  usługami,  które  korzystają  z  systemu 
modułów PAM

W pakiecie znajduje się również przykłado-
wy  program  demologin  –  przerobiona  ko-
menda login, korzystająca z mechanizmu ha-
seł jednorazowych.

Integracja z usługami

Istnieją  dwie  metody  zintegrowania  OTPW 
z systemem logowania:

•   przerabianie  źródeł  narzędzi,  z  który-

mi  chcemy  zintegrować  system  haseł 
jednorazowych,  takich  jak  login,  su, 
sshd, ftp

•   integracja  z  systemem  poprzez  system 

modułów PAM (ang. Plugabble Authen-
tication Modules
)

Pierwsza  z  metod  jest  pracochłonna,  ma-
ło  elastyczna  i  niebezpieczna.  Konieczne 
by  było  przerabianie  wszystkich  plików 

źródłowych  oraz  rekompilacja  każdorazo-
wo po pojawieniu się nowych wersji. Dużo 
wygodniejszym sposobem jest wykorzysta-
nie modułów PAM. System modułów PAM 
(ang.  Pluggable  Authentication  Modules
to  zbiór  bibliotek,  które  określają  w  jaki 
sposób przebiega autentykacja użytkowni-
ka dla konkretnych usług w systemie. Dzię-
ki  nim  można  elastycznie  przełączać  się 
między  sposobami  autentykacji  bez  ko-
nieczności zmiany samych usług. 

Jest to najprostsza metoda integracji sys-

temu haseł jednorazowych z usługami w sys-
temie.

Dzisiaj  praktycznie  każda  dystrybu-

cja  korzysta  domyślnie  z  tego  mechanizmu 
(wyjątkiem  jest  np.  Slackware,  aczkolwiek 
w  nim  również  można  doinstalować  odpo-
wiednie pakiety).

Wykorzystywanie  haseł  jednorazowych 

najczęściej  ma  sens  w  przypadku,  gdy  lo-
gujemy  się  zdalnie  na  maszynę  z  innej  nie-
zaufanej  maszyny.  Dlatego  też  pokażę  jak 

zintegrować  OTPW  z  usługą  SSH.  W  tym 
celu musimy odpowiednio zmienić plik /etc/
pam.d/sshd
. W sekcji auth znajduje się wpis 
odpowiedzialny  za  standardową  autentyka-
cję w systemie:

 # Standard Un*x authentication. 
@include common-auth 

Mamy dwie możliwości. Możemy albo prze-
łączyć  się  na  korzystanie  tylko  z  haseł  jed-
norazowych,  albo  skonfigurować  system 
tak, aby najpierw pytał o hasło jednorazowe, 
a gdy nie będziemy chcieli go użyć, wciska-
my  [Enter]  i  logujemy  się  w  standardowy 
sposób. Sytuację tę przedstawia Rysunek 6.

W  pierwszym  przypadku  musimy  wy-

edytować plik w następujący sposób:

# Standard Un*x authentication. 
#@include common-auth 
auth            required        pam_
otpw.so 

W  drugim  przypadku  natomiast  wygląda  to 
tak:

auth            sufficient        
pam_otpw.so 
# Standard Un*x authentication. 
@include common-auth 

Wpisy 

auth

  oraz 

session

  oznaczają  okre-

ślona sekcję. Sekcja 

auth

 jest odpowiedzial-

na za autentykację, gdzie PAM sprawdza, czy 
użytkownik jest tym za kogo się podaje przy 
pomocy monitu o hasło lub w tym przypad-
ku monitu o hasło jednorazowe. Sekcja 

ses-

sion

  jest  odpowiedzialna  za  wykonanie  in-

nych czynności przed lub po otrzymaniu do-
stępu do usługi. 

Wpisy 

required

sufficient

  oraz 

optional

 oznaczają sekcję kontroli. Wpis 

Rysunek 4. 

Zabezpieczenie w przypadku wykrycia kilku sesji

Rysunek 5. 

Dwa sposoby logowania się

Listing 2. 

Zawartość pliku .otpw

OTPW1 
280 3 12 8 

081ITXZ

=FYcY+eJ 

004ZQfAF3dabMOn 
208zn7tTBOso+rM 
246W9rzFh9CQ7IX 
2773gCIk+yrAyhc 
179QPTwum+u3phA 
2752Korm/Pq=eYG 
213vsiQPezLqZMk 

045Ypgyo2

=A2y6F 

010zo4JkhF9BRkP 
076DCignhz/W%qo 

background image

66

styczeń 2010

Rozwiązania

Mechanizm haseł jednorazowych

67

www.lpmagazine.org

Rozwiązania

Mechanizm haseł jednorazowych

required

  oznacza,  że  jeśli  autentykacja 

nie powiedzie się, PAM zwróci błąd i użyt-
kownik nie zaloguje się do systemu. Wpis 

sufficient

  oznacza,  że  jeśli  autentyka-

cja nie powiedzie się, to system przejdzie 
do  kolejnego  sposobu  autentykacji.  Wpis 

optional

  oznacza,  że  sukces  czy  poraż-

ka dla danego modułu PAM ma znaczenie 
tylko wtedy, gdy jest to jedyna metoda au-
tentykacji.

Ważna jest tutaj kolejność wpisów, naj-

pierw musi widnieć wpis odpowiedzialny za 
autentykację hasłem jednorazowym, a dopie-
ro po nim ten odpowiedzialny za standardo-

wą. W sekcji 

session

, niezależnie od wybra-

nej metody dopisujemy:

session         optional       pam_
otpw.so

Przykładowy  plik  konfiguracyjny  PAM 
dla  usługi  ssh  przedstawiony  jest  na  Ry-
sunku 7.

Oprócz tego konieczne jest jeszcze wy-

edytowanie  pliku  konfiguracyjnego  demo-
na  sshd,  /etc/ssh/sshd_config.  Włączamy 
opcję  autentykacji  poprzez  wyzwanie-od-
powiedź
:

ChallengeResponseAuthentication yes

Teraz musimy zrestartować demona sshd:

# /etc/init.d/ssh restart 
Restarting OpenBSD Secure Shell 
server: sshd. 

Spróbujmy się zalogować do systemu:

berdzi@debian:~$ ssh localhost 
Password 193: 
Linux debian 2.6.26-2-686 #1 SMP Wed 
Aug 19 06:06:52 UTC 2009 i686 

Udało się.

Podsumowanie

Wykorzystanie  mechanizmu  haseł  jednora-
zowych, choć z początku może wydawać się 
nieco uciążliwe z punktu widzenia użytkow-
nika, ma sens wszędzie tam, gdzie nie mamy 
pełnego zaufania co do miejsca, z którego łą-
czymy  się  z  naszą  siecią.  Integracja  z  usłu-
gami w systemie nie jest zbyt skomplikowa-
na, więc warto poświęcić parę minut, by spać 
spokojniej. 

Rysunek 6. 

Plik konfiguracyjny /etc/pam.d/sshd dla usługi ssh

Linuxem interesuje się od kilku lat, głów-
nie pod kątem zastosowań serwerowych. 
Hobbystycznie  administrowałem  sieciami 
osiedlowymi. Czasami tworzę różne mniej 
lub  bardziej  przydatne  programy,  pozna-
jąc dzięki temu nowe techniki i języki pro-
gramowania. Dla relaksu śmigam na mo-
im blaszanym rumaku lub eksploruję tere-
ny górskie i nie tylko. Zawodowo zajmu-
ję  się  tworzeniem  aplikacji  i  portali  inter-
netowych.
Kontakt z autorem: e-mail: bbergier@o2.pl

O autorze

•   http://www.cl.cam.ac.uk/~mgk25/otpw.html – projekt OTPW
•   http://www.freebsd.org/doc/en/books/handbook/one-time-passwords.html 

– informacje na temat systemu OPIE

•   http://www.heise-online.pl/security/Ale-to-juz-bylo-i-nie-wroci-wiecej--/features/14/0 

– artykuł na temat haseł jednorazowych

•   http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/sag-introduction.html 

– podręcznik administracji modułami PAM

•   http://en.wikipedia.org/wiki/S/KEY – informacje na temat systemu S/KEY
•   http://tools.ietf.org/html/rfc2289 – dokument RFC opisujący założenia systemu haseł 

jednorazowych 

•   http://tools.ietf.org/html/rfc1760 – dokument RFC opisujący system haseł 

jednorazowych S/KEY

W Sieci