it-swarm-eu.dev

Wie lang sollte eine zufällige Nonce sein?

NIST bietet gute Richtlinien zur Länge von Schlüsseln und Hashes für verschiedene Algorithmen . Aber ich sehe nichts spezielles über die Länge eines Zufalls oder Pseudozufalls nonce (einmal verwendete Zahl).

Wenn es eine einzige gute Antwort für eine Vielzahl von Anwendungen gibt, würde ich das gerne sehen. Um dies konkret zu machen, verwende ich die übliche Situation "Passwort per E-Mail zurücksetzen", in der der Server eine URL mit einer pseudozufälligen Pfadkomponente generiert. Es scheint der HTTP-Digest-Authentifizierung etwas ähnlich zu sein, bei der das Beispiel im RFC 136 Bit zu haben scheint (dcd98b7102dd2f0e8b11d0f600bfb0c093).

Ich stelle fest, dass viele Leute UUIDs der Version 4 zu verwenden scheinen (die 122 Pseudozufallsbits bereitstellen) oder dies, wie unter beschrieben. Sind GUIDs für einmalige Token sicher? , obwohl der Benutzer auf die Verwendung früherer, viel besser vorhersehbarer UUID-Versionen achten muss, und böse anhaltende lokale Angriffe auf den Windows-Zufallszahlengenerator , die meistens waren gepatcht bis 2008.

Aber wie viele Pseudozufallsbits sollten in die URL aufgenommen werden, wenn man das Risiko ignoriert, sich in UUID-Versionen und -Implementierungen zu verheddern?

35
nealmcb

Eine 64-Bit-Nonce ist für die meisten praktischen Zwecke wahrscheinlich mehr als ausreichend, wenn die 64-Bit-Zufälligkeiten in Kryptoqualität vorliegen.

Warum sind 64 Bit ausreichend? Lassen Sie mich die Art der Argumentation darlegen, mit der Sie diese Frage beantworten können. Ich gehe davon aus, dass dies eine zeitlich begrenzte URL für den einmaligen Gebrauch ist. Nach einmaliger Verwendung ist es nicht mehr gültig und nach einer Weile (z. B. 3 Tage) läuft es ab und ist nicht mehr gültig. Da die Nonce nur für den Server von Bedeutung ist, kann ein Angreifer eine Vermutung nur versuchen, indem er die 64-Bit-Vermutung an den Server sendet und sieht, wie der Server reagiert. Wie viele Vermutungen kann der Angreifer in der Zeit vor Ablauf der Nonce versuchen? Angenommen, der Angreifer kann 1000 HTTP-Anforderungen pro Sekunde stellen (das ist ein ziemlich bulliger Angreifer). dann kann der Angreifer ungefähr 1000 * 3600 * 24 * 3 = 2 machen28 Vermutungen innerhalb von 3 Tagen. Jede Vermutung hat eine 1/264 Chance, richtig zu sein. Daher hat der Angreifer höchstens eine 1/236 Chance, das Schema zu brechen. Das sollte für die meisten Einstellungen mehr als sicher genug sein.

23
D.W.

Schätzen Sie zunächst die maximale Anzahl von Nutzungen, die Ihr System erhalten wird (die Häufigkeit, mit der eine zufällige Nonce generiert wird). Entscheiden Sie sich als Nächstes für eine akzeptable Sicherheitsstufe, dh wie unwahrscheinlich es sein muss, dass eine Nonce ein Duplikat einer alten ist. Berechnen Sie die Anzahl der Verwendungen in Bits, verdoppeln Sie diese und fügen Sie die Unwahrscheinlichkeit hinzu, die Sie in Bits benötigen, und Sie haben Ihre Nonce-Länge.

Ein Beispiel aus AES-GCM mit zufälliger IV. Die Anzahl der mit zufälliger IV für einen bestimmten Schlüssel zulässigen Aufrufe beträgt 232. Die Wahrscheinlichkeit, dass eine IV wiederverwendet wird, muss weniger als 2 betragen-32. Die erforderliche Nonce-Länge hierfür beträgt 32 × 2 + 32 == 96 Bit.

Wenn Sie hypothetisch in der Lage sein möchten, 2 zu generieren96 Pakete, jedes mit einer zufälligen Nonce und möchte, dass die Wahrscheinlichkeit einer doppelten Nonce kleiner als 2 ist-32Sie benötigen eine Nonce mit einer Länge von 96 × 2 + 32 == 224 Bit.

Vergleichen Sie dies mit der obigen Antwort von 64 Bit ... wenn Sie mehr als 2 haben16 (65536) Bei Verwendung Ihres Systems beträgt die Wahrscheinlichkeit, in dieser Zeit eine doppelte Nonce zu haben, mehr als 2-32 (mehr als 1 von 4 Milliarden, kurze Skala). Dies kann abhängig von Ihren Sicherheitsanforderungen durchaus akzeptabel sein oder auch nicht.

Da eine Einheitsgröße für alle Antworten gilt, sind die genannten zufälligen UUIDs eine ziemlich gute Lösung.

Beachten Sie, dass diese Werte Annäherungen sind und die genaueren Berechnungen viel komplexer sind.

7
Nakedible