Ich habe eine App, die durch eine vierstellige PIN geschützt ist, und der Benutzer hat fünf Anmeldeversuche erhalten, bevor das Konto gesperrt wird.
Jetzt möchte einer meiner Kunden die Sicherheit "stärken" und sich für eine andere Lösung einsetzen:
- sechsstellige PIN
- NEIN "gleiche Ziffer nebeneinander": zB: 11 3945 oder 39 55 94
- KEINE "drei laufenden Nummern": zB: 123 654 oder 53 789 3
Nun zur Frage: Welche Lösung ist die stärkste?
Ich kann die vierstellige Zahl ziemlich einfach berechnen, aber wie berechne ich die andere?
Vielen Dank!
Aktualisieren
Sie bekommen, wonach Sie fragen - besonders wenn Sie mit Mathematik arbeiten :)
Also, was ich gefragt habe, war die Anzahl der Kombinationen für beide Zahlenfolgen.
Beim Durchlesen der Antworten und Kommentare ist mir klar geworden, dass es wirklich egal ist. Wenn Sie 5 Vermutungen haben, spielt es keine Rolle, ob Sie 10.000 oder ~ 800.000 zur Auswahl haben. Wichtiger ist es, 1234 und den Tag der Geburt auszuschließen. In meiner Situation habe ich tatsächlich den Geburtstag des Benutzers, sodass ich etwas überprüfen kann.
Danke für eine tolle Diskussion!
quelle
Antworten:
Sie haben ein Statistikerforum um Hilfe zu dieser Frage gebeten, daher werde ich eine statistisch basierte Antwort geben. Es ist daher vernünftig anzunehmen, dass Sie an der Wahrscheinlichkeit interessiert sind, eine zufällige PIN zu erraten (für eine Definition von zufällig), aber das liest mehr in die Frage als angegeben.
Mein Ansatz wird darin bestehen, alle möglichen Optionen aufzuzählen, ohne sie einzuschränken, und dann die ungültigen Optionen zu subtrahieren. Dies hat jedoch eine scharfe Ecke, die als Einschluss-Ausschluss-Prinzip bezeichnet wird und der intuitiven Idee entspricht, dass Sie nicht zweimal dasselbe von einer Menge subtrahieren möchten!
In einer sechsstelligen PIN ohne Einschränkungen und mit einem Dezimalzahlensystem gibt es mögliche Kombinationen von 000 000 bis 999 999 :106 000000 999999: Jede Ziffer verfügt über 10 Optionen.
und an diesem Punkt ist es unklar, ob es ein "Umwickeln" gibt. Wenn ja, schließen wir auch ein
Jetzt kommen wir zu der scharfen Ecke, die das Einschluss-Ausschluss-Prinzip ist. Wir haben den Satz aller sechsstelligen PINs in drei Sätze unterteilt:
A. Zulässige PINs B. Ungültige PINs aufgrund "benachbarter Ziffern" C. Ungültige PINs aufgrund "aufeinanderfolgender Ziffern"
Dies kann auf verschiedene Arten geschehen:
Etwas fortgeschrittenere Ansätze würden grundlegende kombinatorische Ergebnisse und den grundlegenden Satz des Zählens nutzen, aber ich habe diesen Weg gewählt, da er die geringste technische Belastung für den Leser darstellt.
Die Falte von "fünf bis zur Sperrung" ist eindeutig der bessere Schutz vor unbefugtem Zugriff, da es entweder im 4-stelligen oder im 6-stelligen Schema eine sehr große Anzahl von Optionen gibt und sogar fünf verschiedene zufällige Vermutungen einen niedrigen Wert haben Erfolgswahrscheinlichkeit. Für eine gut gestellte Wahrscheinlichkeitsfrage ist es möglich, die Wahrscheinlichkeit eines erfolgreichen Angriffs zu berechnen.
Andere Faktoren als die Wahrscheinlichkeit von Zahlenfolgen können jedoch die Sicherheit des PIN-Mechanismus beeinflussen. Hauptsächlich neigen die Leute dazu, PINs nicht zufällig auszuwählen! Beispielsweise verwenden einige Personen ihr Geburtsdatum oder Geburtsdatum von Kindern oder eine ähnlich persönlich verwandte Nummer als PIN. Wenn ein Angreifer das DOB des Benutzers kennt, gehört es wahrscheinlich zu den ersten Dingen, die er versucht. Für einen bestimmten Benutzer sind einige Kombinationen möglicherweise wahrscheinlicher als andere.
* Die Sequenzen, die Sie auflisten, nehmen streng zu, und es ist unklar, ob sie sowohl zunehmen als auch abnehmen, wenn Sie "Drei-Lauf-Zahl" sagen.
quelle
Das Erhalten einer geschlossenen Formel erscheint komplex. Es ist jedoch recht einfach, sie aufzuzählen. Es gibt
568 916
mögliche Codes für die zweite Lösung. Das ist größer als die Anzahl der Lösungen mit einem vierstelligen PIN-Code. Der Code, um sie aufzulisten, ist unten. Obwohl nicht optimiert, dauert die Ausführung nur Sekunden.Hinweis. Ich nahm an, dass die Sequenz in aufsteigender Reihenfolge sein musste (was leicht geändert werden kann
three_running
)quelle