Zauważyłem, że w niektórych bankach długość kodu jednorazowego (SMS) używanego do autoryzacji transakcji została wydłużona. Chętnie poznałbym uzasadnienie takiej decyzji - dlaczego 8 cyfr ma być bezpieczniejsze niż 6. W praktyce, a nie w jakiejś teorii. Bo jeśli chodzi o teorię...
Czy dłuższe jest lepsze?
No właśnie, jeśli chodzi o teorię, to w przypadku 6 cyfr mamy 1 000 000 możliwych kodów SMS. Zakładając, że atakujący ma 5 prób podania kodu przed zablokowaniem dostępu do konta ma on 0.000005 szans powodzenia. Co to oznacza w praktyce? Średnio raz na 200 000 prób atakujący będzie w stanie wykonać przelew po prostu "zgadując" właściwy kod SMS. Wydłużając kod o 2 cyfry dodajemy do tego dwa zera, czyli szanse powodzenia to 0.00000005 i zdarza się to raz na 20 000 000...
Jest różnica między 200 000 i 20 000 000? No jest, ale czy na pewno istotna? Według danych ZBP w 2013 roku istniało (teoretycznie) około 20 000 000 klientów mających dostęp do bankowości internetowej (Raport PRNews.pl: Rynek bankowości internetowej - III kw. 2013). Jeśli założymy, że wszystkie te konta zostały przejęte przez atakującego i na każdym z tych kont wykonuje on taki atak, to w pierwszym wypadku (kod 6 cyfr) ma szansę na 100 sukcesów, w drugim - na jeden.
Bardzo ciekawy jestem jak wygląda rozkład kwoty dostępnych środków na kontach, na tej podstawie możnaby szacować opłacalność takiego teoretycznego ataku. Mam jednak wrażenie, że jego koszty byłyby niewspółmierne do zysków...
Ma ktoś pomysł/informacje dlaczego kod o długości ośmiu cyfr miałby być realnie lepszy od tego o długości cyfr sześciu?
- jeśli kwota niska to kod krótszy
- jeśli był już przelew na takie konto przynajmniej miesiąc temu to kod krótszy
- jeśli "typowa" ilość przelewów w danym miesiącu, to kod krótszy.
Przy czym wydaje mi się, że 8 cyfr jest standardem od dawna.
Ale! Czy tak naprawdę użytkownikom sprawia różnicę, czy przepisuje 6 czy 8 cyfr? To jest narzut poniżej sekundy na transakcję... Skoro nikomu nie przeszkadza, czemu nie zrobić bezpieczniej.
http://upload.wikimedia.org/wikipedia/commons/8/8a/RSA_SecurID_Token_Old.jpg
http://www.terminally-incoherent.com/blog/wp-content/uploads/2014/04/rsa.png
Który jest bardziej czytelny?
Co do tokenów - nie widzę różnicy. Poważnie. Tzn. wiedziałem, że ze spacją łatwiej, bo zwróciłeś uwagę. IMVHO ten nowszy wydaje się prostszy, bo masz 2 liczby z tą samą końcówką...
Co do przepisywania to będę obstawał przy swoim. Dokładnie w takim scenariuszu użycia (przepisywanie kodu) wykorzystywane są tokeny. Z jakiegoś powodu ta dodatkowa przestrzeń została wprowadzona. Zakładam, że chodzi o czytelność oraz łatwość zapamiętywania. Można to w sumie zweryfikować eksperymentalnie. Ktoś chętny do przygotowania odpowiednich symulacji?
I dla przypomnienia: http://wampir.mroczna-zaloga.org/archives/993-wyniki-eksperymentu-ile-cyfr-jestes-w-stanie-zapamietac.html.
Tak, kod w wiadomości SMS nie znika, ale przenoszenie uwagi z monitora na telefon i odnajdywanie odpowiedniej pozycji w kodzie jest jednak trochę uciążliwe.
Co do uciążliwości - jakoś nie mam tego problemu. Ba, mogę nawet tak trzymać telefon, że widzę jednocześnie okno wpisywania i kod... Ostatnio - również bez problemu, choć sam się zdziwiłem - przepisywałem z SMSa... numer konta (notacja ze spacjami na szczęście).
Znowu: IMO problem jest sztuczny. Większym problemem z którym się spotkałem (nie tylko ja) jest krótki czas życia kodu SMS. Jeśli masz osobno telefon i komputer na dobrym łączu, to problemu nie ma, ale czasem klika się z jakiejś granicy zasięgu, z lossem, albo - jak kumpel - przekłada karty w telefonie, bo na jednej ma numer autoryzowany w banku, a na drugiej net. I z wprowadzenia kodu robi się wyzwanie.
Być może przy kodach ośmioznakowych faktycznie przydałaby się spacja (po 4 cyfrach, jak w numerze konta).
Akurat tutaj, moim zdaniem, łączą się dwie kwestie - jaki jest optymalny (i najbardziej powszechny) "chunk" informacji, który jesteśmy w stanie zapamiętać ORAZ jak długi zlepek cyfr jest najwygodniejszy do przeczytania.
Pytanie - w jaki sposób zapamiętujecie numery telefonów? Dla mnie najwygodniejszy schemat to XXX XX XX XX, jeśli ktoś poda mi mój własny numer telefonu w schemacie XXX XXX XXX to go nie poznam
Z tym, że numer telefonu to jednak trochę inny typ danych - nie zapamiętujesz na czas przepisania, tylko na dłużej. Skłaniałbym się bardziej do kont bankowych, jako analogii. Podział na grupy czterocyfrowe właśnie ze względu na ułatwienie przepisywania powstał...
678 12 32 32
Dlatego łatwiej mi to zapamiętać tak "dwójkowo", niż "trójkowo":
678 123 232
907 100 200 - zapamiętam trójkami
697 45 97 97 - dwójkami
Czyli pewnie szukanie podobieństw/powtórzeń. A na to chyba nie ma miejsca przy przepisywaniu z komórki.
Bank, z którego korzystam ma 8 cyfr od kiedy pamiętam.
To, co moim zdaniem w takim SMSie jest bardziej istotne to fakt pełnych danych operacji. Niestety mBank podaje tylko 4 pierwsze i 6 ostatnich cyfr numeru konta. Pokazywałeś kiedyś, że można wykupić całą pulę kont i jakie jest ile numerów kont z puli można do takiego SMSa dopasować.
Hint: rozkład normalny vs. rozkład równomierny.
Dla cyfr 0-9 odchylenie standardowe to ~3. Czyli ~70% wartości byłoby z przedziału 4,5+-3, czyli 2,3,4,5,6,7. Ew. jeszcze o 1 i 8 zahaczamy, zależnie od metody zaokrąglania, ale pomijam. A 4 i 5 występują tylko dwa razy częściej, niż 2 i 7. Uważam, że nawet wtedy nie ma dramatu przy ośmiu znakach. Spadniemy raptem jakoś w okolice miliona kombinacji dla rozkładu równomiernego.
Uzasadnienie? Bo generowanie wartości według określonego rozkładu jest trudniejsze
Zreszta, moze to jest 6 cyfr, a 2 to liczba kontrolna? Różnie ludziska kombinują (patrz sprawdzanie wps).
Tak, mi jest trudno zapamiętać ciąg 8 cyfr (zwłaszcza jak jest podawany bez grupowania), więc w moim banku robię to zawsze na raty. Pierwsze 4 cyfry, powrót i kolejne 4 cyfry. Co mi trochę doskwiera, ale winię za to moją pamięć krótkotrwałą.
Pytanie moje bierze się stąd, że widziałem pewien program w NG, gdzie na dużym lotnisku (niestety nie pamietam jakim), zmieniono numerację bramek. Z modelu liczbowego XX YY na model alfanumeryczny: litera + 2 cyfry (czyli skróciła sie notyfikacja). I od razu odnotowali poprawę percepcji pasażerów, którzy przestali sie gubić na lotnisku.
Więc pytanie laika: czy kod A9B5 jest łatwiejszy do złamania niż 8 cyfrowy?
4 litery+cyfry - 34^4 = 1.3 mln
Przy czym w praktyce wyklucza się w takiej sytuacji część zbioru znaków (usuwa się znaki mogące powodować niejednoznaczność odczytu, czyli pary "0" i "O", "1" i "I" itp.)
Moje pytanie było raczej w kontekście otrzymanego kodu jednorazowego SMS. W zasadzie nie słyszałem żeby ktoś robił przelew wymagający dodatkowej autoryzacji w serwisie telefonicznym i tą autoryzację wpisywał z klawiatury numerycznej telefonu na podstawie SMS. Bardzo niepraktyczne. A gdzie tu UX?