Lärmprotokoll Muster pdf

chaining_key = “Protokollname” (32 Bytes, mit Nullen aufgepolstert) Hier ist ein vollständiges Beispiel mit dem XK1-Muster (der Serverschlüssel ist im Voraus bekannt, der Clientschlüssel wird über das Netzwerk übertragen). Die Sicherheitsziele sind die gleichen wie das XK1 von Noise. Das Protokoll ist vollständig. Die Sitzungsschlüssel sind C9 und K9. Update: Ich habe das Crypto Doom-Problem auf der Noise-Mailingliste besprochen, und es sieht so aus, als ob mein Design doch zum Scheitern verurteilt war. Also. Was ich unten zeige, ist gebrochen: Mein Protokoll entspricht, wie gezeigt, nicht den XK1-Anonymitätsstandards von Noise. Es gibt mehrere Möglichkeiten, die Identität des Initiators aufzudecken (oder zumindest zu bestätigen). Ich werde es hier nicht verderben, falls jemand seine Hände an einer realen Welt versuchen will, aber wenn Sie in den Kommentaren fragen, werde ich dort antworten. Der Responder überprüft den statischen Schlüssel des Initiators und bricht ab, wenn er fehlschlägt. Ich glaube, noises Ansatz ist zu konservativ und bringt keine zusätzliche Sicherheit. Ich glaube, ich kann ungestraft gegen das kryptografische Verhängnisprinzip verstoßen. Ich glaube, dass mit meinem Design nichts Schlimmes passieren wird.

. Und ich glaube, der Glaube reicht nicht aus. Vielleicht habe ich etwas verpasst? (Ich habe mich für Blake2b entschieden, aber wir könnten stattdessen SHA3, HMAC oder HKDF verwenden. Ich glaube, es macht keinen Unterschied, bitte sagen Sie mir, wenn Sie denken, dass es tut.) es (als Client): Rufen Sie mix_hash(X25519(local_ske, remote_pk)) Wenn has_key wahr ist, verwenden Sie die ersten 16 Bytes extra_key als Authentifizierungstag. Rufen Sie dann mix_hash() ohne Eingabe auf. Diese Schlüsselpaare werden verwendet, um die folgenden gemeinsamen Geheimnisse abzuleiten: Ich begann mit der Arbeit an Monokex, weil ich das Gefühl hatte, dass Noise zu komplex war. Ich hatte viele Iterationen, von denen einige sogar versuchten, einen allgemeinen Hash abzutun. Ich bin ziemlich stolz auf meine vorletzte Iteration, basierend auf XCKDF, aber seitdem habe ich erkannt, dass es Nutzlasten sehr schwierig macht, mit ihnen zu arbeiten. Die API, die ich benutzte, war ein Alptraum, und unverschlüsselte Nutzlasten wurden überhaupt nicht authentifiziert.

. Es gibt keine mix_key() Funktion. Schlüssel und Transkript werden beide mit der gleichen mix_hash() Methode gemischt. Die Idee ist, dass, sobald wir ein DH-Geheimnis mischen, das dem Angreifer unbekannt ist, alle folgenden Hashes so gut wie einheitlich zufällig sind und als einmalige Pads, Verschlüsselungsschlüssel oder Authentifizierungs-Tags verwendet werden können. Ich brauchte diesen Allzweck-Hash schließlich, also habe ich das Ganze neu gestaltet. Trevor Perrin hatte die richtige Idee, eine Zustandsmaschine für Lärm zu verwenden, aber er schaffte es nicht, es so einfach wie möglich zu machen. Also kam ich mit meinem eigenen. Ich denke, es ist sicher, aber ich habe vielleicht ein entscheidendes Detail oder drei verpasst. (Spoiler: Ich verstoße gegen das kryptografische Verdammnisprinzip.) Ich werde nicht sagen, wie jetzt, für den Fall, dass Sie für sich selbst sehen wollten. Wenn Sie jedoch in den Kommentaren fragen, überprüft der Initiator msg2 (mit T5) und bricht ab, wenn es fehlschlägt.