Pytanie:
Czy „pukanie hasłem” to dobry pomysł?
gronostaj
2015-02-19 13:39:58 UTC
view on stackexchange narkive permalink

Z pukaniem portów, musisz "zapukać" do określonych portów w określonej kolejności, aby ujawnić port, na którym działa usługa.

A co z stukaniem hasła ? Na przykład masz trzy hasła: A , B i C . Żaden z nich nie jest poprawny sam w sobie, ale wprowadzane pojedynczo w tej kolejności zapewnią Ci dostęp.

Kilka scenariuszy, aby wyjaśnić ten pomysł:

Scenariusz 1.

  • Ty: Hasło A.
    • Serwer: nieprawidłowe hasło.
  • Ty: Hasło B.
    • Serwer: nieprawidłowe hasło.
  • Ty: Hasło C .
    • Serwer: Hasło zaakceptowane .

Scenariusz 2.

  • Ty: Hasło A.
    • Serwer: nieprawidłowe hasło.
  • Ty : Hasło C.
    • Serwer: nieprawidłowe hasło.
  • Ty: Hasło B .
    • Serwer: nieprawidłowe hasło.

Scenariusz 3.

  • Ty : Hasło A.
    • Serwer: nieprawidłowe hasło.
  • Ty: Hasło B .
    • Serwer: nieprawidłowe hasło.
  • Ty: hasło B.
    • Serwer: nieprawidłowy hasło.
  • Ty: Hasło C.
    • Serwer: nieprawidłowe hasło.

Scenariusz 4.

  • Ty: Hasło A.
    • Serwer: nieprawidłowy hasło.
  • Ty: Hasło A.
    • Serwer: nieprawidłowe hasło.
  • Ty: Hasło B.
    • Serwer: nieprawidłowe hasło.
  • Ty: Hasło C .
    • Serwer: zaakceptowano hasło .

Nie przychodzą mi do głowy żadne wady tej metody przez zwykłe logowanie za pomocą jednego hasła. Co więcej, sprawia, że ​​ataki słownikowe są wykładniczo trudniejsze z każdym dodanym hasłem.

Zdaję sobie sprawę, że jest to zabezpieczenie przez zapomnienie i nie znosi potrzeby stosowania silnych haseł. Sama sekwencja haseł jest tak silna, jak konkatenacja używanych haseł. Dodatkowe bezpieczeństwo w tej metodzie wynika z nieoczekiwanie złożonej procedury.

Czy to dobry pomysł? Czy to lepszy pomysł niż klasyczne hasło?

Z punktu widzenia użytkowników jest to bardzo frustrujące. jeśli powiesz, że błędnie wpiszesz jedno z haseł. Trudno będzie stwierdzić, który z nich poszedł źle A, B lub C.
Co ta metoda przesłania, czego nie mają tradycyjne hasła i dlaczego uważasz, że jest bezpieczniejsza? Wydaje mi się, że nie jest to bezpieczniejsze, niż gdybyś miał tylko jedno hasło będące połączeniem `A`,` B` i `C`. Jednocześnie nie rozumiem, dlaczego miałoby to być mniej bezpieczne.
@Justin, chyba że napastnik wie, że używam tego rodzaju dodatkowej ochrony, spróbuje każdego hasła tylko raz i najprawdopodobniej nigdy nie znajdzie prawidłowej sekwencji haseł.
komentarze nie służą do rozszerzonej komunikacji.
@RoryAlsop Jestem zwykłym użytkownikiem StackOverflow, ale jestem nowy w tej witrynie. Jestem zdezorientowany Twoją odpowiedzią i zastanawiam się, czy ma ona zastosowanie do wszystkich witryn SE, czy tylko do tej. Z tego, co widzę, Twój komentarz był zgodny z dokładnie 3 komentarzami, które wydają mi się (moim zdaniem) na temat i wnoszą wkład w dyskusję. Wydaje się, że jest inaczej niż oczekiwano na SO. Czy coś mi brakuje? (Uwaga: wcale nie jest to sarkastyczne pytanie.)
@mbm29414 Ja też jestem zdezorientowany i jestem zwykłym użytkownikiem SA. Najlepsze, co potrafię, to to, że niektóre komentarze zostały usunięte, a Rory Alsop zostawił komentarz wyjaśniający, dlaczego. Jeśli chodzi o to, czy jest to dobry pomysł w porównaniu z klasycznym hasłem, prawdopodobnie zależy to od twojego systemu „pukającego”. Czy sumuje się do końca, czy resetuje się za każdym razem? Zasadniczo nie wpuści cię, dopóki nie będziesz mieć A, B i C w tej kolejności, a A, B, B, C nie powinny działać. Nie jestem pewien, jak byś to zaimplementował, ale jeśli masz zamiar to zrobić, ta droga wydaje się najbezpieczniejsza.
@gronostaj nie należy polegać na [bezpieczeństwo przez zaciemnienie] (https://en.wikipedia.org/wiki/Security_through_obscurity)
Jeśli Twoim celem jest zapobieganie atakom słownikowym, co jest nie tak z polityką haseł - http://security.stackexchange.com/questions/3248/recommended-policy-on-password-complexityRównież, jeśli już * masz * odpowiednią politykę dotyczącą haseł, która jest odporny na ataki słownikowe (o to właśnie chodzi w tej polityce), to dlaczego trzeba dodać tę dodatkową niejasną procedurę „pukania haseł”.
Jak zauważył @tar, nie powinieneś polegać na bezpieczeństwie poprzez zaciemnienie. A tak przy okazji, nie byłoby to zbytnio przesłonięte; skąd Twój użytkownik będzie wiedział, jak nadal wprowadzać hasła? Ponieważ im mówisz. W końcu nie wydaje się to zbyt trudne do uzyskania informacji! :)
Zwykłe hasło to po prostu „pukanie w znaki”. Musisz ułożyć kilka znaków w odpowiedniej kolejności ...
mbm - wiele, wiele komentarzy zostało usuniętych.
Jeśli szukasz większego bezpieczeństwa, lepiej byłoby skorzystać z dwuetapowej metody uwierzytelniania, np. wysłać kod autoryzacji na urządzenie mobilne użytkownika lub na adres e-mail.
Możliwy duplikat [Port Knocking czy to dobry pomysł?] (Https://security.stackexchange.com/questions/1194/port-knocking-is-it-a-good-idea)
Siedemnaście odpowiedzi:
Mark
2015-02-20 06:41:23 UTC
view on stackexchange narkive permalink

System przedstawiony w pytaniu jest w rzeczywistości słabszy niż po prostu wymagający pojedynczego hasła o długości A + B + C, ponieważ dopuszcza klasę ataków, których nie można użyć przeciwko pojedynczym hasłom:

Załóżmy, że kombinacja trzech haseł to EFG . Atakujący może wysłać hasła ABCDEFG , dokonując pięciu ataków ( ABC , BCD , CDE , DEF i EFG ) w cenie dwóch. Ogólnym terminem określającym to jest sekwencja de Bruijn i umożliwia atakowanie dowolnego systemu opartego na stanach (takiego jak zamek cyfrowy) przy użyciu znacznie mniejszej liczby prób, niż jest to możliwe.

+1, żadna z pozostałych odpowiedzi nie podkreśla, że ​​ten schemat jest słabszy niż zwykłe hasło o tej samej (całkowitej) długości.
Schemat OP nie ma z definicji luki w zabezpieczeniach, ponieważ nie wspominali o implementacji, chociaż założę się, że większość ludzi by to przeoczyła. +1 za zauważenie tego. Jeśli jednak zaimplementujesz go, aby zresetować zmienne dla ostatnich trzech haseł co trzy hasła (czyli hasło1, hasło2, hasło3, oceń, wyczyść, powtórz), może to być bezpieczniejsze (z perspektywy niejasności).
W poście wspomniano, że „A A B C” działa, co oznacza, że ​​ma rozwijane okno „ostatnich trzech haseł” zamiast resetowania po grupie trzech haseł. Jest to wystarczające, aby uczynić go podatnym na zgadywanie oparte na sekwencjach.
Nie zgadzam się, że schemat jest słabszy. Sekwencja De Bruijn daje 3-krotne przyspieszenie, jednak dodanie dwóch podziałów do hasła powoduje spowolnienie `(| A + B + C | ponad 2)`. (Czyli 28 dla hasła składającego się z 6 znaków)
tylerl
2015-02-19 14:31:24 UTC
view on stackexchange narkive permalink

Z surowego punktu widzenia bezpieczeństwa Twoje hasło to po prostu „A B C”, a względna siła hasła jest odpowiednio obliczana.

Z punktu widzenia użytkownika jest to prawdopodobnie zbyt trudne do wykorzystania. Serwer nie wskazuje aktualnego stanu (czy szuka już drugiego hasła?), Dlatego użytkownik nie może określić, które hasło podać.

Z punktu widzenia obrony mała wartość tutaj. Ataki z użyciem hasła stają się nieco bardziej skomplikowane, a istniejące narzędzia ataku będą musiały zostać ponownie napisane, aby dostosować się do tego dziwnego schematu. To może wystarczyć, aby przekonać atakującego do pójścia dalej, ale jeśli jesteś ważnym celem, to w ogóle nie pomoże.

Zgadzam się. Bezpieczeństwo musi być zrównoważone z użytecznością. Twój pomysł może frustrować legalnych użytkowników (osoby, które chcesz chronić), ponieważ utrudnia im dostęp do usług ukrytych za hasłem.
Zauważ również, że jeśli serwer DAJE stan pośredni „jak dotąd”, to hasła są w rzeczywistości słabsze niż tylko „A B C”. Czy to nie stało się z WPS, czy był to jakiś inny protokół?
„Z surowego punktu widzenia bezpieczeństwa, Twoje hasło to po prostu„ A B C ”” -> Zdecydowanie się z tym nie zgadzam. Ponieważ nie masz pojęcia, który z nich się nie powiódł, a jeśli to zrobiłeś, możesz potrzebować 10 bajtów do przechowywania pierwszego hasła. I nie osiągniesz punktu, w którym go znajdziesz. Jeśli ograniczysz je do 30 znaków, hasło może mieć długość 31 znaków. I zmarnowałeś swój czas. Albo jeden może być 10, następny 50, a następny 1. Ale nie będziesz wiedział.
@kutschkem, który jest dokładnie poprawny.
@IsmaelMiguel To jest dokładnie taka sama sytuacja, jak próba odgadnięcia pojedynczego hasła „ABC” i niewiedza, który pojedynczy znak jest błędny lub czy wszystkie z nich są błędne, lub… Kusi mnie, że to pomaga, ale tak 't.
@IsmaelMiguel Nie, napastnik będzie po prostu próbował [„A”, „A”, „A”], [„A”, „A”, „B”] itd., Aż dotrze do [„A”, „B” ","DO"]. Nie musi próbować każdej kombinacji na pierwszym polu, zanim przejdzie do drugiego. Gdybym ci powiedział, że moje hasło zawierało trzy spacje, nie byłbyś sparaliżowany, próbując dowiedzieć się, co pojawiło się przed pierwszą spacją. Najpierw wypróbowałbyś najkrótsze możliwości.
To prawda, ale tego nie wiesz. Hasło „A” mogłoby brzmieć „zszywki smażonych ziemniaków kukurydzianych”, a jego odgadnięcie zajęłoby ** BARDZO ** dużo czasu.
@IsmaelMiguel innymi słowy, odgadnięcie długich haseł zajmuje więcej czasu.
Właściwie jest to odpowiednik czegoś takiego jak A + "[ENTER] + B +" [ENTER] "+ C, ponieważ zwykłe wpisanie ABC w pierwszym znaku zachęty prawdopodobnie nie zadziała. Liczba możliwych przypuszczeń byłaby taka sama jak ABC * (LengthOfABC-1) * (LengthOfABC-2), jeśli schemat zabrania haseł o zerowej długości na dowolnym etapie.
Mimo to masz kilka znaków przed „A” (65, jeśli się nie mylę). Każdy z nich może być częścią hasła.
@IsmaelMiguel Możesz nadal nie zgadzać się ze wszystkim, co ci się podoba, ale ponieważ członkowie społeczności próbowali ci to wyjaśnić za pomocą * kilku * różnych podejść, siła proponowanego schematu jest praktycznie nie do odróżnienia od łączenia indywidualnych haseł.
@StephenTouset Akceptuję to. Dla mnie, w moim przekonaniu, patrząc z innego punktu, jest to silniejsze niż łączenie haseł i próba znalezienia tylko jednego. W rzeczywistości powiedziałbym, że znalezienie 3 haseł jest prawie niemożliwe, w zależności od ich bezpieczeństwa indywidualnie.
Ale jest to dokładnie matematyczny odpowiednik połączenia tych trzech haseł. Jeśli Twoje „pierwsze” hasło to „123”, drugie to „456”, a „trzecie” hasło to „789”, osoba atakująca musi poświęcić tyle samo wysiłku, jakby próbowała odgadnąć * pojedyncze * hasło „123456789”. Z argumentem, że mogą nie wiedzieć, że to jest twój schemat, dotyczy to samego hasła; napastnik nie wie, że jest to hasło składające się z dziewięciu znaków (lub trzy z trzech znaków). Muszą wypróbować wszystkie kombinacje, aż znajdą właściwą.
Dla jasności, jeśli rozważasz wpisanie tego hasła, efektywne hasło to * dosłownie * `123 456 789`. Można argumentować, że osoba atakująca nie wiedziałaby, aby wcisnąć enter w tych dokładnych lokalizacjach, ale argument ten mógłby zostać użyty dla * dowolnego * znaku, który można tam wpisać. Nie różniłoby się to od tego, gdyby zamiast hasła było „123 | 456 | 789”. Rozważając dosłowny akt siedzenia przy klawiaturze i wpisywania tego hasła, zadaj sobie pytanie, co w jakiś sposób zapewnia klawiszowi Enter dodatkowe zabezpieczenie nad klawiszem `|`.
@StephenTouset Częściowo się z tobą zgadzam, teoretycznie `123 456 789` jest równoważne z` 123 | 456 | 789`, ale w praktyce pierwszy schemat wymaga 3 zapytań do serwera, podczas gdy drugi tylko jeden, nawet jeśli wszystko jest super szybkie, pierwsza opcja zajmuje więcej czasu, więc dodaje dodatkowe bezpieczeństwo (oczywiście też bym tego nie używał)
Coś w rodzaju „bcrypt” jest znacznie lepszym sposobem na spowolnienie napastnika, ponieważ pomaga to również, nawet jeśli osoba atakująca ma zaszyfrowane hasła. Niezależnie od tego, opóźnienie dwóch dodatkowych żądań do serwera można by w trywialny sposób zasymulować, wywołując „sleep”.
@StephenTouset Stwierdziłem również, że nie jest to dobre podejście, po prostu mówiąc, że nie można porównać kroku żądania / walidacji ze znakiem na haśle.
Justin
2015-02-19 14:55:49 UTC
view on stackexchange narkive permalink

Odniosę się tutaj do kilku kwestii.

Po pierwsze, zakładając, że osoba atakująca nie wie, że schemat hasła jest złym założeniem, a ty ' ponownie poprawne, że to bezpieczeństwo poprzez zaciemnienie. Jeśli każdy użytkownik może nauczyć się tego schematu logowania, osoba atakująca też może. Z tego powodu pukanie nie jest lepsze, niż gdyby było tylko jedno hasło ABC.

Możesz pomyśleć: „Brak większej liczby haseł zwiększa liczbę brutalnej siły zgaduje wykładniczo? ” Odpowiedź brzmi nie. Rozważmy alfabet o długości z i trzy hasła o długości a , b i c . Liczba możliwych haseł dla każdego z nich to odpowiednio za , zb i z c . Jeśli chcesz wypróbować wszystkie możliwe wartości każdego hasła w każdej możliwej kolejności, będziesz potrzebować za * z b * zc przypuszczeń, co jest równe z (a + b + c) . Tak się składa, że ​​długość pojedynczego hasła ABC to a + b + c , więc liczba wymaganych domysłów to także z (a + b + c) .

Istnieje również obawa, że ​​użytkownicy będą zdezorientowani i / lub sfrustrowani tym systemie, zwłaszcza jeśli mają problemy z zapamiętaniem swoich haseł. Ludzie mają dość problemów z zapamiętaniem jednego hasła dla każdej odwiedzanej witryny (i dlatego wiele osób ponownie używa haseł). Trzy hasła byłyby jeszcze trudniejsze do zapamiętania i nie zdziwiłbym się, gdyby niektórzy użytkownicy używali tego samego ciągu we wszystkich trzech.

Wymaganie trzech przesłanych formularzy do zalogowania z pewnością spowolni atak siłowy, ale równie łatwo możesz to osiągnąć, dodając opóźnienie w weryfikacji hasła po stronie serwera.

Zgadzam się z pozostałymi punktami, z wyjątkiem tego, że jest bardziej prawdopodobne, że atakujący przeoczy sekwencję używając brutalnej siły, jeśli nie zna schematu.
Normalny atak słownikowy najprawdopodobniej nigdy nie dotrze do A B C. Powodem jest to, że jeśli raz spróbuje się A lub B lub C bez powodzenia, nigdy więcej nie zostanie podjęta!
Wszystko w porządku, że myliłem się co do scenariusza, w którym napastnik nie zna schematu. Usunąłem to zdanie.
Zgadzam się z twoją aktualizacją, ale jestem prawie pewien, że ze względu na złożoność będziesz musiał przejść od „!” do '~' (znaki ASCII) aby PRZYNAJMNIEJ znaleźć jedną możliwą kombinację. Brak jednego hasła spowoduje powrót do hasła „A”. I zbyt często ponosisz porażkę i nie będziesz wiedział dokładnie, co się nie udało. Dla każdego znaku musisz przejść '!' do '~' miliard razy. Podwojona dla każdego hasła. Masz 3 punkty wejścia, każdy może być inny i zostanie cofnięty, jeśli jeden z nich się nie powiedzie. Albo znasz hasła, albo zostaniesz zablokowany na zawsze. Aż minęły 4 biliardy lat (lub znacznie więcej).
Nie mam ochoty wykonywać obliczeń matematycznych, aby dowiedzieć się _dokładnie_, ile prób lub ile czasu to zajmie, nie mogę, ponieważ tak naprawdę nie mam liczb, którymi mógłbym się bawić, a to i tak nie ma znaczenia. Zostawiam to ćwiczenie w nadziei, że przekonam Cię, że nie jest tak trudne, jak myślisz: ile spośród wszystkich możliwych wartości _ABC_ ma poprawną wartość _A_ jako przedrostka?
Nie musisz mnie przekonywać. Wciąż staram się znaleźć skrót, ale jedyne, co udało mi się znaleźć, to duży ból głowy. Myślę, że trafiasz we właściwe drzewo. Nie zgodzę się z tobą, ponieważ nie ma się z czym nie zgodzić, poza trudnością odgadnięcia haseł.
Można o tym myśleć jako o podciągach haseł pochodzących z alfabetu o długości „z”, a hasło „połączone” z nadzbioru tego alfabetu, a konkretnie z całego alfabetu plus pojedynczy ogranicznik (który reprezentuje wysłanie podłańcucha).
@corsiKa: Plus dodatkowe ograniczenie, że „połączone” hasło musi mieć dokładnie dwa wystąpienia separatora, plus być może ograniczenia w liniach „każde podhasło musi zawierać co najmniej jeden znak specjalny”. . . efektem końcowym może być to, że w rzeczywistości otrzymujesz * mniej * możliwych trzech haseł, niż gdyby było to po prostu jedno długie hasło.
Mike Scott
2015-02-19 14:02:30 UTC
view on stackexchange narkive permalink

To bezpieczeństwo poprzez zaciemnienie - jeśli zostanie powszechnie przyjęte, atakujący będą próbować tylko trzy razy. W tym momencie równie dobrze możesz mieć tylko jedno hasło, ale ustawić dłuższą minimalną długość hasła, aby mieć pewność, że jest tak długie, jak trzy połączone hasła.

+1, mimo że OP mówi: „Zdaję sobie sprawę, że to bezpieczeństwo przez zapomnienie”. Warto dodać, że jest to _tylko_ zabezpieczenie poprzez zaciemnienie, bez korzyści w stosunku do jakiejkolwiek innej metody. Możesz zamienić pola nazwy użytkownika i hasła i zachować te same etykiety lub zmienić nazwę pola hasła „urodziny”, istnieje milion opcji, które zmylą użytkowników w nazwie „bezpieczeństwo”. Najwyraźniej OP, choć rozumiejąc, że to _jest_ zabezpieczeniem przez zaciemnienie, nie rozumie, dlaczego jest to złe.
A co do tego, dlaczego to jest złe. Gdybym był zmuszony do korzystania z takiego systemu, pierwszą rzeczą, którą zrobiłbym, byłoby napisanie skryptu do wprowadzania hasła, aby zautomatyzować irytujący interfejs. Wtedy prawdopodobnie umieściłbym skrypt w moim publicznym repozytorium na githubie.
Stephen Touset
2015-02-19 14:09:41 UTC
view on stackexchange narkive permalink

Jest to nie do odróżnienia od hasła będącego po prostu A || B || C .

Jeśli atakujący nie wie, że używam „potrójnego hasła”, spróbuje każdego hasła tylko raz i najprawdopodobniej nigdy nie znajdzie poprawnej sekwencji. Tak nie jest w przypadku `A || B || C`.
Jeśli atakujący nie zna Twojego hasła, to `A || B || C`, będzie musiał raz wypróbować każde możliwe hasło i najprawdopodobniej nigdy nie znajdzie poprawnej sekwencji. Więc tak, tak jest. Jeśli atakujący ma „A”, „B” i „C”, przegrałeś mimo wszystko.
@Stephen Twoja odpowiedź nie jest zbyt jasna dla tych, którzy jeszcze tego nie wiedzą, czy możesz coś wyjaśnić, aby była to właściwa odpowiedź?
Nawet jeśli napastnik zna schemat, musi trzykrotnie wypróbować każde możliwe hasło. Jeśli hasło `A` to` 123`, hasło `B` to` 123`, a hasło `C` to` 1234`, aby uzyskać to hasło, musisz spróbować `0 | 0 | 0`,` 0 | 0 | 1`, `0 | 0 | 2`. A to jest najgorsze, ponieważ serwer nie powie, który z nich jest zły! Hasło mogłoby brzmieć „0 | 1 | 0”, a jego znalezienie zajęłoby głupio gigantyczną ilość czasu.
@IsmaelMiguel Część, którą twierdzisz, że jest gorsza, jest po prostu taka sama, jak używanie znacznie dłuższego sznurka. Przykład: załóżmy, że każdy z A, B, C może być liczbą jednocyfrową, 0-9. Wtedy jest 1000 możliwości dla A, B, C. To samo, co w przypadku 3-cyfrowego hasła.
@Jean-BernardPellerin Istnieje również dodanie znaków separatora. To jest A B C . Ściśle mówiąc, wprowadza do sekwencji 2 znaki separatora. Konkatenacja nie symuluje * końca * A i * początku * B itd.
@AviD Wydaje mi się, że ten wynik musi być ewidentnie oczywisty. Twoje hasło to * dosłownie * teraz `A B C`. Są teraz po prostu łączone za pomocą klawisza Return.
@StephenTouset Nie zgadzam się, ale fakt, że jest o to pytany - i kilka komentarzy - dowodzi, że jest inaczej ... FWIW Już dawałem Ci +1 ... :-)
Jeśli mam 3 hasła "AB" "BC" "CD", to połączone hasło to ABBCCD. Nie jest to oczywiście równoważne, stąd ta odpowiedź jest nieprawidłowa. „A”, a następnie „BBCC”, a następnie „D” to na przykład inne nieprawidłowe hasło w tym schemacie, ale konkatenacja jest taka sama. Separatory są kluczową różnicą, która sprawia, że ​​równoważność jest fałszywa.
Nie jest, w tym A \ n || B \ n || W rzeczywistości C \ n różni się od A || B || do
Arc
2015-02-20 04:34:50 UTC
view on stackexchange narkive permalink

Uwierzytelnianie dwuskładnikowe jest bardziej przyjazne dla użytkownika , ale bardziej bezpieczne.

Bez jednego hasło jest nadal niewiele mniej bezpieczne niż pukanie hasła.

Osoba atakująca, która może znaleźć Twoje hasło, prawdopodobnie dowie się również o Twoim schemacie pukania.

Wybór pukania przypomina wybór algorytmu. Potraktuj to jako publiczne”.

Chociaż hasła zabezpieczone przez niezrozumiałość, można je bardzo łatwo zastąpić zupełnie innymi .

To powiedziawszy, istnieją schematy, które są nieco podobne do Twojego „pukania”, ale są nieco bardziej przydatne:

  • Losowo żądanie jednego z wielu sekretów (haseł, wyrażeń, iTAN...).
    Jest to znacznie szybsze niż wpisanie wszystkie sekrety i jest bezpieczniejsze, ponieważ atakujący poznaje tylko jeden sekret naraz (który może zostać unieważniony po użyciu).
    Szanse na możliwość uwierzytelnienia przez atakującego jest skorelowana ze względną liczbą sekretów, które zna, ale wymaga od użytkownika znajomości wszystkich sekretów i ich order .
  • Input Timing , tj. analizowanie czasów pomiędzy i dla wszystkich haseł znaków podczas wpisywania przez użytkownika.
    Trudniej jest się tego dowiedzieć i udawać niż pukanie i zostało kilka razy zbadane w IIRC. Wady:

    • Czas różni się nieznacznie za każdym razem , gdy użytkownik wprowadza hasło, chociaż może to wystarczyć do rozróżnienia użytkowników.
    • Czas może nawet ulec całkowitej zmianie, jeśli użytkownik zdecyduje się wprowadzić go w inny sposób, np. w fazie początkowej po wybraniu hasła (użytkownik wciąż uczy się go wpisywać) lub gdy nie może wprowadzić go tak jak zwykle (kontuzje, trzymanie kanapkę w jednej ręce ...)

Zabezpieczenie przez zaciemnienie jest dobre, gdy możesz szybko zmodyfikować swój schemat blokowania , tj. „ zmień labirynt ” niewielkim wysiłkiem , a nie betonu, z którego są wykonane jego ściany (upewnij się, że labiryntu nie można ominąć ).

Stary, nadużywanie śmiałości sprawia, że ​​jest to prawie nieczytelne.
Nie powiedziałbym, że hasła są zabezpieczeniem przez zapomnienie. Każdy bezpieczny system potrzebuje jakiejś „rzeczy”, której potrzebujesz, aby uzyskać dostęp - albo czegoś, co wiesz, co masz, albo kim jesteś. Aby zaklasyfikować coś jako zabezpieczenie przez zaciemnienie, należy spojrzeć na algorytm, a nie na „klucz”.
Nie definiuję słów. Z [Wiktionary] (https://en.wiktionary.org/wiki/obscurity): 2. _Stan nieznany; rzecz nieznana._ 3. _ Cecha trudności do zrozumienia; rzecz trudna do zrozumienia. To ostatnie jest tym, do czego ludzie zwykle odnoszą się w obraźliwy sposób, mówiąc o „bezpieczeństwie przez zapomnienie”, ale wszystko, co jest trudne do „uchwycenia”, można uznać za niejasne.
fooot
2015-02-19 21:39:39 UTC
view on stackexchange narkive permalink

Koncepcja pukania do portów nie ma bezpośredniego zastosowania do logowania się do witryn internetowych. Przynajmniej nie w takim sensie, jaki sugerowałeś. Dzięki pukaniu portów łączysz się z różnymi portami w określonej kolejności, aby otworzyć żądany port. W Twoim przykładzie umieszczasz wszystkie hasła w jednej witrynie. Jak zauważyli inni, tak naprawdę nie różni się to od łączenia wszystkich haseł. O ile wszystkie używane hasła nie są bardzo długie, równie dobrze możesz je po prostu połączyć i użyć jednego hasła. Słabość tej metody też nie jest tak pomocna, bo ktoś będzie musiał ją zbudować i ktoś będzie musiał wiedzieć, jak z niej korzystać, co wystarczy, aby napastnik dowiedział się, jak to działa. Poza tym właśnie wyjaśniłeś to światu.

Zamiast tego możesz użyć różnych stron internetowych do reprezentowania różnych portów. Załóżmy, że próbujesz zalogować się do witryny D. Kiedy łączysz się z witryną D, nie wyświetla ona nawet strony, chyba że widzi, że zalogowałeś się do witryn A, B i C, poprawnie iw tej kolejności. W ten sposób osoba atakująca musiałaby nie tylko złamać różne hasła, ale musiałaby to zrobić w 3 różnych witrynach i wykorzystać we właściwej kolejności, aby uzyskać dostęp nawet do witryny D, gdzie byłoby wymagane inne hasło.

Nadal polega to na pewnej niejasności, ale łatwiej je odróżnić od zwykłego podzielenia hasła w jednej witrynie.

+1 do rozwiązania sedna problemu: proponowany schemat pukania haseł * nie * powiela schematu używanego do pukania do portów, więc zakładane korzyści nie przenoszą się.
PiTheNumber
2015-02-19 18:12:47 UTC
view on stackexchange narkive permalink

  • To oszukałoby standardowe ataki siłowe. Zautomatyzowane ataki z botnetów lub prostych narzędzi nie zadziałają po wyjęciu z pudełka.
  • W ten sposób można oszukać keyloggera. W dziennikach wyglądałoby na to, że użytkownik zapamiętał hasło za trzecim razem. Jeśli atakujący użyje tego hasła, nie zadziała. Ale tylko wtedy, gdy nie wie lub nie zgadnie, co się dzieje. Ale w tym przypadku i tak jest Twoją własnością.
  • Użytkownik jest zmuszony użyć wielu słów => dłuższe hasło.

Negatywne

  • Zbyt skomplikowane dla zwykłego użytkownika.
  • Podobnie jak pukanie portów, jest to częściowo zabezpieczenie poprzez zaciemnienie. Jeśli atakujący wie, że może zaadaptować atak.

Ogółem

Podobnie jak pukanie do portów, dodaje tylko niewielką przewagę nad prostymi atakami. Główną korzyścią byłoby dłuższe hasło, a zasady dotyczące haseł mogą być łatwiej egzekwowane.

W każdym razie, jeśli Twoi użytkownicy nie mają nic przeciwko, możesz to zrobić. W końcu liczy się każda funkcja bezpieczeństwa. Ale nie radziłbym tego robić.

Cóż, ataki brutalnej siły, które by oszukał, i tak są nieco bezcelowe. Biorąc pod uwagę rozsądny limit szybkości logowania (np. 1 na sekundę) brutalna siła jest dość daremna. Z drugiej strony, atak offline na skradzioną bazę danych nie zostanie powstrzymany, ponieważ jest oczywiste, że należy użyć trzech haseł i jakie są ich skróty, więc różnica jest nieczytelna.
Ogre Psalm33
2015-02-19 22:26:42 UTC
view on stackexchange narkive permalink

Uwaga: ta metodologia jest już używana w programach odzyskiwania hasła w niektórych częściach branży. Jeśli zapomnisz hasła, możesz użyć swojego adresu e-mail, aby zainicjować sekwencję osobistych pytań w celu odzyskania hasła (choć często jest to tylko jedno pytanie). Jest ona bardziej przyjemna dla użytkownika, zwykle ograniczając kontekst do sekwencji dobrze dobranych pytań, które dają użytkownikowi możliwość użycia (miejmy nadzieję) tajnych, ale dobrze znanych odpowiedzi.

Ponadto niektóre z lepszych banków zapewnia dodatkowy zestaw pytań zabezpieczających, jeśli nie rozpoznają komputera, z którego się logujesz (w tym samym duchu, co wspomniany powyżej schemat odzyskiwania hasła).

Na przykład:

  Wpisz swoje hasło: ***** Twój komputer nie jest rozpoznawany, odpowiedz na następujące dodatkowe pytania: W jakim mieście dorastała Twoja mama? *********Jaki jest Twój ulubiony film? *************  

Może to umożliwić doświadczonym użytkownikom udzielenie dość niejasnych odpowiedzi na szereg pytań, które wybiorą, jednocześnie umożliwiając łatwe- do zapamiętania sekwencji „haseł”. Oczywiście typowi użytkownicy mogą nadal używać łatwych do odgadnięcia odpowiedzi na pytania dotyczące „nierozpoznanego komputera”, ale i tak obowiązek podania dobrych haseł spoczywał na użytkowniku.

enter image description here

Oczywiście dodanie pytań zabezpieczających, na które odpowiedzi są w zasadzie hasłami, których celem jest łatwe odgadnięcie przez użytkownika, po prostu osłabia cały system, niż gdybyś miał tylko jedno hasło. (Zakładając, że typowy użytkownik postępuje zgodnie ze wskazówkami w interfejsie użytkownika i nie wybierze przypadkowych odpowiedzi.) Obciążenie jest dzielone między użytkownika i projektanta - jeśli system jest bezpieczny tylko z dobrym hasłem zapasowym, przynajmniej poinstruuj użytkownika wybrać jeden!
Każdy bank, który nadal używa pytań zabezpieczających jako jedynej kopii zapasowej, może być „lepszy” niż inny bank, ale pod względem bezpieczeństwa jest to straszne. Mój naprawdę zrobił na mnie wrażenie, stopniowo przechodząc od wszystkich do wymagających uwierzytelniaczy i odcisków palców głosu do obsługi telefonu.
Uwierzytelnianie wieloskładnikowe jest zdecydowanie lepszą opcją, ale niestety większości banków jeszcze tam nie ma, przynajmniej o ile próbowałem. Ale nawet moja żona, która w żadnym wypadku nie jest osobą techniczną, wiedziała wystarczająco (nawet jej nie mówiłem), że kiedy wybrała pytanie zabezpieczające „Ulubiony zwierzak?”, * NIE * powinna podawać naszego psa Fido jako odpowiedzi (używa innej, trudniejszej do odgadnięcia, niezwiązanej ze zwierzakiem odpowiedzi, którą łatwo zapamiętuje). Wiele osób jest mądrzejszych, niż im się wydaje, ale niestety muszę przyznać, że wielu nie.
Muszę również zwrócić uwagę na subtelną różnicę w „zabezpieczonych hasłach”, że tak powiem. Ich celem jest sprawienie, aby odpowiedzi były łatwe do odgadnięcia przez * określonego * użytkownika, ale trudne do odgadnięcia przez innych (niestety nie każdy implementuje je w ten sposób: „Ulubiony kolor?” * NAPRAWDĘ ??? *)
Osobiście nienawidzę tego rodzaju systemów, przede wszystkim nigdy nie pamiętam, JAKIE pytanie wybrałem. Chyba że zapiszę je lub wybiorę zawsze takie same. Na koniec umieszczam losowe dane, a to tylko zwiększa wektor ataku.
@OgrePsalm33 Cóż, po poprawieniu projektu, aby był bardziej bezpieczny, tak naprawdę nie mówisz o słusznie złośliwym pytaniu bezpieczeństwa. (Tj. Rodzaj, który aktywnie prosi o informacje, które prawdopodobnie można znaleźć, patrząc na ich stronę na Facebooku). Chodziło mi o to, aby projekt funkcji bezpieczeństwa nie wymagał od użytkownika robienia czegoś przeciwnego do tego, co mu powiedziano. (Np. Twoja żona.) Moim osobistym ulubionym póki co jest podpowiedź do hasła OS X, gdzie używam synonimów słów z mojego hasła, co powinno wystarczyć do ożywienia mojej pamięci; jednak to może nie być odpowiednie dla banku
Dewi Morgan
2015-02-21 10:33:20 UTC
view on stackexchange narkive permalink

ZALETY : Ten system ma pewne zalety z uwierzytelnianiem dwuskładnikowym.

1) Większość przeglądarek i systemów zapisywania haseł go nie obsługuje , więc zapamięta co najwyżej tylko jedno hasło. Więc przynajmniej nie będzie przechowywane gdzieś w postaci zwykłego tekstu.

2) Osoby używające wszędzie tego samego hasła będą musiały użyć co najmniej dwóch haseł, które nie są udostępniane innym witrynom.

WADY : system jest jednak ogólnie wadliwy i twierdzę, że jest gorszy niż uwierzytelnianie za pomocą jednego hasła.

1) Ponieważ ich preferowane, chronione hasłem systemu przechowywania haseł, którego używają do ważniejszych haseł, nie można użyć, są szanse, że użyją czegoś mniej dobrego dla tego jednego hasła. Post-it, plik tekstowy, cokolwiek.

2) Inni twierdzili, że jest to tak silne, jak hasło „ABC”. Nie jest. Powiedziałbym, że w najgorszym przypadku jest tak silne, jak hasło „A”.

Dzieje się tak, ponieważ ja (i typowy użytkownik) używalibyśmy haseł „hasło1”, „hasło2”, "hasło3" Ten system generowania haseł daje mi taką korzyść, że mogę ctrl-c, ctrl-v hasło, a następnie po prostu wpisać numer.

Jeśli nie mogę używać podobnych haseł, to ograniczyłeś zakres możliwych haseł, które mogę mieć: zamiast tak bezpiecznych jak ABC, masz teraz takie same zabezpieczenia jak ABD, gdzie A! = B! = C: ułatwiłeś pracę crackera, zmniejszając ich domenę wyszukiwania.

I nadal wybrałbym dowolną przewidywalną sekwencję, na którą pozwalał skrypt wprowadzania hasła: być może „Jan”, „Lut”, „Mar”.

A ponieważ używałbym sekwencji naturalnej , prawdopodobnie byłaby to kolejność, jaką osoba do łamania haseł miałaby w słowniku, więc maszyna do łamania haseł w naturalny sposób wypróbuje te hasła we właściwej kolejności i wejdzie od razu. absolutnie uporządkowałby swój słownik w ten sposób.

3) Innym czynnikiem zmniejszającym bezpieczeństwo jest to, że aby zmienić hasło, musisz teraz zmienić trzy różne pola. To zniechęciłoby wielu do zmiany haseł.

4) To straszne, straszne doświadczenie użytkownika, jak zauważyli inni. Jeśli nie masz zniewolonej publiczności (pracowników, studentów itp.), Stracisz zwyczajowość dzięki temu wrogiemu użytkownikowi.

fluffy
2015-02-20 03:29:05 UTC
view on stackexchange narkive permalink

Jak powiedzieli inni, jest to równoznaczne z posiadaniem hasła, które jest równoważne z A \ nB \ nC lub podobnym. Jest jednak jedna zaleta tego schematu, o której mogę pomyśleć: pomaga zredukować liczbę rzeczy związanych z phishingiem; jeśli system akceptuje pierwsze hasło zamiast akceptować inne, to wiesz, że system jest zagrożony i po prostu logujesz się do logowania się na nazwę użytkownika i hasło.

Jednak w takim przypadku lepiej jest po prostu spróbować zalogować się za pomocą losowe hasło przed próbą zalogowania się przy użyciu rzeczywistego hasła; w przeciwnym razie właśnie przejąłeś znaczną część swojego hasła, ponieważ pierwsza trzecia (mniej więcej) została zarejestrowana przez zaatakowany system.

Peter
2015-02-19 16:34:13 UTC
view on stackexchange narkive permalink

Nie sądzę, żeby chodziło nawet o bezpieczeństwo poprzez niejasność, jak niektórzy powiedzieli - trzy hasła logowania są prezentowane publicznie, prawda? Oczywiście, poprawienie kilku narzędzi zajmie trochę pracy, ale nic nie jest zbyt trudne.

Jeśli chodzi o złożoność brutalnej siły. Liczba możliwości jest taka sama, jak w przypadku posiadania jednego hasła o długości A + B + C . Z tego powodu jedyną obroną, jaką uzyskujesz w tym schemacie, jest początkowo trochę frustracji atakującego. Co więcej, gdyby schemat stał się powszechny, standardowe narzędzia szybko by się dostosowały.

Login z 3 hasłami nie jest udostępniany publicznie. Wygląda jak standardowy identyfikator użytkownika, hasło logowania. Oprócz poświadczeń {identyfikator użytkownika, hasło} zamiast poświadczeń masz poświadczenia {identyfikator_użytkownika1, hasło1, identyfikator_użytkownika2, hasło2, ...}. Wpisujesz identyfikator użytkownika1, hasło1, a system „odrzuca” Cię, ale potajemnie rejestruje pokonane przez Ciebie przeszkody 1. Wpisujesz identyfikator użytkownika2, hasło2 i system „odrzuca” Ciebie, ale potajemnie rejestruje pokonane przeszkody 2. Po przejściu ostatniej system wpuszcza. Powiedziawszy to, nie jestem zachwycony.
@emory, z pewnością, ale chcę powiedzieć, że użytkownicy systemu są w pełni świadomi tego schematu - tak samo jak atakujący.
Jeśli baza użytkowników jest mała (np. Tylko ja), pukanie do hasła jest zasłonięte, ale nadal nie jest zalecane. Jeśli baza użytkowników jest duża, pukanie do hasła jest okropne. Domyślnie założyłem, że baza użytkowników jest niewielka.
Cort Ammon
2015-02-20 01:06:05 UTC
view on stackexchange narkive permalink

Jak wiele osób wspomniało, w przypadku ataków dedykowanych nie jest to ani silniejsze, ani łatwiejsze / trudniejsze do zapamiętania niż połączenie haseł. Istnieje jednak pewna wartość bezpieczeństwa operacji (OPSEC), która jest niezależna od siły hasła. Niewielka wartość, pamiętajcie, ale jako ktoś, kto spędza dużo czasu w witrynie Worldbuilding Stack Exchange, moja wyobraźnia oszalała.

Zastanów się, czy usługa nie jest być ograniczone tylko do autoryzowanych użytkowników, ale chcesz zapobiec przypadkowemu potknięciu się o jego istnienie. Nie jest to już prosty problem entropii, ale raczej problem teorii informacji szpieg-szpieg. Twoim zadaniem jest teraz zminimalizowanie stosunku sygnału do szumu (SNR) każdego, kto spojrzy na wprowadzone hasło. Nie ma to teraz związku z siłą hasła.

Jednym ze sposobów byłoby skonfigurowanie pozornego zachowania. Spraw, aby wyglądało na to, że jest to logowanie do innego systemu. Tylko konta z odpowiednimi uprawnieniami są przekierowywane do znaczącej zawartości. Możesz nawet pozwolić innym zarejestrować się w swoim fikcyjnym projekcie, aby ludzie mogli się rozejrzeć i zaspokoić ich ciekawość.

Jednak teraz rozmawiamy o szpieg przeciwko szpiegowi. Ktoś się zorientuje, że James Bond naprawdę nie jest zbyt zainteresowany forum omawiającym najnowsze trendy w gumowych kaczuszkach i zacznie się wścibiać. James Bond jest dobry w nieujawnianiu informacji, ale w pewnym momencie, z bronią przyłożoną do głowy swojej [ostatniej] dziewczyny, będzie podejrzane, jeśli nie ujawni doktorowi NoGood swojego hasła do forum. Dr NoGood nie jest głupcem; on to rozgryzie.

Więc skonfigurowaliśmy Jamesa z dwoma hasłami. Jeden wpuszcza go na zwykłe forum gumowej kaczuszki, a drugi do ściśle tajnego symulatora pocisków nuklearnych. Nie możemy tutaj zignorować prawdziwego zabezpieczenia hasłem. Jego hasło do symulatora pocisków jądrowych będzie musiało być długie: tak długo, jak połączenie twoich trzech haseł. Jego hasło jest prawdopodobnie krótsze. Dobrze też, bo ktoś już wcześniej widział, jak logował się na swoje konto. Wiedzą, ile postaci ma zacząć brutalną siłę. Nie chcemy, aby przypadkowo znaleźli bezpieczne hasło, zanim znajdziemy kaczuszkę.

Biorąc więc pod uwagę, że nadal jest tajemnicą, że symulator rakietowy istnieje, zwrócenie „nieprawidłowego hasła” w części może zniechęcić brute-forcers od kontynuowania. Dodatkowo możesz dokonać ogromnego odkrycia, gdy James „dwukrotnie wpisze błędne hasło”, zanim ściana obok niego nagle otworzy się, by odsłonić kryptę za nią.

FYI, późny system Truecrypt umożliwia utworzenie ukrytej partycji, w której jedno hasło odszyfrowuje dysk, aby utworzyć ważne pliki, które nie są dla Ciebie ważne, oraz drugie hasło do odszyfrowania ukrytej partycji na dane, które naprawdę potrzebujesz zachować sekret. Dzieje się tak, aby można było zaprzeczyć.
Vynce
2015-02-20 03:58:12 UTC
view on stackexchange narkive permalink

„Im mniej ruchomych części, tym mniej może się nie udać”.

Oprócz tego, że nie zapewnia żadnych znaczących korzyści, ten pomysł jest bardziej skomplikowany do wdrożenia niż pojedyncze hasło. W związku z tym istnieje więcej potencjalnych punktów awarii. Na przykład ...

W zależności od tego, jak został zaimplementowany, może pozwolić na atak typu odmowa, w którym Malcolm wysyła hasło X w regularnych odstępach czasu. Jeśli tak pomyśli, że przerwie uzasadnioną próbę, system otrzyma A X B C i odmówi Ci wejścia. Podobnie, jeśli wysyła hasło C zaraz po wysłaniu A B, wtedy system wpuści go, a nie ciebie.

Atak czasowy odpowiedzi może być w stanie dowiedzieć się, że A było poprawnym pierwszym hasłem w A B C, gdzie nie zauważyłby, że D jest przedrostkiem DEF z jednym hasłem.

PressingOnAlways
2015-02-21 04:08:42 UTC
view on stackexchange narkive permalink

Aby dodać do wszystkich innych świetnych odpowiedzi, ten rodzaj schematu ochrony hasłem nie zapewniłby żadnej ochrony przed keyloggerami lub atakami typu man in the middle. Ponieważ nadal umieszczasz swoje hasło w sekwencji, keylogger może odtworzyć twoje działania i nadal uzyskać autoryzację. Uwierzytelnianie dwuskładnikowe, zgodnie z sugestią @Archimedix, byłoby najskuteczniejszym sposobem złagodzenia tego problemu.

Keylogger byłby zdezorientowany z powodu podania hasła. Keylogger musiałby wiedzieć o schemacie, aby nie dać się zmylić. Tak więc, dopóki utrzymywano „Obscurity”, będzie działać.
Pamiętaj, że keylogger, który w kółko zgłasza te same trojaczki przesłanych haseł, będzie działał, aby rozwiać tę niejasność.
Kinjal Dixit
2015-02-25 16:12:53 UTC
view on stackexchange narkive permalink

Jak wspominali inni, funkcjonalnie jest to to samo, co jedno długie hasło. Aby implementacja była mniej zagmatwana, można ją zaimplementować, zadając wszystkie trzy hasła na tym samym ekranie.

Coś w tym zakresie jest wykonywane przez mojego brokera online, który pyta o hasło członka i hasło handlowe podczas logowania. Aby się zalogować, musimy uzyskać prawidłowe oba hasła. Poza tym muszę zmieniać swoje hasło członkowskie mniej więcej co 10 dni i są zasady, aby nie powtarzać poprzednich trzech haseł itp.

Mój bank ( ICICI Bank) został wcześniej wdrożony dwa hasła, jedno do przeglądania w celu zalogowania się i uzyskania dostępu do informacji, a drugie do zawarcia transakcji w dowolnym momencie wykonania czynności, która skutkowałaby transakcją finansową. Moja karta debetowa Visa jest również zabezpieczona przez system, który nazywają 3-D Secure, w którym niezależnie od bramki płatności zabierają mnie do swojej witryny, aby wprowadzić hasło w celu zakończenia transakcji. Wiem, że to prawdziwa witryna Visa, ponieważ pozwalają mi dostosować wyświetlany komunikat.

Pomysł nie jest więc bezprecedensowy, chociaż nie został wdrożony w dokładnie taki sam sposób, jak mówisz. Dodanie wielu haseł jest czymś, o czym przynajmniej bankierzy i maklerzy wydają się być przekonani.

„Wiele haseł” to nie to samo, co „wiele haseł, w przypadku których nie potwierdzisz poprawności, dopóki wszystkie nie zostaną wprowadzone we właściwej kolejności”. Jest jeszcze słabsze, ponieważ atakujący może jechać pojedynczo - siła jest mniej więcej taka sama, jak siła najdłuższego pojedynczego hasła (patrz: WPS).
F. Hauri
2015-02-28 02:00:34 UTC
view on stackexchange narkive permalink

Koniec z bezużyteczną złożonością techniczną

Zgodnie z wcześniejszą poprawną odpowiedzią,

  A \ nB \ nC  

to w przybliżeniu to samo co

  ABC  

(a może lżejsze, jeśli chodzi o odpowiedź @ Marka, o sekwencji Bruijna ).

Stamtąd, jeśli naprawdę chcesz zachować swój sekret:

  1. Używaj standardowych narzędzi, mocno przetestowanych przez jakiś czas. (Jeśli nie masz pewności, wolisz udostępniać i pytać, zamiast używać niejasności).

  2. Dbaj o ich aktualność.

  3. Poinformuj użytkowników o hasłach (zobacz xkcd: Siła hasła i dyskusja na temat IS)

  4. Pamiętaj, że socjotechnika (w Wikipedii) to pierwszy sposób luk w zabezpieczeniach. (Kolejny słynny xkcd: Bezpieczeństwo).

  5. Monitoruj swój system i sprawdzaj dzienniki.



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...