O bezpieczeństwie bankowości elektronicznej – autoryzacja transakcji

Kontynuując temat bezpieczeństwa bankowości elektronicznej, tym razem trochę o autoryzacji transakcji...

Czym jest autoryzacja transakcji

Czym jest autoryzacja transakcji? W oddziale gdy składa się dyspozycje, należy ją jakoś potwierdzić, może to być na przykład złożenie podpisu na wydrukowanym świstku papieru. Z jednej strony jest to zabezpieczenie dla banku, potwierdzenie, że klient rzeczywiście złożył dyspozycję wykonania określonej transakcji, z drugiej – zabezpieczenie klienta. W przypadku, gdy pojawi się podejrzana operacja na jego koncie, zawsze może pójść do banku i zażądać weryfikacji na jakiej podstawie taka operacja została wykonana. Warto zwrócić uwagę, że takie potwierdzenie jest wymagane nawet w sytuacji, gdy klient stoi twarzą w twarz z kasjerką. Analogicznie jest w przypadku autoryzacji transakcji. Z jednej strony jest to potwierdzenie dla banku, że klient złożył określoną dyspozycję, z drugiej – zabezpieczenie klienta. W tym wypadku jest to dodatkowy stopień kontroli, dodatkowe zabezpieczenie na wypadek, kiedy dane uwierzytelniające użytkownika, klienta bankowości elektronicznej, dostaną się w niepowołane ręce. Tak więc można stwierdzić, że celem autoryzacji transakcji jest:

W celu autoryzacji transakcji wykorzystane może być wiele metod, w przypadku tych rozważań uwzględnię dwie najbardziej chyba rozpowszechnione:

Dodatkowe zabezpieczenie

Zacznijmy od końca. Jeśli jest to dodatkowe zabezpieczenie, to powinno być coś odrębnego od metody wykorzystanej do uwierzytelnienia użytkownika. I z przykrością stwierdzam, że podpis elektroniczny nie spełnia tego wymagania. Jeśli klient choć raz użyje niezaufanego komputera w celu skorzystania ze swojej bankowości internetowej, jego klucz prywatny może wpaść w niepowołane ręce, osoba która go ukradła może bez problemu zalogować się do systemu (podpis elektroniczny) i autoryzować dowolną transakcję (znów podpis elektroniczny). Ponownie podkreślę, że podpis cyfrowy ma sens tylko w przypadku, gdy osoba korzystająca z niego zawsze korzysta z zaufanych komputerów, a na dodatek najlepiej jest, gdy klucz prywatny znajduje się na karcie kryptograficznej. Innymi słowy – z przykrością jeszcze raz muszę stwierdzić, że podpis cyfrowy jest dla świadomych użytkowników...

Lepiej przedstawia się sytuacja w przypadku haseł jednorazowych. W tym wypadku zdobycie hasła wymaganego do logowania, nie pozwoli na wykonanie żadnej operacji (pomijam tutaj “zaufane przelewy”, które niektóre serwisy pozwalają wykonać, ponieważ ich wcześniejsza konfiguracja wymaga autoryzacji dyspozycji i jej parametrów). No ale token/telefon/listę można zgubić, ktoś może je ukraść i wówczas wykonywać dowolne operacje. Tak, to prawda. Są to jednak rzeczy materialne i utratę tych rzeczy łatwiej jest zauważać niż fakt potajemnego skopiowania klucza prywatnego przez trojana/rootkita działającego na niezaufanym komputerze.

Potwierdzenie (dla klienta i dla banku)

Czy i tutaj hasła jednorazowe są lepsze od podpisu cyfrowego? Akurat na potrzeby tych rozważań zakładam, że transakcję autoryzuje rzeczywiście właściciel konta i jest on jedynym posiadaczem klucza prywatnego. Nie, nie są. Podpis cyfrowy jest powiązany z parametrami transakcji, takimi jak kwota, rachunek źródłowy, rachunek docelowy. Zakładając poprawną implementację mechanizmu podpisu cyfrowego (co niestety może być zbyt śmiałym założeniem) klient ma mocny dowód, że podpisał dyspozycję z określonymi parametrami. Tak samo mocny dowód posiada bank.

Zupełnie inaczej przedstawia się sytuacja w przypadku haseł jednorazowych. Są one najczęściej kompletnie niezwiązane z parametrami autoryzowanej dyspozycji, działają na zasadzie “dzielonego sekretu”, transakcja jest realizowana, jeśli klient przedstawi wraz z dyspozycją sekret, który bank oczekuje, że klient zna. Po fakcie nie ma żadnego sposobu, by klient/bank udowodnił, że kod został wpisany do autoryzacji dokładnie tej transakcji, która została wykonana.

Czy coś tu może być zrobione lepiej? Tak, może. Zamiast wykorzystać bezpośrednio kod SMS/hasło jednorazowe/wskazanie tokenu do autoryzacji transakcji, należy zastosować przekształcenie, którego zmiennymi są parametry transakcji oraz owo “hasło”. W tym celu całkiem dobrze sprawdzić może się HMAC. Danymi poddawanymi “autoryzacji” przez funkcję HMAC są tutaj parametry przelewu, jako klucz wykorzystywane może być hasło jednorazowe. Czy to zrównuje hasła jednorazowe z podpisem cyfrowym? Nie. Podpis cyfrowy może złożyć tylko posiadacz klucza prywatnego. Wyliczenie HMAC dla danej transakcji może wykonać każdy, kto ma dostęp do klucza, czyli klient, lub bank... W efekcie bank może wpisać dowolne parametry transakcji i opatrzyć je prawidłowym kodem HMAC. Tak, wiem. Bank jest instytucją godną zaufania. Ale pracują w nim ludzie, a za ich uczciwość nikt nie może ręczyć w 100%25.

...i to będzie na tyle jeśli chodzi o autoryzację transakcji. Przynajmniej tym razem.

Oryginał tego wpisu dostępny jest pod adresem O bezpieczeństwie bankowości elektronicznej – autoryzacja transakcji

Autor: Paweł Goleń