Pytanie:
Czy wysłane SMS-em kody bezpieczeństwa 2FA są celowo łatwe do zapamiętania?
Bob Kaufman
2017-12-12 00:11:34 UTC
view on stackexchange narkive permalink

Mam skonfigurowane 2FA na moim koncie bankowym. Kiedy loguję się, otrzymuję sześciocyfrowy kod w postaci komunikatora na telefon, który wpisuję na stronie internetowej. Te kody zawsze wydają się mieć dla nich wzór. Albo coś w rodzaju 111xxx, 123321, xx1212 itd.

Myślę, że te kody są celowo łatwe do zapamiętania na pierwszy rzut oka. Czy istnieje wspólna praktyka biznesowa / najlepsza praktyka, która mówi, że te kody mają wzór ułatwiający ich zapamiętanie?

Używam wielu kodów 2FA i nigdy nie zauważyłem takiego wzoru.Jasne, czasami pojawiają się powtarzające się cyfry, ale nie wydają się one pojawiać na tyle często, aby sugerować, że dzieje się coś dziwnego.Może być pouczające, aby śledzić swoje kody i przeprowadzić analizę statystyczną cyfr po zebraniu około stu.
Używam zarówno SMS-ów 2FA, jak i kodów aplikacji uwierzytelniającej i chociaż nie zauważam żadnego wzoru w kodach aplikacji uwierzytelniającej, zauważyłem, że te wysyłane SMS-em na mój telefon są często łatwe do zapamiętania.
Na marginesie (jest to stos informacyjny), czynniki wysyłane jako wiadomości SMS nie są uważane za bezpieczne drugie czynniki.Wiele systemów nie oferuje nic lepszego, ale jeśli masz możliwość skorzystania z aplikacji uwierzytelniającej lub czegoś, co wymaga rejestracji urządzenia, byłoby lepiej.Przykładowy artykuł na ten temat: https://techcrunch.com/2016/07/25/nist-declares-the-age-of-sms-based-2-factor-authentication-over/
Jeśli myślisz o wzorcu, są szanse, że nie będzie on miał zastosowania do twojego kodu, ale jeśli myślisz o kodzie, prawdopodobnie kod ma * jakiś * rodzaj wzorca.Kiedyś musiałem wygenerować losowe hasło Wi-Fi dla mojej mamy;Generowałem je, dopóki nie znalazłem takiego, o którym myślałem, że nie ma żadnych wzorców, które mogłaby skomentować.Potem powiedziała: „Czy wybrałeś ten, ponieważ ma w nim twoje inicjały?”
@TobySmith W aplikacji zauważam wzorce znacznie częściej niż w SMS-ach!
Spędziłem 10 minut na wpisywaniu identycznego pytania, zanim SO polecił twoje.Trochę mi przykro, że mnie pokonałeś, ale cieszę się, że nie jestem jedyny szalony.:)
Pięć odpowiedzi:
ScarySpider
2017-12-12 01:43:51 UTC
view on stackexchange narkive permalink

Też to zauważyłem i wydaje mi się, że jest to wynikiem tendencji ludzkiego mózgu do stosowania wzorców w przypadkowym hałasie. Wydaje się, że jest to bardziej powszechne, gdy próbuje się zapamiętać ciąg liczb.

Powiedziałbym, że to jest to.Te [OTP] (https://en.wikipedia.org/wiki/One-time_password#Methods_of_generating_the_OTP) są zwykle generowanymi losowo kodami, które starają się być jak najbardziej bezpieczne, a wprowadzenie wzorców w ich tworzeniu z pewnością byłoby luką w zabezpieczeniach.Zwróć też uwagę, jak krótkie są te liczby, w połączeniu z tym, o czym wspomniał @ScarySpider, sprawia, że łatwo je zapamiętać.
A gdy zaczniesz zauważać wzorce, [błąd potwierdzenia] (https://en.m.wikipedia.org/wiki/Confirmation_bias) przejmuje kontrolę.
Michael
2017-12-12 03:03:31 UTC
view on stackexchange narkive permalink

Około 85% sześciocyfrowych liczb losowych będzie miało co najmniej jedną powtarzającą się cyfrę, a 40% będzie miało powtarzającą się sekwencyjną cyfrę obok siebie. (Cieszę się, że moja matematyka została poprawiona.)

Te klucze są generowane przy użyciu standardowego algorytmu TOTP. Artykuł podsumowuje tę implementację, pokazując, że nie ma żadnego wysiłku, aby wygenerować niezapomnianą liczbę:

Zgodnie z RFC 6238, implementacja referencyjna jest następująca:

  • Wygeneruj klucz K, który jest dowolnym ciągiem bajtów i bezpiecznie udostępnij go klientowi.
  • Uzgodnij T0, czas systemu Unix, od którego rozpoczyna się liczenie kroków czasowych, oraz interwał TI, który zostanie użyty do obliczenia wartości licznika C (domyślnie jest to epoka Uniksa jako T0 i 30 sekund jako TI)
  • Zgadzam się z kryptograficzną metodą skrótu (domyślnie SHA-1)
  • Uzgodnij długość tokena, N (domyślnie 6)

Chociaż RFC 6238 zezwala na użycie różnych parametrów, implementacja Google aplikacji uwierzytelniającej nie obsługuje wartości T0, TI , metody skrótu i ​​długości tokenów różnią się od domyślnych. Oczekuje również, że tajny klucz K zostanie wprowadzony (lub dostarczony w kodzie QR) w kodowaniu base-32 zgodnie z RFC 3548.

Po uzgodnieniu parametrów generowanie tokena wygląda następująco:

  1. Oblicz C jako liczbę przypadków, gdy TI upłynęło po T0.
  2. Oblicz skrót HMAC H z C jako komunikatem i K jako kluczem (algorytm HMAC jest zdefiniowany w poprzednia sekcja, ale obsługuje ją również większość bibliotek kryptograficznych). K powinno być przekazywane bez zmian, C jako surowa 64-bitowa liczba całkowita bez znaku.
  3. Weź co najmniej 4 znaczące bity H i użyj go jako przesunięcia, O.
  4. Weź 4 bajty z H zaczynając od O bajtów MSB, odrzuć najbardziej znaczący bit i zapisz resztę jako (bez znaku) 32-bitową liczbę całkowitą, I.
  5. Token to najniższe N ​​cyfr liczby I w bazie 10. Jeśli wynik ma mniej cyfr niż N, uzupełnij go zerami od lewej strony.

Zarówno serwer, jak i klient obliczyć token, a następnie serwer sprawdza, czy token dostarczony przez klienta jest zgodny z tokenem wygenerowanym lokalnie. Niektóre serwery zezwalają na kody, które powinny zostać wygenerowane przed lub po bieżącej godzinie, aby uwzględnić niewielkie odchylenia zegara, opóźnienia sieciowe i opóźnienia użytkowników.

Nie ma powodu, aby hasło jednorazowe dostarczane przez komunikator internetowy używał tego rodzaju algorytmu.Najprawdopodobniej to tylko sześć losowych cyfr z / dev / random.
@Sneftel Ma to tę zaletę, że serwer nie musi przechowywać OTP;po prostu oblicza to, kiedy ktoś wchodzi.Obsługuje również fakt, że kod jest ważny tylko dla krótkiego okna.Jeśli używasz losowej liczby, musisz zapisać to, co wygenerowałeś i datę wygaśnięcia.Oczywiście każdy z nich działa równie dobrze przy braku drugiego czynnika.
@ChrisHayes Brak konieczności przechowywania sześciocyfrowego numeru przez kilka minut wraz z datą wygaśnięcia jest nieistotną zaletą.Są to rzeczy, które i tak muszą być przechowywane na potrzeby sesji.
Nie możesz prawdopodobnie wiedzieć, czy nienazwany vank używa TOTP, czy nie, więc zabezpieczyłbym to stwierdzenie.Ale +1 za wykonanie matematyki.
-1 dla nieuzasadnionych roszczeń przedstawionych jako fakty
@Sneftel Chociaż jest w 100% prawdą, że „hasło jednorazowe dostarczane przez komunikator” nie * musi * używać wyżej opisanego algorytmu, ale * ogólnie *, gdy ludzie odwołują się do 2FA i OTP, powyższy algorytm jest zaimplementowany i używany.To całkiem bezpieczne założenie.Ale tak, jeśli musisz podchodzić do tego pedantycznie, to prawda, że * nie musi * odnosić się do RFC 6238. Pozostaje nam zatem to, dlaczego cyfry wydają się mieć wzór i dlategoZgadzam się na oba wyjaśnienia (RFC 6239 lub / dev / random) z [obecnie akceptowaną odpowiedzią] (https://security.stackexchange.com/a/175278/3992).
Kody tekstowe IME są częściej generowane za pomocą HOTP niż TOTP, jeśli cokolwiek.Trudno jest wiedzieć, jak szybko kod nadejdzie i należy go zaakceptować;nie chcesz również, aby dwa żądania w tym samym okresie generowały ten sam kod.
@otus, dobra uwaga.Przeczytałem „Komunikator na moim telefonie” jako powiadomienie pochodzące z aplikacji mobilnej banku, która prawdopodobnie byłaby TOTP, ale po ponownym przeczytaniu zdaję sobie sprawę, że OP prawdopodobnie oznaczał wiadomość tekstową.
** Człowieku ** Po prostu zrobiłem matematykę dla komentarza, przewinąłem w dół i stwierdziłem, że pokonałeś mnie.Od jednej przypadkowej osoby w Internecie do drugiej: moja matematyka zgadza się z twoją matematyką.To powinna być wystarczająca odpowiedź dla każdego: jeśli Internet mówi, że to prawda, to jest to prawda.
Tim
2017-12-14 09:09:53 UTC
view on stackexchange narkive permalink

W telefonie miałem około 90 kodów weryfikacyjnych z różnych firm. 62 z nich miało 6 cyfr. Oto liczba każdej cyfry:

Prawdopodobnie niewielkie odchylenie w kierunku 1,8 i 9? Niemal na pewno tylko szum w danych (62 to mała próbka).

A co z dwucyfrowymi?

enter image description here Pierwszy wykres to tylko dwucyfrowe na dwucyfrowych granicach (np. AABBCC) - więc spodziewalibyśmy się, że każda para pojawi się około 1,86 razy na 186 możliwych pozycjach cyfr. Drugi to dowolne miejsce docelowe (tj. XXX99X liczy się jako dwucyfrowa). Spodziewalibyśmy się, że każda para około 3,1 razy w 310 miejscach docelowych.

Nie wydaje się, aby było jakieś oczywiste odchylenie z dużo większą liczbą dwucyfrowych cyfr niż nie dwucyfrowe cyfry zaznaczone na pomarańczowo. W przypadku tych ostatnich danych spodziewalibyśmy się około 31 dwucyfrowych cyfr i otrzymalibyśmy 27. Wydaje się to rozsądne.

Oczywiście nie wyklucza to innych „nielosowych” wzorców - ale szczerze mówiąc, ludzie prawdopodobnie szukają wzorców - spójrz na te liczby, wszystkie pobrane z mojej aplikacji 2FA: 365 595, 111 216, 566 272, 468 694, 191 574, 833 043.

Głosowany za, ponieważ lubię wykresy.
schroeder
2017-12-12 00:21:49 UTC
view on stackexchange narkive permalink

Mam nadzieję, że to przypadkowa szansa w Twoim przypadku. Jeśli istnieje wzór, osłabia to cały sens posiadania drugiego kodu.

Nie, celowo nie powinny być łatwe do zapamiętania i nie ma na to uogólnionego uzasadnienia biznesowego, chyba że otrzymali opinię, że ich użytkownicy mieli problemy z wpisaniem 6 liczb. Wtedy ktoś mógłby zrobić coś głupiego, ale mam nadzieję, że nie.

thomasrutter
2017-12-12 05:21:14 UTC
view on stackexchange narkive permalink

Ma to również związek ze sposobem, w jaki ludzie myślą o losowości. W prawdziwej przypadkowości powtarzające się cyfry i powtarzające się wzorce występują znacznie częściej, niż się spodziewamy. Kiedy ludzie proszeni są o utworzenie sekwencji cyfr, które „wyglądają” losowo, mają tendencję do unikania powtarzających się wzorców lub cyfr (a także innych dziwactw, takich jak nadużywanie „7” i zbyt małe używanie „0” i „2”, itp). Jeśli poprosisz kogoś o wybranie „losowej” liczby od 1 do 100, bardzo często będzie ona zawierać 7, a często 37 (lub 17). Możesz studiować numery loterii, które ludzie wybierają ręcznie, ponieważ (często) ludzie próbują wybrać coś losowo wyglądającego (na podstawie fałszywego przekonania, że ​​losowo wyglądające liczby mają większe szanse na wygraną w losowaniu).

Jeśli człowiek próbuje naśladować losowe rzuty monetą, będzie zmieniał się orzeł i reszka dużo częściej niż powtórzyć ostatni wynik, co pozwala przewidzieć ich następną wartość z dość dużą pewnością (> 50% szansa, że ​​ich następna wartość będzie być przeciwieństwem ich ostatniej).

Powtarzająca się cyfra lub sekwencja dwucyfrowa byłaby dość powszechna w prawdziwej losowej liczbie 6-cyfrowej (np. ~ 41% kolejnej powtarzanej cyfry, ~ 85% powtarzająca się cyfra w dowolnym miejscu) i bardzo rzadkie w przypadku „losowej” 6-cyfrowej liczby, o wymyślenie której poprosisz człowieka.

Wybór prawdziwie losowej liczby jest uzasadnioną strategią w loterii, ponieważ jest mniej prawdopodobne, że podzielisz się nagrodą z wieloma innymi osobami.Oczywiście, ponieważ większość loterii ma opcję „podaj mi naprawdę losowe liczby”, próba zrobienia tego ręcznie jest trochę głupia
To prawda i nie należy jej mylić z „przypadkowo wyglądającą” (dla człowieka) liczbą, która jest wadą loterii.Jeśli chodzi o uczestników loterii, przesądy odgrywają dużą rolę, ludzie mają „szczęśliwe” liczby itp.
@fjw OK, ale skąd wiesz, że ludzie wybierają losowo wyglądające liczby, ponieważ mają fałszywe przekonanie, że losowo wyglądające liczby mają większe szanse na wygraną niż wybieranie losowo wyglądających liczb w oparciu o uzasadnione przekonanie, że liczba losowa maksymalizuje ich zyski (w połączeniuz naszą niezdolnością do wybrania prawdziwie losowych liczb)?(W każdym przypadku +1 do odpowiedzi)
„Domyślnie” nie jest wybieranie własnych liczb i generowanie ich losowo.Wybieranie własnych liczb zawsze odbywa się z przekonaniem, że w jakiś sposób można zrobić coś lepszego niż generator liczb losowych, niezależnie od tego, czy chodzi o maksymalizację zysków, czy prawdopodobieństwo wygranej.Jeśli takie przekonanie jest takie, że można je otrzymać bardziej „losowo” lub wybrać lepsze „losowe” liczby niż liczby generowane automatycznie, to jest to fałsz.Przesądy odgrywają dużą rolę, a także pewną paranoję: że automatycznie generowane liczby są w jakiś sposób ustawione przeciwko tobie.


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...