Temat wykladu:
Kryptografia: Jednokierunkowe funkcje skrótu i autoryzacja (by jaboja, 2007-09-05) @ wyklady.net
20:30JaBoJaWitam was na kolejnym wykladzie o kryptografii.
20:31JaBoJaDzisiejszy poswiecony bedzie dosc przydatnej kwestii czyli autoryzacji
20:31JaBoJaPokaze tez przykladowy skrypt PHP+JS do logowania bez potrzeby wysylania hasla do serwera
20:32JaBoJaPrzejdzmy jednak do rzeczy
20:32JaBoJaW temacie uzyty zostal termin "jednokierunkowa funkcja skrotu"
20:32JaBoJaTakimi funkcjami sa na przyklad MD5 i SHA1, ktore omowie pozniej
20:33JaBoJaGeneralnie idea jednokierunkowej funkcji skrotu zasadza sie na tym, aby z dosc dlugiego tekstu (czy mowiac ogolniej ciagu bitow) otrzymac skrot o stalej dlugosci,
20:34JaBoJataki, ze na podstawie skrotu nie mozna odtworzyc ani oryginalnego tekstu, ani zadnego innego dajacego identyczny skrot
20:35JaBoJajest to bardzo uzyteczne tam gdzie chcemy w jakis sposob umiescic odwolania do danych (np. hasla) w bazie danych, nie ujawniajac ich
20:35JaBoJaZeby pokazac jak reaizuje sie takie funkcje w praktyce mniejwiecej przedstawie wam algorytm MD5
20:36JaBoJaDaje on skrot o dlogosci 16 bajtow (w praktyce sa to 32 znaki ASCII stanowiace liczbe w systemie hexadecymalnym)
20:36JaBoJaJest to 512 bitow
20:37JaBoJaI dlatego na poczatku uzupelniamy wiadomosc tak, aby jej dlugosc byla wielokrotnoscia 512 bez 64 bitow
20:38JaBoJate 64 bity zawieraja informacje o dlugosci wiadomosci (aby ciagi z dopisanymi na koncu zerami mialy inne skroty niz te bez nich)
20:38JaBoJatak powstaly ciag jest potem traktowany jako pewna ilosc 512 bitowych blokow podzielonych na 16 podblokow, ktore sa potem niezaleznie przetwarzane
20:39JaBoJaszczegoly tu pomine, jak ktos chce zaimplementowac algorytm znajdzie je w internecie
20:39JaBoJawazne natomiast ze w trakcie przetwarzania tych blokow uzywane sa 4 nieliniowe funkcje, z ktorych dla przyklady podam jedna:
20:40JaBoJaF(X, Y, Z) = (X ^ Y) v (~X) ^ Z
20:41JaBoJaDane sa przetwarzane z uzyciem tych funkcji i ostatecznie trudnosc odwrocenia funkcji jest tak duza, ze wymaga
20:41JaBoJakomputera z paroma gigabajtami pamieci, ktory odwraca ciag (nie pamietam ilo znakowy) w ok. 8 godzin
20:42JaBoJa(przy uzyciu Rainbow Tables)
20:42JaBoJaw internecie oczywiscie sa gotowe bazy danych skrotow, wiec skroty slow ze slownika znajdziemy bez problemu
20:44JaBoJa(dlatego jako hasla na np. forach nalezy w miare mozliwosci stosowac ciagi losowe, i to najlepiej z cyframi i liczbami)
20:44JaBoJa(zwykle slowa, nawet po polsku, w dostepnych w internecie bazach danych sa)
20:44darkjames;e MD5 szybko sie lamie.
20:45JaBoJaniestety nie pamietam strony ktora pozwalala szukac tych skrotow
20:45darkjamesOn 18 March 2006, Klima published an algorithm[5] that can find a collision within one minute on a single notebook computer, using a method he calls tunneling.
20:45JaBoJanawet nie wiedzialem
20:45darkjames(wikipedia)
20:45JaBoJaale wlasnie ze wzgledu na ta lamliwosc MD5 w przykladzie ktory pokaze uzyte bedzie SHA1
20:46JaBoJaSamego algorytmu SHA1 pokazywac nie bede, bo opiera sie na podobnej koncepcji jak MD5, tylko sposob "mieszania" danych jest nieco lepszy, no i daje dluzszy skrot
20:47darkjamesale imo sha1 tez za nie dlugo zlamia, sha512 nalezy uzywac ;)
20:48JaBoJaWszystko da sie zlamac ;)
20:48JaBoJaTo kwestia czasu
20:48JaBoJaAle cos trzeba wybrac a SHA1 jest wbudowane w PHP :P
20:48JaBoJaW kazdym razie SHA1 daje skrot 20 bajtowy, a MD5 tylko 16
20:48JaBoJaCo tez jest pewna zaleta
20:50JaBoJaPierwotna wersja SHA byla ponadto szybsza od MD5, SHA1 juz niestety nie jest, ale i tak je polecam bardziej, bo jest bezpieczniejsze.
20:51michuhttp://forum.php.pl/index.php?showtopic=26365&hl=z%B3amane tu jest napisane ze SHA-1 jest zlamane
20:51michuczy to prawda??
20:52JaBoJaNajwyrazniej tak
20:52darkjamesno, sa ataki. ale dla przecietnego pcta nadal 2^69 to duzo.
20:53JaBoJaPozatym czegos jakby nie bylo trzeba uzyc
20:53michuchyba Ĺźe mamy dobrego shela ktĂłry pracuje caly czas
20:53JaBoJaI nie ma moim zdaniem sensu marnowac czasu na implementowanie niewiadomo czego jesli zabezpieczamy strone na ktora wlamywac sie beda tylko domorosli hakerzy ktorzy wynalezli w internecie strone lamiacam MD5
20:54JaBoJaAle jak ktos chce to moze uzyc innej funkcji
20:54JaBoJaChcialym teraz przejsc do samego algorytmu autoryzacji
20:55JaBoJaUzywa on funkcji skrotu, ale moze to byc dowolna funkcja, to jakiej uzyjemy ma znaczenie dopiero na etapie implementacji (wielkosc pola w bazie danych etc.)
20:56JaBoJaPrzyklad takiego systemu w dzialaniu znajduje sie pod adresem http://jagiello.dyndns.org/ (Firefox only)
20:56JaBoJalogin: admin
20:56JaBoJahaslo: test
20:57JaBoJaNajpierw jednak przesledzmy algorytm logowania stosowany min. przez phpBB:
20:58JaBoJa1. Serwer wysyla do uzytkownika HTMLowy formularz z polem loginu i hasla
20:58JaBoJa2. Uzytkownik wysyla do serwera niezaszyfrowany login i haslo
20:59JaBoJa3. Serwer tworzy skrot MD5 hasla i porownuje go ze skrotem znajdujacym sie w bazie danych w rekordzie z zadanym loginem
20:59JaBoJa4. Jesli sie zgadzaja serwer aktoryzuje uzytkownika i ustawia mu stosowne ciasteczka pamietajace sesje
21:00JaBoJaJa chcialbym wam zaproponowac algorytm ktory przenosi generacje skrotu hasla na komputer uzytkownika
21:01JaBoJaCos podobnego uzyte jest na Epulsie, acz nie analizowalem go zbyt dokladnie (w kazdym razie szyfruje dane po stronie przegladarki)
21:01JaBoJaAlgorytm wzorowany jet na algorytmie SKID2 ktory jest nastepujacy:
21:02JaBoJa1. Uzytkownik A generuje liczbe losowa Ra i wysyla ja do uzytkownika B
21:03JaBoJa2. Uzytkownik B generuje liczbe losowa Rb i wysyla ja do A, wraz z wartoscia jednokierunkowej funkcji MAK z polaczonych Ra, Rb i nazwy uzytkownika B
21:03JaBoJa3. Uzytkownik A generuje podobny skrot i porownuje go z tym otrzymanym
21:05michumam pytanie czy to jest bezpieczne?
21:06michuczy uĹźytkownik moĹźe przejÄ?Ä? w jakiĹ? sposĂłb algorytm szyfrujÄ?cy?
21:06JaBoJato mu nic nie da
21:06JaBoJabo moze zaszyfrowac, ale nie moze zdeszyfrowac
21:06michuaha
21:06JaBoJaale rozwazmy to w zmodyfikowanej formie jakiej uzylem:
21:08JaBoJa1. Serwer przesyla formularz z polem loginu, polem hasla (ktore nie jest przesylane), ukrytym polem hasla (ktore jest wypelniane przez JS przed przeslaniem) i ciasteczko zawierajace liczbe losowa SSID
21:09mulandera nie lepiej cala transakcje po https przeprowadzic?
21:09JaBoJalepiej ;)
21:09mulanderpozatym jezeli ciebie dobrze zrozumialem
21:09mulanderto potrzebujesz 2 userow online, by zalogowac jednego
21:09JaBoJaNie
21:09JaBoJauzytkownik A to serwer, uzytkownik B to przegladarka
21:09mulanderah :)
21:10JaBoJa2. Przegladarka generuje SHA1(SSID.login.SHA1(haslo)) i wypelnia ta wartoscia ukryte pole hasla
21:12michua SSID jak rozumiem przesyĹ?ane jest przez cookies
21:12JaBoJa3. Serwer otrzymuje od przegladarki: login, SSID (w ciastku) i wczesniej wygenerowany skrot
21:12JaBoJa;)
21:12JaBoJa4. Serwer oblicza ten sam skrot i porownuje go z tym co otrzymal
21:13mulanderimho to jest bieganie w kolko dalej, jezeli ktos jest w stanie przechwycic wymiane w plain text, to przechwyci rowniez dane przesylane przez obie strony. Wiec jaki jest tego cel?
21:13JaBoJai co mu da ze przechwyci?
21:13JaBoJahasla nie odczyta
21:13mulanderuzyska autoryzacje.
21:13JaBoJajak?
21:13mulandermitm
21:13darkjamesmulander, to jest autoryzacja na to 1 polaczenie.
21:14JaBoJalegalny uzytkownik zostanie zalogowany, SSID straci waznosc
21:14JaBoJanie uzyje go po raz drugi
21:14JaBoJa(to nie jest do konca u mnie zaimplementowane bo tylko zasade dzialania chcialem pokazac)
21:14mulanderok inaczej browser <----- intruz -----> server
21:15michuto moĹźe byÄ? tak tylko przy lanie
21:15JaBoJajasne, jesli intruz bedzie sie podawal za serwer to trudna sprawa
21:15michuniezabezpieczonym
21:15JaBoJatrzeba uzyc podpisow elektronicznych, ale to juz zbyt skomplikowane do stosowania na zwyklych stronach WWW
21:15Armandesumichu, niekoniecznie... mozesz oszukiwac serwery dns....
21:15Armandesui intruz moze sie podac za serwer
21:16michuno ale to wyĹźsza szkoĹ?a jazdy ja tego nie umiem
21:16JaBoJaw kazdym razie hasla nie uzyska nawet jak poda sie za serwer
21:16JaBoJamoze co najwyzej przechwycic to konkretne polaczenie
21:17JaBoJaChcialbym przejsc do implementacji, wiec jesli cos jeszcze jest niejasne to pytajcie
21:17mulanderall clear, keep going
21:17michua co z rejestracja
21:17michubo to logowanie
21:17JaBoJarejestracji nie uwzglednialem, bo wyklad mial byc o autoryzacji
21:18michuaha ok
21:18JaBoJajesli zrobisz ja plaintekst przez neta, to intruz moze se wykrasc haslo i buszowac
21:18Armandesuto w tym wypadku intruz jedynie moze przejac dana sesje
21:18Armandesumam na mysli goscia posrodku
21:19JaBoJatak
21:19Armandesuman in midle czy jakos tak...
21:19JaBoJaano
21:19Armandesuok... ale hasla nie pozna
21:19mulandercaly sens w hasle to ograniczenie dostepu panowie :)
21:20JaBoJawiesz, jesli chcemy aby logowanie bylo mozliwe z kazdego komputera (np. w kafejce, w szkole) to uniknac man in the middle praktycznie sie nie da
21:20mulanderwiec troche mnie to dziwi czemu uwazacie ze przejecie sesji jest nie grozne?
21:20Armandesuok, mi sie podoba
21:20Armandesusesje moze przejac... zmiana hasla aby przejac konto wymaga podania hasla
21:20JaBoJanawet HTTPS nic nie da bo MIM moze sobie postawic serwer na HTTPS a jak uzytkownik wchodzi w danym miejscu na ta strone pierwszy raz to nie kapnie sie ze jest inny klucz
21:20Armandesustarego i nowego a go nie zna
21:21darkjamesJaBoJa, po to jest fingerprint, i sie porownuje.
21:21mulanderArmandesu: ale dalej drazysz haslo.
21:21mulanderArmandesu: a nie bierzesz pod uwage innych elementow do ktorych moze uzyskac dostep po przejeciu sesji.
21:21mulander:)
21:22Armandesumulander: to zalezy do czego gosc ma dostep
21:22Armandesumulander: admin raczej z kafejki sie nie bedzie logowac
21:22mulanderArmandesu: ok, przejmujac sesje zalozmy na allegro - musze znac haslo by uznac to za grozna sytuacje? :)
21:23JaBoJana man in the middle jest tez sposob, acz trzeba by sie troche w AJAXa pobawic
21:23JaBoJavide:
21:23Armandesumulander: dlatego nie robimy tego z nieznanych kompow
21:23mulandermulander: na swoich uzytkownikow nie masz wplywu.
21:23mulandertfu
21:23mulanderArmandesu mialo byc
21:24darkjamesumiecie krasc strumienie szyfrowane?
21:24JaBoJaserwer przesyla parzyste bity obrazka ktorego zawartosc jest znana userowi, uzytkownik przesyla parzyste bity jakiegos powiedzmy kolejnego skrotu hasla, potem serwer przesyla nieparzyste bity, uzytkownik nieparzyste i jesli jest MIM to cos musi sie nie zgadzac
21:24Armandesufakt... innymi slowy MIM nas rozwali
21:25darkjamesJaBoJa, to to samo co https, tylko ze w brzydszym opakowaniu.
21:25JaBoJano nie do konca, bo w HTTPS jest to robione automatycznie, a co za tym idzie, jesli glupi uzytkownik pojdzie do kafejki to sie nie kapnie ze ktos jest posrodku
21:26JaBoJaa tak to na wlasne oczy widzi ze cos sie nie zgadza
21:26JaBoJaale zostawmy to, czas na impelmentacje tego logowania:
21:26JaBoJaNajpierw struktura bazy danych ktorej uzylem:
21:26JaBoJadwie tabele: login i users
21:26JaBoJalogin zawiera pola:
21:27JaBoJaSSID: BINARY(16)
21:27JaBoJaIP: int(10)
21:27JaBoJatime: int(11)
21:27JaBoJauid: smallint
21:28JaBoJaIP przechowuje w formie binarnej aby zajmowalo mniej miejsca
21:28JaBoJatabela users:
21:29JaBoJauid: smallint (klucz)
21:29JaBoJaname: varchar(64) (UTF-8)
21:29JaBoJapwd: binary(40) (czyli tyle ile zajmuje SHA1 w formie ASCII)
21:31JaBoJaW PHP mam klase db ktora w konstruktorze loguje sie do bazy MySQL
21:32JaBoJai ma dwie metody: query($q) (zwraca tablice bedaca wynikiem zapytania) oraz escape($s) dodajaca sekwencje ucieczki uwzgledniajac kodowanie znakow danego polaczenia z MySQL
21:32JaBoJakody zrodlowe sa w pliku dolaczonym do tematu na forum:
21:32JaBoJawidac to w pliku
21:32JaBoJahttp://forum.wyklady.net/index.php?topic=116.0
21:33Annihilator<@JaBoJa> IP przechowuje w formie binarnej aby zajmowalo mniej miejsca - szkoda, że przy >10 000 może rzutować na procesor to rozkminianie tej binarności :)
21:33AnnihilatorLiczba, którą podałem, to liczba userów jednocześnie :>
21:33darkjamesAnnihilator, what?
21:34JaBoJano to sobie mozesz uzyc w varchar
21:34JaBoJano nie czepiajmy sie pierdol
21:34AnnihilatorNo tylko mowie, widziałem serwis o większej odwiedzialności i kazda pierdoła MA znaczenie, nie tylko taka
21:34Annihilator:-)
21:35darkjamesAnnihilator, porownanie liczby 4 bajtowej, to jest jedna operacja w asmie.
21:35darkjamesporownanie 15 znakowego chara to juz jest wiecej.
21:35JaBoJaale z drugiej strony na darmowych serwerach zdazaja sie drakonskie limity wielkosci bazy
21:35JaBoJazalezy gdzie ma trafic skrypt
21:36Annihilatordarkjames, mówię, że widziałem taki serwis - epuls.pl, gdzie jest pare baz z jedną tabelą - tam po przeformatowaniu jest zapisane WSZYSTKO, by było jak najwydajniejsze
21:36darkjamesnie wiem jak w pehape, ale pewnie tez tam jest taniej porownac inta, niz chara.
21:37AnnihilatorZależy kto to jeszcze porówna - jak baza to już w ogóle cześć gitara ( a najlepiej zwalić wszystko na bazę, po to ona jest )
21:37AnnihilatorPrzy ogromnych serwisach oszczędza się na wszystkim, na czym tylko się da :)
21:38JaBoJaok, idzmy dalej :)
21:38AnnihilatorOk ;-)
21:38JaBoJamam w skrypcie kolejna klase sha1_login
21:39JaBoJaw konstruktorze zapamietuje ona IP, wywoluje metode sprawdzajaca cookie i w razie czego generuje nowy SSID
21:40JaBoJa(tu nalezaloby jeszcze zastanowic sie co z SSID po zalogowaniu, ale poniewaz moj skrypt po zalogowania tylko pisze ze zalogowano, wiec to olalem)
21:41JaBoJasprawdzanie ciasteczka z SSID wyglada nastepujaco:
21:42JaBoJa1. Sprawdzamy czy wogole jest, jesli nie to rzecz jasna return false
21:42JaBoJa2. Sprawdzamy czy dlugosc sie zgadza (u mnie jest to 16 przechowywane w stalej "len")
21:43JaBoJa3. Kasujemy z tabeli `login` te sesje ktore przekroczyly limit czasu
21:44JaBoJa4. Sprawdzamy czy istnieje taka gdzie SSID i IP sie zgadzaja z tymi ktore dostalismy od uzytkownika
21:45JaBoJajesli wszystko jest ok funkcja zwraca SSID, inaczej konstruktor dostaje false i wywoluje metode ssid() generujaca nowe ciasteczko
21:45JaBoJametoda ta najsampierw wywoluje metode generujaca losowy ciag znakow ASCII o zadanej dlugosci:
21:46JaBoJaprotected function randomStr($len) {
21:46JaBoJa$s = '';
21:46JaBoJafor ($i=0; $i<$len; ++$i)
21:46JaBoJa$s .= chr(mt_rand(32, 126));
21:46JaBoJareturn $s;
21:46JaBoJa}
21:47JaBoJaPotem wsadzamy SSID do bazy wraz z IP i znacznikiem czasu + dlugosc sesji (u mnie jest to 500 sekund przechowywane w stalej "ttl")
21:47JaBoJano i ustawiamy ciastko z taka sama data waznosci jak ta dodana do bazy
21:49JaBoJawazne ze jesli nawet uzytkownik cos zacznie kombinowac z waznoscia ciastka to w bazie mamy date ktora zapewni ze nie zostanie uzyte jakies stare przechwycone przez kogos kto akurat wszedl do kafejki internetowej i znalazl sobie w temporary internet files
21:49JaBoJaw praktyce jeszcze lepiej niz ciastko nadal by sie tu pewnie AJAX, bo mozna by pobrac SSID w momencie naciskamnia przycisku wysylajacego formularz a czas waznosci zredukowac do paru sekund
21:51JaBoJaGdy skrypt wykryje ze dostal przez $_POST dane do zalogowania wywoluje w omawianej klasie metode auth(login, haslo)
21:52JaBoJa(to sie nazywa u mnie odpowiednio $name i $hash)
21:52JaBoJaCo sie dzieje w tej funkcji:
21:53JaBoJa1. Pobieramy z bazy danych SHA1 z hasla (samo haslo nie jest tam przechowywane)
21:53JaBoJaprzy okazji w tym kroku mozemy odrzucic niepoprawne loginy, bo zapytanie zwroci false
21:54JaBoJa2. Obliczamy sha1("{$name}.{$pwd}.{$this->ssid}")
21:54JaBoJa$name - login, $pwd - to co odczytalismy z bazy, ssid - to co bylo w ciastku (lub zostalo wygenerowane, ale wtedy na pewno nie bedzie sie zgadzac)
21:55JaBoJa3. Ostatecznie sprawdzamy czy to co wygenerowalismy pokrywa sie z tym co wygenerowal uzytkownik
21:56JaBoJaI to by bylo na tyle. Jesli wszystko poszlo dobrze (uzytkownik nie uzywal IE i podal poprawny login i haslo zanim wygasla mu sesja) uzytkownik dostaje komunikat informujacy ze jest zalogowany
21:57JaBoJaPozostaje jeszcze kwestia JavaScript:
21:58JaBoJauzylem tu funkcji obliczajacej SHA1 zaczerpnietej ze strony:
21:58JaBoJahttp://www.movable-type.co.uk/scripts/sha1.html
21:58JaBoJafunkcje odczytujaca ciasteczka tez wzialem z internetu:
21:58JaBoJahttp://www.quirksmode.org/js/cookies.html
21:59JaBoJapoza tym jest jeszcze funkcja wywolywana w onsubmit formularza ktora generuje sha1(name + '.' + pwd + '.' + ssid)
22:00JaBoJai bawi sie polami formularza w tym celu (warte uwagi jest tylko czyszczenie pola hasla, tak na wszelki wypadek)
22:03JaBoJaI to byla by juz kompletna implementacja tego przykladu.
22:03JaBoJaOczywiscie mozna to ulepszac (rzekl bym ze nawet trzeba)
22:04ArmandesuJaBoJa: przewidujesz dalsza czesc wykladu tj. po zalogowaniu?
22:04JaBoJaChcialem pokazac jednak ze standardowe niewielkie bezp. logowania da sie poprawic, nawet jesli nie mamy dostepu do SHA1
22:04JaBoJaNie
22:04Armandesuszkoda
22:04JaBoJaWlasciwie to potem trzeba wygenerowac nowy identyfikator sesji
22:04JaBoJaWyslac go w ciastku i zapisac w bazie
22:05JaBoJaWszelkie wazne dane pamietamy na serwerze
22:05Armandesua proba zmiany hasla?
22:05Armandesujak by miala wygladac, da sie jakos to ukryc?
22:05JaBoJaTrzeba by stworzyc cos podobnego jak tu, tyle ze na serwer musi trafic jeszcze SHA1 z nowego hasla
22:06JaBoJaMamy natomiast do dyspozycji SHA1 ze starego, wiec mozemy zrobic XOR obu
22:06JaBoJai go przeslac
22:07JaBoJaserwer ma w bazie SHA1 starego hasla wiec zdekoduje ten XOR
22:07JaBoJaosoba podsluchujaca niestety skrotu hasla nie zna, wiec nic to jej nie da
22:07Armandesuok
22:07JaBoJano chyba ze zainstalowala trojana, ale to inna sprawa, bo jak trojan ma key-loggera, to mozemy sie bawic...
22:08Armandesupodejscie mi sie podoba
22:09Armandesumam nadzieje ze jakis jeszcze ciekawy wyklad poprowadzisz
22:10Armandesurownie ciekawy
22:10JaBoJaa wracajac do man in the middle, to jak pomyslalem to dochodze do wniosku ze i to daloby sie zabezpieczyc
22:10Armandesujak?
22:10JaBoJagdyby serwer przesylal fragmenty informacji ktora mozna uzyskac z hasla
22:11JaBoJatzn. wyliczamy cos dziwnego z hasla (np. SHA(SHA(haslo).SSID)) i przesylamy parzyste bity
22:11JaBoJaklient przesyla parzyste bity swoich danych
22:11JaBoJamy mu odsylamy reszte naszych on odsyla nam
22:11JaBoJai po obu stronach sprawdzamy czy wszo sie zgadza
22:12Armandesuno i w koncu logujesz goscia.... i mim przejmuje sesje
22:13JaBoJanie wiem czy dobry przyklad ci podalem
22:13JaBoJaw kazdym razie chodzi o to zeby
22:14JaBoJaprzeslac tylko polowe danych ktorych MIM nie moze przeslac dalej, bo musialby w nie zaingerowac aby sie ukryc
22:14JaBoJamusialbym pomyslec
22:14JaBoJapewnie trzebaby tam dodac w srodek IP serwera czy cos takiego
22:14JaBoJahmm... to chyba juz by wystarczylo
22:15JaBoJachyba ze MIM by nam i IP falszowal
22:15Armandesuwystarczy arpy pozmieniac, jakos tak
22:15Armandesuwiec istnieje mozliwosc....
22:15JaBoJano to dochodzimy do tego ze trzeba uzyc HTTPS
22:16Armandesuto chyba zalezy od tego do czego mamy uzyc to logowanie
22:16Armandesui jak wazne sa dane
22:16Armandesujak istotne
22:16JaBoJawiesz, do forum klasy 1B w gimnazjum jakimstam, to mozna zwyklego plainteksta
22:17JaBoJa:P
22:17Armandesuwiec kwestia logowania zalezy od waznosci serwisu
22:17Armandesu:)
22:18JaBoJaa jak juz chcesz sie bawic w 100% bezpieczenstwa bez HTTPS to musisz zaimplementowac RSA w JavaScript
22:18JaBoJaale to moze byc dosc wolne
22:18JaBoJai wtedy MIM by moze i mogl przeslac polowe bitow do klienta, ale by potem nie wiedzial co jest odsylane, bo byloby juz szyfrowane
22:19Armandesuaz tak obeznany w algorytmach nie jestem.... ale z pewnoscia doczytam
22:19JaBoJao co tu chodzi:
22:19JaBoJaserwer wysyla polowe bitow klucza RSA, nic one nikomu nie dadza same w sobie
22:20JaBoJaklient wysyla polowe danych do serwera
22:20JaBoJaserwer wysyla druga polowe klucza klientowi
22:20JaBoJaklient moze teraz na przyklad zaszyfrowac druga polowe danych tym kluczem
22:21JaBoJajako ze RSA jest niesymetryczne MIM zostaje z kluczem publicznym serwera i zakodowanymi danymi wysylanymi przez usera
22:23Armandesupozostaje tylko to zaimplementowac ;)
22:24JaBoJahmm... tylko i klucz trzeba tu szyfrowac np. haslem uzytkownika, zeby MIM nie wygenerowal wlasnej pary kluczy
22:24JaBoJato by dopiero dawalo 100% bezpieczenstwa (a i tego nie jestem pewien)
22:24JaBoJaale jak chcesz to mozesz implementowac :)
22:24Armandesu:)
22:24JaBoJaja jednak bym tu uzyl po prostu HTTPS
22:24Armandesuinnymi slowy internet nie byc bezpieczny
22:25JaBoJanie przesadzal bym
22:25JaBoJahttp nie byc bezpiecznym
22:25JaBoJaale sa protokoly ktore sa bezpieczne
22:25JaBoJai szczerze mowiac nie jestem pewien czy HTTPS sie do nich zalicza
22:25Armandesuthx za wyklad, musze znikac
22:25JaBoJadobranoc
22:25Armandesudobranoc
22:26JaBoJazanim i ja pojde, tak na wszelki wypadek: czy sa jeszcze jakies pytania?
22:26JaBoJatak wiec dobranoc!