3

Ich habe eine App, die einen Hash-Wert von einem Benutzerkennwort erzeugt, mit dem ich dann Daten verschlüsseln kann. Ich möchte dies auf den Fall ausweiten, bei dem 2 von 5 Benutzern die App authentifizieren müssen, bevor sie über genügend Daten zum Generieren dieses Hashs verfügt.Wie erzeuge ich einen gemeinsamen Hash aus mehreren Passwörtern?

Das Problem, das ich habe, ist, dass ich den exakt gleichen Hash generieren muss, egal welche 2 der 5 Benutzer authentifizieren - da ich nur mit einem Hash verschlüsseln.

Mein Hauptziel ist es, es so sicher wie möglich zu machen, also wenn es andere Möglichkeiten gibt, das gleiche zu tun, können Sie diese auch gerne erwähnen. Ich werde nur den Code wo nötig ändern.

Antwort

9

Generieren Sie einen zufälligen Schlüssel, verschlüsseln Sie mit Schlüsseln von jedem der Paare (password1, password2), (password1, password3), (passwort1, passwort4), (passwort1, passwort5), (passwort2, passwort3) usw. Dann speichern Sie jede dieser zehn Verschlüsselungen, so dass Sie die richtige sehen können, wenn Sie zwei beliebige Passwörter erhalten.

Alternativ können Sie alle diese Paare speichern, indem Sie ein (2,5) -Sekret-Freigabeschema (fx Shamir's) verwenden, um den Zufallsschlüssel aufzuteilen und jedes der 5 mit einem Schlüssel verschlüsselten Geheimnisse zu speichern die Passwörter.

+0

Die "geheime Freigabe" Begriff war das Bit, das ich fehlte. Shamirs Schema scheint mir perfekt zu passen. Vielen Dank. – Belrog

+0

Das beschriebene Schema ist einfach und effektiv, wenn es um 2-of-5 geht. Offensichtlich skaliert es nicht gut, aber es ist eine gute Idee für dieses System. :) –

+0

Shamirs sollte immer noch zu einer vernünftigeren Lösung als das Ausführen von Permutationen von Passwörtern führen - insbesondere zum Skalieren. Ich möchte keine Permutationen machen, wenn jemand entscheidet, dass wir jetzt 10 Leute mit Passwörtern brauchen :) – Belrog