dodany: 14.11.2012 | tagi: , ,

Autor:

Zabezpieczanie haseł w systemach online

14

Tematyka bezpieczeństwa danych użytkowników stron internetowych jest w ostatnim czasie dosyć często poruszana, a wszelkie potknięcia administratorów czy wycieki danych są szeroko upubliczniane. Właściciele serwisów starają się monitorować wszelkie przypadki naruszenia zasad, jednak zdarzają się usługi, w których celowo wyłączono lub pominięto zabezpieczenia czy funkcjonalności blokujące potencjalnych włamywaczy. Oba podejścia mają swoje zalety i wady i nie ma złotego środka.

Doskonałym przykładem usługi, której właściciele postanowili poświęcić wysoki poziom bezpieczeństwa na rzecz wygody klientów jest system oferujący możliwość tworzenia i utrzymania sklepów internetowych – IAI-Shop, prowadzony przez firmę IAI S.A. O tym przypadku można było ostatnio przeczytać w serwisie niebezpiecznik.pl. We wspomnianym artykule można zapoznać się z podsumowaniem oświadczenia tej firmy na temat bezpieczeństwa haseł i mechanizmach ich przypominania.
Jest to o tyle istotne, że wiele serwisów internetowych wymaga dziś zakładania kont, logowania i podania podstawowych danych osobowych, aby można było korzystać ze zgromadzonych zasobów, komunikować się z innymi i być typowym użytkownikiem.
Często konta zakładane są szybko i machinalnie. W sytuacji, gdy próbujemy dostać się do serwisu, który wymaga założenia konta dla uzyskania jakiegokolwiek dostępu, tworzymy konto bez zastanowienia, co się później dzieje z podanymi informacjami i jak działa tak naprawdę system, któremu powierzamy swoje dane.

Teoretycznie każda publiczna usługa gromadząca dane osobowe, które są danymi wrażliwymi, powinna spełniać wymagania GIODO (Generalny Inspektor Ochrony Danych Osobowych), co oznacza wdrożenie mechanizmów zabezpieczających dostęp do systemu i wymuszających określony poziom weryfikacji użytkowników.
Odpowiedzialne organizacje już na etapie projektowania takich rozwiązań zastanawiają się nad odpowiednimi funkcjonalnościami, które wypełniają te wymagania, a dla własnego dobra wdrażają nawet dodatkowe zabezpieczenia. Oczywiście każda pojedyncza funkcjonalność czy opcja wiąże się z odpowiednim kosztem jej wprowadzenia, co czasem skłania do jej rezygnacji, lub zabezpieczenia są tak minimalne na ile to możliwe.

Użytkownicy zakładający konto najczęściej nie czytają regulaminu serwisu i nie zauważają, jakiego typu mechanizmy są wdrożone. To oznacza, że nie są świadomi bezpieczeństwa swoich danych, a zdarza się że zapominają o niektórych swoich kontach i nie mają kontroli nad informacjami wprowadzanymi przy okazji ich zakładania.
Dodatkowo sytuację komplikuje fakt, że praktycznie każda usługa ma swoje podejście do zabezpieczenia niepowołanego dostępu, a część tego typu opcji jest zaimplementowana poniżej warstwy prezentacji i jest niewidoczna dla właściciela konta. Nie ma on wiedzy, czy dane zapisywane są w bezpieczny sposób i kto ma do nich dostęp.
Pomimo że każdy system gromadzący dane osobowe musi zapewniać uwierzytelnienie poprzez unikatowy login i odpowiednią konstrukcję hasła (8 znaków, zawiera małe i wielkie litery oraz cyfry lub znaki specjalne), to nie każdy zachowuje odpowiedni poziom bezpieczeństwa w pozostałych funkcjonalnościach.
Wejście na konto użytkownika poprzez odgadnięcie kombinacji loginu i hasła (także metodą brute force) to najbardziej znany sposób uzyskania dostępu. Wiele systemów pomaga użytkownikom w sytuacji, gdy nie pamiętają parametrów dostępowych swojego konta.
Właściciele niezbyt dobrze zabezpieczonych serwisów częściowo pomagają włamywaczom, jeżeli w systemie istnieje niewłaściwie zaimplementowana funkcja przesłania hasła. Standardowo powinna ona przesyłać na adres e-mail użytkownika link do strony serwisu umożliwiającej zresetowanie hasła po wprowadzeniu kluczowych danych identyfikujących to konto. Dzięki temu nawet po przechwyceniu samego odnośnika, włamywacz musi jeszcze być w posiadaniu danych dla potwierdzenia tożsamości.

Niebezpieczna jest za to opcja przesłania hasła, a nawet loginu, po podaniu adresu e-mail użytego przy rejestracji. Często takie dane są wysyłane w jawnej postaci zwykłym e-mailem. Co gorsza, niektóre systemy nawet nie generują każdorazowo nowego hasła jako nowy i losowy ciąg znaków, a przesyłają hasło podane przez użytkownika. To powoduje bardzo poważne zagrożenie włamaniem na konto (a nawet jego przejęciem) i dostępem do danych – wystarczy przechwycić jeden z przesłanych maili.
Pomimo świadomości powyższego zagrożenia, wielu właścicieli serwisów decyduje się jednak świadomie na bardziej niebezpieczne podejście i przesyłanie danych w postaci jawnej, twierdząc, że ułatwia to i przyspiesza użytkownikom odzyskanie dostępu do konta, co jest prawdą – potwierdzanie danych po kliknięciu linku przesłanego w wiadomości wymaga wprowadzenia dokładnie tych samych informacji, jakie zostały użyte przy zakładaniu konta.
Działanie funkcji przypomnienia hasła jest związane z innymi, technicznymi, mechanizmami zabezpieczania danych składowanych w bazie danych systemu, a także z zagrożeniem dostępu do danych przez nieuprawnionych pracowników właściciela serwisu lub wyciekiem danych na zewnątrz.

Najskuteczniejszym sposobem zapewnienia bezpieczeństwa informacji jest zaszyfrowanie bazy danych, co jednak wiąże się z komplikacjami w razie jej awarii i trudniejszym jej zarządzaniem i utrzymaniem.
Innym podejściem, niewymagającym szyfrowania bazy danych, a zapewniającym bezpieczeństwo kont użytkowników jest ukrycie samych haseł poprzez użycie jednokierunkowej funkcji skrótu – tzw. hashowanie (co jednocześnie skutecznie utrudnia potencjalne próby uzyskania dostępu). W takiej sytuacji możliwe jest swobodne logowanie do systemu i zmiana haseł, a niemożliwe jest uzyskanie jego zawartości w postaci wpisywanej przez użytkownika. System w trakcie logowania wykonuje funkcję skrótu.
To rozwiązanie jest bardzo popularne, a wdrożenie jest niezbyt skomplikowane, lecz niestety wielu projektantów systemów nieświadomie lub świadomie rezygnuje z tej funkcjonalności. Powodem częściowo jest fakt, że konieczne jest wtedy zaimplementowanie innych mechanizmów przypomnienia hasła (czyli tak naprawdę wygenerowania nowego). Dodatkowo bardziej złożone jest rozwiązywanie problemów zgłaszanych przez użytkowników niepamiętających swojego hasła – najczęściej konieczne jest resetowanie hasła i dodatkowy kontakt z użytkownikiem.
Pomimo tych wad to rozwiązanie doskonale zabezpiecza dostęp do konta na obu frontach – z zewnątrz systemu i od wewnątrz (administracyjnie). W połączeniu z odpowiednimi procedurami zakładania kont i zmiany danych z użyciem linków aktywacyjnych, a także generowaniem losowego hasła w przypadku jego utraty, możliwe jest zabezpieczenie systemów online na akceptowalnym poziomie.

W trakcie tworzenia systemów podejmowane są czasem inne decyzje, z uwagi na cięcia kosztowe, czy też pozorne ułatwienie życia użytkownikom. Dotyczy to także dużych firm i korporacji, w których systemy są weryfikowane przez dedykowane działy bezpieczeństwa. Zdarza się, że właściciel biznesowy takiego systemu celowo zgadza się na uproszczenia i akceptuje potencjalne ryzyko. Są także firmy, które ignorują stosowane mechanizmy (np. hashowanie haseł) tłumacząc, że tak jest im wygodniej lub dzięki temu rozwiązaniu klientom lepiej korzysta się z serwisu. Jest dziś wielu świadomych użytkowników, którzy rezygnują z kont w takich serwisach lub w ogóle nie decydują się na ich założenie, bojąc się o bezpieczeństwo własnych informacji.

Wiele słyszy się dziś o wyciekach całych partii danych i przejęciu kont niczego nie świadomych użytkowników – zdecydowana większość takich przypadków wynika z błędów popełnionych przez administratorów lub jeszcze na etapie projektowania rozwiązania.
Oczywiście zawsze pozostaje czynnik ludzki i żaden administrator nie jest w stanie uchronić użytkownika przed nieumyślnym ujawnieniem danych (na przykład poprzez zanotowanie loginu i hasła na kartce przyklejonej do monitora), ale jednak systemowo można zapewnić taki poziom zabezpieczeń, żeby ewentualne włamanie było bardzo utrudnione lub niemożliwe w krótkim czasie.

avatar
IT Project Manager
Kierownik projektu, analityk i projektant z szeroką wiedzą techniczną i doświadczeniem w procesie tworzenia oprogramowania, zdobytymi w trakcie realizacji projektów, także dofinansowywanych z UE.

14 odpowiedzi na “Zabezpieczanie haseł w systemach online”

  1. avatar perbit napisał(a):

    już nie punktujcie sobie tak, bo nie Niebiezpiecznik tylko od http://zaufanatrzeciastrona.pl/ wszystko się zaczęło…

  2. avatar kox napisał(a):

    A jak to wygląda w przypadku integracji logowania z serwisami społecznościowymi? Nie tworzymy konta tylko logujemy się za pomocą danych z wybranej społeczności np. facebook.

    Warto zaznaczyć że po powiązaniu portali społecznościowych z serwisami informacyjnymi ilość danych jaką wystawiamy na ryzyko utraty jest o niebo większa. Zastanawiam się więc jak oceniamy ryzyko w takich przypadkach – jest większe, mniejsza? No i po kogo stronie leży odpowiedzialność prawna za utratę danych – serwis czy społeczność?

    • avatar Marcin Sałaciński napisał(a):

      Taka sytuacja jest bardziej złożona, a zagrożenie zależy od stopnia i sposobu integracji (np. czy dane są tylko pobierane z serwisu społecznościowego, czy też istnieje możliwość wysyłania danych do takiego serwisu i potencjalna furtka dla włamywacza). Na pewno rejestracja i logowanie w różnych usługach z wykorzystanie konta w serwisach społecznościowych zwielokrotnia możliwość wycieku informacji, ale nadal jest to ten sam zbiór danych, przechowywany np. we wspomnianym facebook. Rośnie ryzyko, ale zakres jest ten sam (chyba że w danej usłudze użytkownik dopisze więcej informacji o sobie).

      Co do odpowiedzialności, konieczna jest analiza regulaminu usług społecznościowych, które na pewnie zastrzegają ewentualność wycieku danych przez udostępnione API – każdy serwis ma swój regulamin i sposób określenia odpowiedzialności za dane.

  3. avatar Ada napisał(a):

    Myslę, że powinien tam być adres http://zaufanatrzeciastrona.pl.
    Cały temat odkryła i nagłośniła postępowanie IAI z hasłami… http://zaufanatrzeciastrona.pl/post/hasla-kliento…. Pozdrawiam :)

  4. avatar Dariusz Łydziński napisał(a):

    Hasła powinny być także składowane przez system w sposób bezpieczny, uniemożliwiający ich wykradnięcie i poznanie przez osoby trzecie. Mechanizmy, które przechowują hasła w postaci jawnej lub zaszyfrowanej odwracalnie, w znacznym stopniu obniżają poziom bezpieczeństwa aplikacji biznesowej.

  5. avatar Dariusz Łydziński napisał(a):

    Naturalnym wyborem na bezpieczne przechowywanie haseł jest użycie jednokierunkowych funkcji skrótu. Spośród dostępnych rozwiązań alternatywą jest funkcja haszująca SHA-2 z kluczem 512 bitowym, czyli SHA-512.

  6. avatar Dariusz Łydziński napisał(a):

    Należy jednak pamiętać, że nie można mówić o niezawodnej funkcji skrótu np. SHA-1 jest dużo szybsza niż konstrukcje stosujące szyfry blokowe i daje dłuższy skrót niż MD5 (obecnie nie jest już zalecany do stosowania), dzięki czemu jest bardziej odporna na ataki siłowe, jednakże jest możliwa do złamania.. Jest to możliwe przy wykorzystaniu tęczowych tablic (ang. rainbow tables) – bazy skrótów wykorzystywanej w łamaniu haseł szyfrowanych jednokierunkową funkcją skrótu.

  7. avatar Dariusz Łydziński napisał(a):

    Dlatego też, jako dodatkowe zabezpieczenie należy, przed haszowaniem, hasło połączyć z dowolnym, wcześniej ustalonym ciągiem znaków, czyli losowo generowaną wartością dodawaną jako argument funkcji skrótu i zapisywaną obok wartości skrótu. Przechowywanie haseł w takiej postaci gwarantuje nam że w przypadku włamania do naszej bazy danych, hasła użytkowników będą bezpieczne.
    W Internecie są dostępne bazy haszów MD5 wraz z jawnymi odpowiednikami i odgadnięcie „czystego” haszu jest dzięki nim o wiele prostsze.

    • avatar Marcin Sałaciński napisał(a):

      Panie Dariuszu, dziękuję bardzo za opublikowane uzupełnienia – myślę że zastosowanie takiego podejścia znacznie podwyższy poziom bezpieczeństwa. Myślę też że nawet zwykłe haszowanie pozwala lepiej uchronić hasła niż całkowity jego brak.

  8. avatar pcs napisał(a):

    A co to są "wymagania GIODO"? Czy Autor na pewno wie o czym pisze, czy tylko powtarza gdzieś zasłyszane i nic nie znaczące zdania?
    Poniżej mam podać mój adres e-mail, ale obowiązku informacyjnego nikt nie dopełnia… Może warto już się zainteresować, jakie i z czego wynikające obowiązki spoczywają na prowadzących serwisy?

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *