Kolejny odcinek na temat bezpieczeństwa stron internetowych w ramach #od0dopentestera Dzisiaj w cyklu OWASP Top 10 o ekspozycji wrażliwych danych czyli o wydobyciu przez atakującego informacji, których nie powinien posiadać. A jest ich wbrew pozorom całkiem sporo: począwszy od numerów kart kredytowych, haseł do konta czy też adresu email. Różne są ryzyka związane z wyciekiem różnych danych. I tak jeżeli wyciekną numery kart możemy stracić pieniądze a email może zostać użyty w kampaniach złośliwego oprogramowania.
Ważnym punktem jest szyfrowanie - chodzi tutaj głównie o protokół https. Ciasteczka mogą mieć ustawioną flagę Secure, która sprawia, że ich zawartość nie będzie przesłana jeżeli używamy nieszyfrowanego połączenia.
Nie zapominajmy również o aplikacjach na urządzenia mobilne, które to komunikują się naszymi endointami API. Tutaj kluczowym jest sprawdzanie poprawności certyfikatu. W przypadku stron - jest za to odpowiedzialna przeglądarka. W aplikacji to programista musi użyć odpowiednich funkcji.
W różnych językach programowania są różne funkcję generujące dane pseudo losowe - czyli takie oparte na ziarnie. Jeżeli posiadamy wartość początkową - algorytmy te są deterministyczne - to znaczy, ze zwracają te same dane wyjściowe dla tych samych danych wejściowych. Przykładem niech będzie funkcja Random w #java i mój filmik na temat odzyskania tak wygenerowanej wartości.
Oczywistym wydaje się fakt, aby nie przechowywać haseł w tak zwanym plaintext a w formie haszy z solą. Sól to dodatkowy, losowy ciąg, który łączony jest z hasłem przesłanym przez użytkownika. I to z całego takiego ciągu generuje się hasz - czyli wynik funkcji jednokierunkowej i porównuje się go z tym, zapisanym w bazie.
W przypadku szyfrowania - nie wystarczy używać sprawdzonych bibliotek, należy to również robić w prawidłowy sposób. Tutaj koronnym przykładem jest AES w trybie ECB. Szyfry blokowe bowiem operują na blokach danych - gdzie dane wejściowe są podzielone na bloki równej długości. Tylko, że jeżeli w szyfrowanej wiadomości znajdują się jakieś regularności - na przykład powtarzalne ciągi, to ta sama struktura może się uwidocznić w zaszyfrowanych danych.
@KacperSzurek w jaki sposób użycie AES w trybie ECB pozwala na cokolwiek poza ustaleniem, że powtórzył się blok danych? Natomiast ślepe wierzenie sprawdzonym bibliotekom może prowadzić do poważnych problemów - vide przykład Sony i słabego generatora pseudolosowego.
@Czerwonykaktus obserwując powtarzające się bloki jesteś w stanie określić wzór danych. Dla przykładu CBC xoruje każdy blok z szyfrogramem poprzedniego bloku, stąd jest 'randomowy'
@Czerwonykaktus: Wyobraź sobie, że firma z jakiegoś powodu szyfruje hasła w trybie ECB zamiast je hashować. Następuje wyciek i masz dostęp do całej bazy zaszyfrowanych haseł. Znajdujesz rekord ze swoimi danymi. Wiesz że Twoje hasło to 'passwordpassword'. W bazie występuje jako hex 24e67d8f49d92832f3963883121efdc6
Znajdujesz ten sam string w bazie i trafiasz np. na taki rekord 24e67d8f49d92832f3963883121efdc6bae2229046520bd49ad4702dfd729f19
Wiesz że hasło tego użytkownika zaczyna się od passwordpassword, i to jest podatność.
@humbleham dlaczego zakładasz od razu użycie trybu niezgodnie z jego przeznaczeniem? Nie ma to najmniejszego sensu w ogólnym określaniu czegoś jako mniej bezpieczne. To tak jakbyś mówił, że zamek do drzwi jest do dupy, bo ktoś nie wybudował jednej ze ścian.
@Czerwonykaktus: Używasz odwrotnej logiki. Przeznaczeniem każdej funkcji szyfrującej jest uniemożliwienie osobie nieznającej klucza odkrycie czystego tekstu na podstawie szyfrogramu. Słabości trybu ECB nie są jego ficzerem.
@humbleham pozwól, że zacytuję raz jeszcze do czego się odniosłem.
W przypadku szyfrowania - nie wystarczy używać sprawdzonych bibliotek, należy to również robić w prawidłowy sposób. Tutaj koronnym przykładem jest AES w trybie ECB.
Użycie sprawdzonych bibliotek z zaimplementowanym AESem w trybie EBC jest bezpieczne. Wtedy, kiedy używamy go zgodnie z jego przeznaczeniem. Wy próbujecie dowieść, że tryb CBC jest w jakiś sposób lepszy, a jest po prostu inny. Służy do czego
@Czerwonykaktus: Zastosowanie ECB nie jest zdefiniowane przez jego twórców. Definiowane jest przez jego słabości. CBC nie posiada słabości które ma ECB, więc prawdziwe jest stwierdzenie że jest lepszy. A funkcje szyfrujące nie zapewniają integralności. Do szyfrowania można dodać funkcję podpisu jak np. HMAC który wykorzystuje jednostronne skróty.
@Kryptonim_Janusz dlaczego mam się powoływać na cokolwiek, jesteśmy w internecie. Szyfrowanie uwierzytelnione mówi Ci to coś? A kto jest twórcą ECB? To jest tylko tryb pracy. Każdy szyfr blokowy może w nim działać. I fakt, wykorzystanie trybów pracy jest definiowane przez ich słabości, ale też i przez mocne strony.
@Czerwonykaktus: "dlaczego mam się powoływać na cokolwiek, jesteśmy w internecie" Bo mówisz nieprawdę z pełnym przekonaniem
"Szyfrowanie uwierzytelnione mówi Ci to coś?" Wytłumaczyłem Ci jak działa uwierzytelnianie szyfrogramu. Podpisywanie wiadomości i szyfrowanie to dwa inne procesy i opierają się na innych algorytmach. Jasne można je łączyć, ale to nie oznacza że samo szyfrowanie zapewnia integralność. Wystarczy spojrzeć na diagramy https://en.wikipedia.org/wiki/Authenticated_encryption
@humbleham szyfrowanie uwierzytelnione DAWNIEJ realizowano za pomocą dwóch algorytmów. Nawet na podesłanej Wikipedii piszą o potrzebie połączenia i rozpisaniu tym samym nowego konkursu Caesar. Główna wada AESa GCM? Podwójny przebieg. Rozwiązanie? Szyfrowanie i uwierzytelnienie NARAZ.
NIST jest ośrodkiem standaryzacyjnym. Nie można powiedzieć, że stworzył ECB - ten tryb pracy jest najbardziej intuicyjny i powstał setki lat temu. Oni go tylko ustandaryzowali.
Mocnymi stronami ECB może być łatwość w implementacji, mniejsza zajętość układu,
@humbleham i jeszcze jedno. Nie mówię nieprawdy, tylko wytykam Ci błędy w rozumowaniu, a to dwie różne rzeczy. Robię to z pełnym przekonaniem, bo jestem świadom swojej wiedzy i braków.
@humbleham a czym innym jest szyfr cezara jeśli nie nieświadomym użyciem ecb? Czyli elektronicznej książki kodowej. Czy zwykłej książki kodowej. Czyli odzwierciedleniem jednego bloku w inny blok? Przypominam, że na matematykę można spojrzeć z wielu kierunków.
Dzisiaj w cyklu OWASP Top 10 o ekspozycji wrażliwych danych czyli o wydobyciu przez atakującego informacji, których nie powinien posiadać.
A jest ich wbrew pozorom całkiem sporo: począwszy od numerów kart kredytowych, haseł do konta czy też adresu email.
Różne są ryzyka związane z wyciekiem różnych danych.
I tak jeżeli wyciekną numery kart możemy stracić pieniądze a email może zostać użyty w kampaniach złośliwego oprogramowania.
Ważnym punktem jest szyfrowanie - chodzi tutaj głównie o protokół https.
Ciasteczka mogą mieć ustawioną flagę
Secure
, która sprawia, że ich zawartość nie będzie przesłana jeżeli używamy nieszyfrowanego połączenia.Nie zapominajmy również o aplikacjach na urządzenia mobilne, które to komunikują się naszymi endointami API.
Tutaj kluczowym jest sprawdzanie poprawności certyfikatu.
W przypadku stron - jest za to odpowiedzialna przeglądarka.
W aplikacji to programista musi użyć odpowiednich funkcji.
W różnych językach programowania są różne funkcję generujące dane pseudo losowe - czyli takie oparte na ziarnie.
Jeżeli posiadamy wartość początkową - algorytmy te są deterministyczne - to znaczy, ze zwracają te same dane wyjściowe dla tych samych danych wejściowych.
Przykładem niech będzie funkcja Random w #java i mój filmik na temat odzyskania tak wygenerowanej wartości.
Oczywistym wydaje się fakt, aby nie przechowywać haseł w tak zwanym plaintext a w formie haszy z solą.
Sól to dodatkowy, losowy ciąg, który łączony jest z hasłem przesłanym przez użytkownika.
I to z całego takiego ciągu generuje się hasz - czyli wynik funkcji jednokierunkowej i porównuje się go z tym, zapisanym w bazie.
W przypadku szyfrowania - nie wystarczy używać sprawdzonych bibliotek, należy to również robić w prawidłowy sposób.
Tutaj koronnym przykładem jest AES w trybie ECB.
Szyfry blokowe bowiem operują na blokach danych - gdzie dane wejściowe są podzielone na bloki równej długości.
Tylko, że jeżeli w szyfrowanej wiadomości znajdują się jakieś regularności - na przykład powtarzalne ciągi, to ta sama struktura może się uwidocznić w zaszyfrowanych danych.
Subskrybuj kanał na YouTube
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
#programowanie #security #informatyka #it #nauka #technologia #ciekawostki #gruparatowaniapoziomu #bezpieczenstwo #webdev #programista15k
Możesz zapisać/wypisać się klikając na nazwę listy.
Sponsor: Grupa Facebookowa z promocjami z chińskich sklepów
Masz problem z działaniem listy? A może pytanie? Pisz do IrvinTalvanen
! @KacperSzurek @Mashe @UrimTumim @porque @NERP @Smevios @Jakplus @Pioneer95 @ThatPart @szczeppan @Zielarz25 @press2210 @Dorrek @hiroszi @jerekp @Dyktus @bovver91 @Campell @ghostd @heow @Bakanany @arais_siara @Pies_Benek @HeinzDundersztyc @johnyboy @MojeTrzecieKonto @Deflaut @cytawek @dziki_bak @koperrr @balor @elpredatoro @notoniewiem @czechu @arba @Wroneczek @xDRpl @umiarkowany_ekstremista @
Wiesz że Twoje hasło to 'passwordpassword'. W bazie występuje jako hex
24e67d8f49d92832f3963883121efdc6
Znajdujesz ten sam string w bazie i trafiasz np. na taki rekord
24e67d8f49d92832f3963883121efdc6bae2229046520bd49ad4702dfd729f19
Wiesz że hasło tego użytkownika zaczyna się od passwordpassword, i to jest podatność.
Taki
Użycie sprawdzonych bibliotek z zaimplementowanym AESem w trybie EBC jest bezpieczne. Wtedy, kiedy używamy go zgodnie z jego przeznaczeniem. Wy próbujecie dowieść, że tryb CBC jest w jakiś sposób lepszy, a jest po prostu inny. Służy do czego
A funkcje szyfrujące nie zapewniają integralności. Do szyfrowania można dodać funkcję podpisu jak np. HMAC który wykorzystuje jednostronne skróty.
"dlaczego mam się powoływać na cokolwiek, jesteśmy w internecie"
Bo mówisz nieprawdę z pełnym przekonaniem
"Szyfrowanie uwierzytelnione mówi Ci to coś?"
Wytłumaczyłem Ci jak działa uwierzytelnianie szyfrogramu. Podpisywanie wiadomości i szyfrowanie to dwa inne procesy i opierają się na innych algorytmach. Jasne można je łączyć, ale to nie oznacza że samo szyfrowanie zapewnia integralność. Wystarczy spojrzeć na diagramy https://en.wikipedia.org/wiki/Authenticated_encryption
"A kto jest twórcą ECB?"
NIST
"To jest tylko tryb pracy.
NIST jest ośrodkiem standaryzacyjnym. Nie można powiedzieć, że stworzył ECB - ten tryb pracy jest najbardziej intuicyjny i powstał setki lat temu. Oni go tylko ustandaryzowali.
Mocnymi stronami ECB może być łatwość w implementacji, mniejsza zajętość układu,
Komentarz usunięty przez autora