Mam aplikację, która jest chroniona czterocyfrowym kodem PIN, a użytkownik otrzymał pięć prób zalogowania się przed zablokowaniem konta.
Teraz jeden z moich klientów chce „wzmocnić” bezpieczeństwo i opowiedzieć się za innym rozwiązaniem:
- sześciocyfrowy kod PIN
- NIE „ta sama cyfra obok siebie”: np .: 11 3945 lub 39 55 94
- NIE „trzykrotne liczby”: np .: 123 654 lub 53 789 3
Teraz pytanie: które rozwiązanie jest najsilniejsze?
Mogę obliczyć czterocyfrowe dość łatwo, ale jak obliczyć drugą?
Dzięki!
Aktualizacja
Dostajesz to, o co prosisz - szczególnie podczas pracy z matematyką :)
Zapytałem więc o liczbę kombinacji dla obu sekwencji liczb.
Po przeczytaniu odpowiedzi i komentarzy stało się dla mnie jasne, że to naprawdę nie ma znaczenia. Jeśli masz 5 domysłów, nie ma znaczenia, czy masz 10.000 lub ~ 800.000 do wyboru. Ważniejsze jest wykluczenie 1234 roku i dnia urodzenia. W mojej sytuacji mam dzień urodzenia użytkowników, więc muszę coś sprawdzić.
Dzięki za wspaniałą dyskusję!
źródło
Odpowiedzi:
Poprosiłeś forum statystyk o pomoc w tym pytaniu, więc udzielę odpowiedzi opartej na statystykach. Dlatego rozsądnie jest założyć, że interesuje Cię prawdopodobieństwo losowego odgadnięcia numeru PIN (w przypadku definicji losowej), ale to w większym stopniu dotyczy pytania niż podano.
Moje podejście polega na wyliczeniu wszystkich możliwych opcji bez ograniczania, a następnie odjęciu pustych opcji. Ma to jednak ostry róg, zwany zasadą włączenia-wykluczenia, co odpowiada intuicyjnemu pomysłowi, że nie chcesz odejmować tego samego od zestawu dwukrotnie!
i w tym momencie nie jest jasne, czy istnieje „zawijanie się”. Jeśli tak, uwzględniamy również
Teraz dochodzimy do ostrego rogu, którym jest zasada włączenia-wykluczenia. Zrobiliśmy zestaw wszystkich sześciocyfrowych PIN-ów w trzy zestawy:
A. Dopuszczalne kody PIN B. Nieważne kody PIN z powodu „sąsiadujących cyfr” C. Nieważne kody PIN z powodu „kolejnych cyfr”
Może to nastąpić na kilka sposobów:
Nieco bardziej zaawansowane podejścia wykorzystałyby podstawowe wyniki kombinatoryczne i fundamentalne twierdzenie o liczeniu, ale wybrałem tę drogę, ponieważ stanowi ona najmniejsze obciążenie techniczne dla czytelnika.
Zmarszczka „pięć do blokady” zdecydowanie lepiej chroni przed nieautoryzowanym dostępem, ponieważ w schemacie 4-cyfrowym lub 6-cyfrowym istnieje bardzo duża liczba opcji, a nawet pięć różnych losowych przypuszczeń ma niski prawdopodobieństwo sukcesu. W przypadku dobrze postawionego pytania dotyczącego prawdopodobieństwa możliwe jest obliczenie prawdopodobieństwa powodzenia takiego ataku.
Ale inne czynniki niż prawdopodobieństwo sekwencji numerów mogą mieć wpływ na bezpieczeństwo mechanizmu PIN. Przede wszystkim ludzie nie wybierają PIN-ów losowo! Na przykład niektóre osoby używają daty urodzenia lub DOB dzieci lub innego podobnego numeru osobowego jako numeru PIN. Jeśli atakujący zna DOB użytkownika, prawdopodobnie będzie to jedna z pierwszych rzeczy, które spróbuje. Tak więc dla konkretnego użytkownika niektóre kombinacje mogą być bardziej prawdopodobne niż inne.
* Sekwencje, które wymieniasz, ściśle się zwiększają i nie jest jasne, czy zwiększają się, czy maleją, gdy mówisz „liczba trzyprzestrzeniowa”.
źródło
Uzyskanie zamkniętej formuły wydaje się skomplikowane. Jednak ich wyliczenie jest dość łatwe. Możliwe są
568 916
kody dla drugiego rozwiązania. Który jest większy niż liczba rozwiązań z czterocyfrowym kodem PIN. Kod do ich wyliczenia znajduje się poniżej. Chociaż nie jest zoptymalizowany, jego uruchomienie zajmuje tylko kilka sekund.Uwaga. Zakładałem, że sekwencja musi być w porządku rosnącym (który można łatwo modyfikować
three_running
)źródło