Logowanie   Leave a comment

Korzystanie z serwisu w chmurach wymaga założenia na nim konto (podane danych osobowych o różnym poziomie szczegółowosci), nosi to nazwę rejestracji. Dopiero o rejestracji przez nas i weryfikacji nas przez serwis możliwe jest korzystanie z niego po każdorazowym procesie logowania do niego poprzez podanie każdorazowo konta i hasła . Wszystkie przeglądarki internetowe mają opcję zapamiętania konta i hasła. Jest to bardzo wygodne w kontrolowanym przez nas otoczeniu (dom, biuro).

Ważnym problemem jest zabezpieczenie dostępu do zasobów w chmurze. Zasób jest dostępny wtedy, jeżeli przedstawi mu się zaświadczenia tożsamości które pozwlają zidentyfikować osobę lub proces i na tej podstawie zezwolić na korzystanie z niego. Proces ten nazywa się autentykacja lub uwierzytelnianie i polega jedynie na stwierdzeniu “who you are” – kim jesteś, nie należy go mylić z autoryzacją, działa po autentykacji i określa prawa do korzystania z poszczególnych elementów zasobów. Zaświadzenie to coś, jakiś atrybut, który może jednoznacznie zidentyfikować osobę (może to być żeton, certyfikat, odcisk palców).  Problem autentykacji ten ma dwie strony. Z jednej strony jest użytkownik, który wymaga aby logowanie się do usługi było wygodne i szybkie, zaś logując się do różnych usług chciałby posługiwać pojedyńczym zaświadczeniem tożsamości (tzw. SSO single-sign-on) ważnym w różnych usługach. Zaświadczenie musi być silne na tyle aby trudno było je pdrobić. Z drugiej strony są aplikacje działające pod spodem, muszą on działać sprawnie i nezawodnie aby uniemożliwić ominięcie zbezpieczeń. Zaświadczenia przechowuje użytkownik i nie powinien dopuścić aby ktoś mógłby go skraść, jedocześnie musi je przedstawiać systemom weryfikacji. Ten pozorny paradoks ma proste rozwiązanie, należy posługiwać się kryptografią i kluczami asymetrycznymi (parą kluczy: publicznym i prywatnym). Klucz publiczny służy do pokazywania wszystkim swych zaświadczeń (kim się jest) natomiast klucz prywatny musi być pod kontrolą wyłącznie jego właściciela.  Jednakże rozwiązanie to rodzi następny problem – jak potwierdzić usłudze, że przedstawione jej zaświadczenie (klucz publiczny) jest danego użytkwnika (jest orginalne). Tutaj także wypracowano rozwiązanie – wprowadzono certyfikaty i urząd certyfikacyjny. Certyfikat zawierający dane publuczne o osobie, wraz z jego kluczem publicznym. Taki certyfikat jest niemożliwy do podrobienia i  jednoznacznie identyfikuje osobę dlatego, że został wystawiony przez urząd certyfikacyjny – instytucję, której wszyscy ufają ponieważ wystawia certyfikaty po gruntonym sprawdzeniu danej osoby. Czy można go podrobić? Raczej nie ponieważ jest podpisany unikalnym kluczem prywatnym urzędu, którego nikt nie zna. Rozwiązanie to nosi nazwę PKI (infrastruktura kluczy publicznych) jest klasycznym rozwiązaniem problemu komunikacji między dwiema stronami. Poświadczenie autentyczności komunikacji między dwoma stronami powierza się stronie trzeciej, której wszyscy ufają.

Historyczne pierwszym sposobem logowanie się do usługi jest bazowa autentykacja, znamy ją z wielu filmów sesacyjnych, polega na podaniu konta i hasła. Są one transmitowane przez internet w jawnej postaci. W obecnej dobie jest to niezbyt mądry pomysł. Ale na tej bazie powstało wiele sensowniejszych wariacji jak, wprowadzenie protokołu SSL czy szyfrowania hasła.

Najczęściej w kontroli dostępu do usług stosuje sie konto i hasło, które otrzymuje się podczas rejestracji w usłudze (czasami należy podać jakąś informację trudną do zgadnięcia np. imię żony) czasami konto e-mail, przy weryfikacji sprawdza poprzez wysłanie tajnego kodu do użytkownika się czy odpowiedź przyszła z tego konta.  System kont emailowych staje się coraz popularniejszy, wykorzystują go globalnie do wszystkich usług danego dostawcy m.in. Google i Microsoft. Sprawa obsługi systemów kont i haseł jest trudna gdy chcemy stworzyć globalny system logowania a nie tylko w obrębie danego dostawcy.  Rozwiązanie tego problemu to stworzenie globalnego systemu zarządzana tożsamością (IMs – Identity Management services). Fizycznie oznacza to wydzielenie grupy (federacji) serwerów, którym wszystkie aplikacje ufaju i do których się odwołują w celu potwierzenia tożsamości. Istnieje pewne ryzyka z tym związane, co będzie gdy te serwery zostana skompromitowane (następi włamanie i kradzież zaświadczeń), lepeij nie myśleć o konsekwencjach takiego zdarzenia.

Istnieje kilka takich komercyjnych (a więc rzeczywiście działającyh i wykorzystywanych praktycznie) systemów uwierzytelniania (Microsoft ma Passport, MS CardSpace, MS Live ID, Sun ma Liberty), kłopot jedynie z ich wiarygodnością. Dlatego szanse mają projekty otwarte budowne na kodzie open-source np. OpenID, OAuth czy Higgins. Ten ostatni zasługuje na uwagę, ponieważ jest wspierany przez wiarygodną firmę z wizją –  IBM (jest to typowe podejście dużych firm, które chcąc zaistnieć na jakimś rynku, a nie mając produktu, kupują go od firm trzecich lub co ma większe prwadopodobieństwo, wchodzą w układ z jakimś owartym projektem, one go sponsorują, a tamci udostępniają wyniki), który wykorzystał projekt Hiigins Trust Framework z fundacji Eclipse. Projekt Higgins to platforma  pozwalące użytkownikowi lub systemowi integrować tożsamości, profile oraz relacje między nimi pochodzące od różnych systemów. Dzięki temu twórcy aplikacji uwierzytelniających posługują się jednolitym API obsługującym różne implementacje autentykacji opartej się o uznawane przez Microsoft standardy WS-Trust, WS-SecurityPolicy, WS-Federation (nic dziwnego MS brał w nich aktywny udział).

Ale ja wiadomo najsłabszym ogniem autentykacji jest człowiek, zbyt leniwy by dla każdej usługi tworzyć oddzielne konto i hasło. Zwykle posługuje się jednym konto i hasłem do wszystkich aplikacji (chociaż istnieje wiele rozwiązań w postaci lokalnych aplikacji, wtyczek do przeglądarek lub specjalnych stron do przechowywania zaświadczeń tożsamości do witryn, nie są one tak często używane ponieważ nie wiadomo, kto za nimi stoi i jest ich tak dużo, że trudno wybrać). Aby temu przeciwdziałać wymyślono właśnie otwarte, niezależne centralne systemy logowania, jednym z takich jest OpenID. Działanie tego systemu logowania jest proste, my ufamy OpenID i rejestrujemy się w nim. Następnie odwiedzając jakąś witrynę czy usługę mamy możliwość rejestracji w niej na nowo (a więc sznsę dodania kolejnej pary konto/hasło do zapamiętania) lub zarejstrować się posługując swoim istniejącym zaświadczeniem przechowywamym w OpenID. Wtedy dana witryna kontaktuje się w “tle” z OpenID i sprawdza naszą tożsamość. Taki schemat aby mógł działać poprawnie, wymaga nawiązania kontaktów między OpenID i odwiedzaną witryną. Na szczęście lista takich witryn i usług ufająca zaświadczeniom przechowywanym w OpenID stale się wydłuża (jest tam Facebook, Microsoft i Google).

Innym serwisem globalnej identyfikacji jest OAuth, polega na wymianie kluczy (dokładnie pary kluczy: consumer key i consumer secret). Ostatnio jest o nim mowa po tym jak serwis Twitter przeszedł z bazowej autentykacji właśnie na OAuth. Serwis OAuth jest coraz bardziej popularny wśród serwisów społecznościowych, daje im od razu gotowe rozwiązanie problemu dostępu do mechanizmu autentykacji i jest to rozwiązanie otwarte. Korzysta z niego Google i Facebook (wprowadził nawet do swych rozwiąazń propozycje standardu OpenID 2.0). Niestety standard jest zbyt otwarty poszczególne implementacje wersji OAuth 1.0a (zgłoszonego do IEFT – Internet Engineering Task Force) różnią się od siebie.  Problem z tą autentykacją polega na możlwiości kradzieży źle zabezpieczonych klucz i podszycie pod innych użytkowników. Klucze można ukraść, ponieważ OAuth nie ma żadnego standardu odnośnie przechowywania i zabezpieczenia ich (w PKI klucze są w pliku pkcs#12 zabezpieczone przed dostępem hasłem lub znajdują się na karcie inteligentnej). Widać , że tradycyjne, klasyczne rozwiązanie z kluczami – PKI oferuje jeszcze większe bezpieczeństwo poprzez poświadczenia certyfikatów i centralne nimi zarządzanie.

Nowy trend w logowaniu to wykorzystanie istniejącego konta w innym serwisie np. chcąc skorzystać z zasobów serwisu scribd należy od niedawna być w nim zarejestrowanym można to zrobić na dwa sposoby albo mieć na nim konto, albo zalogowąc

Źródła: http://arstechnica.com/open-source/guides/2010/01/oauth-and-oauth-wrap-defeating-the-password-anti-pattern.ars, http://arstechnica.com/security/guides/2010/09/twitter-a-case-study-on-how-to-do-oauth-wrong.ars, http://media2.pl/internet/6983-lepsza-kontrola-danych-osobowych-w-internecie.html, Szukaj: http://mwawrzynczyk.blogspot.com/search?q=Passport

http://mwawrzynczyk.blogspot.com/2006/11/tworzenie-aplikacji-internetowych.html

Posted 19 Wrzesień 2010 by marekwmsdn in Bez kategorii

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s

%d bloggers like this: