Kontynuując temat bezpieczeństwa bankowości elektronicznej, tym razem trochę o autoryzacji transakcji...
O bezpieczeństwie bankowości elektronicznej - autoryzacja 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:
- potwierdzenie dla klienta, że złożył określoną dyspozycję,
- potwierdzenie dla banku, że klient złożył określoną dyspozycję,
- dodatkowe zabezpieczenie przed wykonaniem operacji przez osobę, która jest w stanie zalogować się na jego konto w serwisie bankowości elektronicznej,
W celu autoryzacji transakcji wykorzystane może być wiele metod, w przypadku tych rozważań uwzględnię dwie najbardziej chyba rozpowszechnione:
- podpis cyfrowy,
- hasło jednorazowe (kod SMS, lista haseł, wskazanie tokenu),
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%.
...i to będzie na tyle jeśli chodzi o autoryzację transakcji. Przynajmniej tym razem.
Każdy bank twierdzi, że jego system bankowości internetowej jest bezpieczny. Użytkownik zwykle nie ma możliwości zweryfikowania tych twierdzeń. Można jednak popatrzeć na taki system krytycznym okiem. Tu kilka przykładów na co warto zwrócić uwagę. Certy
Przesłany: Jun 06, 20:31
Nie bardzo rozumiem całego szumu wokół URLzone. Nie robi on niczego nieoczekiwanego. Owszem, jest sprytny, ale nie odkrywczy. Malware na komputerze może stworzyć użytkownikowi dowolną iluzję rzeczywistości, która ograniczona jest jedynie inwencją twórców.
Przesłany: Oct 01, 17:32
Wpis ten jest związany z tematem autoryzacji transakcji, który wielokrotnie już poruszałem. Mimo tego temat wciąż nie został wyczerpany, jest ciągle wiele aspektów, o których się mówi. Jeden z nich chcę tu poruszyć, tak trochę w ramach ciekawostki.Krótkie
Przesłany: Feb 24, 22:42
Najbardziej oryginalną (i niestety - jedyną) odpowiedź odnośnie pytania o ukryty sens dobrych praktyk udzielił Kravietz: Dobre praktyki mają kapitalne znaczenie dla pentesterów, gdyż pozwalają rozdymać raporty nawet gdy nie udaje się znaleźć nic poważn
Przesłany: May 27, 18:38
Zamiast wystawiania slajdów (są dostępne tutaj), postanowiłem zrobić mały przegląd swoich starszych wpisów i zebrać je w jednym poście. Dzięki temu jeśli ktoś jest zainteresowany tematem, będzie mógł poczytać trochę więcej, niż z suchych slajdów.Ataki cel
Przesłany: Oct 05, 07:32