Das "stärkste Passwort"


11

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!


4
Aus historischer Sicht sollten Sie sich mit der Kryptoanalyse der Enigma-Maschine vertraut machen. Insbesondere hat der Enigma-Algorithmus niemals einen Buchstaben für sich selbst verschlüsselt. Dies wurde von den Ingenieuren als sicherer angesehen, hatte jedoch den Effekt, dass die Maschine erheblich weniger sicher war. Dies war einer der vielen Schritte, die es den Alliierten Mächten ermöglichten, das Rätsel zu lösen. Ich bin keineswegs ein Experte für Krypto, aber die allgemeine Vorstellung ist, dass Ihr Schlüsselbereich so groß wie möglich sein soll.
Sycorax sagt Reinstate Monica

2
Ich denke, das gehört zur Kryptographie , nicht hier.
Gung - Reinstate Monica

2
Casper, bitte klären Sie - sind Sie in erster Linie als Sicherheitsproblem besorgt (z. B. gibt es Überlegungen, die mehr als nur die Wahrscheinlichkeit betreffen), in welchem ​​Fall es anderswo besser passt - oder stellen Sie in erster Linie eine Wahrscheinlichkeitsfrage (welche) passt hier)?
Glen_b -State Monica

3
Theoretisch - wenn Sie sich ausschließlich auf Brute-Force-Angriffe konzentrieren - bedeutet mehr Möglichkeiten mehr Sicherheit, sodass Einschränkungen wie die Nicht-Gleiche-Ziffer oder Nicht-Run-of-3 die Anzahl der Möglichkeiten verringern und somit streng schwächer sind. Praktisch (wie User777 berührt) wählen die Leute jedoch keine zufälligen Pins. Wenn die Benutzer fauler als paranoid sind, wählen viele von ihnen möglicherweise Pins wie "000000" oder "123456", was die Sicherheit beeinträchtigt.
Gregor - wieder Monica

2
Ich stimme dafür, diese Frage (vorübergehend) als unklar zu schließen, da die Absichten des OP noch nicht offensichtlich sind. Ich würde es wirklich vorziehen, wenn die Frage von @ Glen_b beantwortet wird, damit wir wissen, ob dies als kombinatorische / Wahrscheinlichkeitsfrage oder als etwas behandelt werden sollte, das besser migriert werden kann.
Silverfish

Antworten:


8

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 :106000000999999: Jede Ziffer verfügt über 10 Optionen.

AAXXXXAXAAXAAXXXXXAAXXXXXAAXXXXXAA104104A1055×105

ABCXXX

  • 012XXX
  • 123XXX
  • 234XXX
  • 456XXX
  • 789XXX

und an diesem Punkt ist es unklar, ob es ein "Umwickeln" gibt. Wenn ja, schließen wir auch ein

  • 890XXX
  • 901XXX

103XABCXX.

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"

BC|S|=|A||B||C|,|S|=|A||B||C|+|BC|,BCBCBC

Dies kann auf verschiedene Arten geschehen:

  • AABCXX
  • ABCXDD

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.

1|S|

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.


1

Das Erhalten einer geschlossenen Formel erscheint komplex. Es ist jedoch recht einfach, sie aufzuzählen. Es gibt 568 916mö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)

N = 999999

candidates = range(N)

def same_consecutive_digits(x):
    x_string = str(x).zfill(6)
    for i in range(1,len(x_string)):
        if x_string[i] == x_string[i-1]:
            return True
    return False

def three_running(x):
    x_string = str(x).zfill(6)
    for i in range(2,len(x_string)):
        if int(x_string[i]) == int(x_string[i-1]) + 1 and int(x_string[i-1]) == int(x_string[i-2]) + 1:
            return True
    return False

def valid(x):
    return not same_consecutive_digits(x) and not three_running(x)

assert(same_consecutive_digits(88555))
assert(same_consecutive_digits(123))
assert(not same_consecutive_digits(852123))
assert(three_running(123456))
assert(not three_running(4587))
assert(valid(134679))
assert(not valid(123894))
assert(not valid(111111))
assert(not valid(151178))
assert(valid("031278"))

accepted = [i for i in range(N) if valid(i)]
print(len(accepted))

Im Code, aber nicht in Ihrer Beschreibung, ist die Annahme enthalten, dass PINs niemals mit der Ziffer "0" beginnen. Dies gilt normalerweise nicht für PINs oder Passwörter. Die richtige Antwort, die solche Nullen zulässt, lautet 568.916. Bedenken wir jedoch, dass die relevante Antwort in Betracht ziehen würde, dass Angriffe auf die PIN in diesem eingeschränkten Problem durch Ausnutzung der Einschränkungen viel effizienter gestaltet werden können, was impliziert, dass diese bloße Aufzählung der Möglichkeiten die "Stärke" von nicht angemessen darstellt das System, wie in den Kommentaren zur Frage ausgeführt.
whuber
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.